From 37e68577a363aa2084238fbb9f0ab0020ca57e5a Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 28 Jan 2013 02:51:58 +0000 Subject: SL018 reset works now added string error messages git-svn-id: https://svn.spreadspace.org/avr/trunk@91 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/tuer-rfid.c | 51 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'usb-i2c-sl018') diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c index af53d41..71a1c44 100644 --- a/usb-i2c-sl018/tuer-rfid.c +++ b/usb-i2c-sl018/tuer-rfid.c @@ -56,7 +56,49 @@ const uint8_t SL018_READ = 1; const unsigned char SL018CMD_ComSelectCard[] ={1,1}; const unsigned char SL018CMD_ComRedLedOn[] ={2,0x40,1}; const unsigned char SL018CMD_ComRedLedOff[] ={2,0x40,0}; -const unsigned char SL018CMD_ComGetFirmwareVersion[] ={1,0xF0}; +const unsigned char SL018CMD_ComGetFirmwareVersion[] ={1,0xF0}; +const unsigned char SL018CMD_ComReset[] ={1,0xFF}; + +const char* SL018_cmd_tostring(const uint8_t status) +{ + switch(status) { + case 0x01: return "Select Mifare card"; + case 0x02: return "Login to a sector"; + case 0x03: return "Read a data block"; + case 0x04: return "Write a data block"; + case 0x05: return "Read a value block"; + case 0x06: return "Initialize a value block"; + case 0x07: return "Write master key"; + case 0x08: return "Increment value"; + case 0x09: return "Decrement value"; + case 0x0A: return "Copy value"; + case 0x10: return "Read a data page"; + case 0x11: return "Write a data page"; + case 0x40: return "Control the red led"; + case 0xF0: return "Get firmware version"; + case 0xFF: return "Reset"; + default: return "unknown status"; + } +} + +const char* SL018_status_tostring(const uint8_t status) +{ + switch(status) { + case 0x0: return "Operation succeed"; + case 0x1: return "No tag"; + case 0x2: return "Login succeed"; + case 0x3: return "Login fail"; + case 0x4: return "Read fail"; + case 0x5: return "Write fail"; + case 0x6: return "Unable to read after write"; + case 0xA: return "Collision occur"; + case 0xC: return "Load key fail"; + case 0xD: return "Not authenticate"; + case 0xE: return "Not a value block"; + default: return "unknown status"; + } +} + unsigned char twi_rcv_buff[256]; @@ -168,7 +210,7 @@ bool sl018_cmd(const unsigned char * buffer) return 0; } else { if(twi_message->status) { - fprintf(stdio,"SL018 Cmd,Error: %02X,%02X\n\r",twi_message->command,twi_message->status); + fprintf(stdio,"SL018 Cmd,Error: '%s','%s'\n\r",SL018_cmd_tostring(twi_message->command),SL018_status_tostring(twi_message->status)); return 0; } if(send_twi_message->command != twi_message->command) { @@ -224,7 +266,10 @@ void dump_eeprom_to_stdio(void) void handle_cmd(uint8_t cmd) { switch(cmd) { - case 'r': reset2bootloader(); break; + case 'r': + sl018_cmd(SL018CMD_ComReset); + reset2bootloader(); + break; case 'f': //get cardreader firmware version if(sl018_cmd(SL018CMD_ComGetFirmwareVersion)) { -- cgit v1.2.3