83 lines
1.5 KiB
C++
83 lines
1.5 KiB
C++
#include "Arduino.h"
|
|
#include "CardDispenser.h"
|
|
|
|
|
|
//contructor
|
|
CardDispenser::CardDispenser(char* rCode)
|
|
{
|
|
byte rType[] = {0x04, 0x00, 0x00, 0x01};
|
|
byte rVersion[] = {0x00, 0x00, 0x07};
|
|
setVersion(rType , 0x00, rVersion, rCode);
|
|
}
|
|
|
|
void CardDispenser::init()
|
|
{
|
|
|
|
}
|
|
|
|
void CardDispenser::update()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
short CardDispenser::processRequest(byte* request, byte* answer)
|
|
{
|
|
answer[0] = request[0] | 0x80; // reader id
|
|
answer[1] = request[1]; // ?
|
|
answer[2] = request[2]; // command
|
|
answer[3] = request[3]; // paquet id
|
|
answer[4] = 0; // data length
|
|
|
|
switch (answer[2]) // switch on the command
|
|
{
|
|
//
|
|
// get version
|
|
case 0x02:
|
|
answer[4] = 0x2C;
|
|
memcpy(answer+5, getVersion(), 0x2C);
|
|
break;
|
|
|
|
//
|
|
// init?
|
|
case 0x00:
|
|
case 0x03:
|
|
case 0x16:
|
|
case 0x20:
|
|
case 0x30:
|
|
answer[4] = 1;
|
|
answer[5] = 0x00;
|
|
break;
|
|
|
|
case 0x72://card dispenser status
|
|
//first byte : status
|
|
// 1 : busy
|
|
// 2 : ok
|
|
// 3 : empty
|
|
// 4 : payout
|
|
// 5 : jam
|
|
// 6 : maintenance
|
|
// second byte : disburbed finished?
|
|
// 6 - 9 : ok
|
|
// 10 11: ?? maintenance lock
|
|
// 12 - 17 : busy, crash ingame
|
|
|
|
answer[4] = 2;
|
|
answer[5] = 0x02;
|
|
answer[6] = 0x06;
|
|
break;
|
|
|
|
case 0x71://card dispenser, dispense command
|
|
answer[4] = 1;
|
|
answer[5] = 0x00;
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|