From bed58c8ea8619502831bd42928c97efdbacabc5e Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 30 Jan 2013 03:41:30 +0000 Subject: handle_card now also prints type of card some more cleanups git-svn-id: https://svn.spreadspace.org/avr/trunk@107 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/tuer-rfid.c | 62 ++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c index 2c2c3c8..664e810 100644 --- a/usb-i2c-sl018/tuer-rfid.c +++ b/usb-i2c-sl018/tuer-rfid.c @@ -42,9 +42,9 @@ typedef uint8_t keyslot_t[8]; keyslot_t EEMEM keystore[EEPROM_SIZE/sizeof(keyslot_t)]; -const char* SL018_cmd_tostring(const uint8_t status) +const char* SL018_cmd_tostring(const uint8_t cmd) { - switch(status) { + switch(cmd) { case 0x01: return "Select Mifare card"; case 0x02: return "Login to a sector"; case 0x03: return "Read a data block"; @@ -60,7 +60,7 @@ const char* SL018_cmd_tostring(const uint8_t status) case 0x40: return "Control the red led"; case 0xF0: return "Get firmware version"; case 0xFF: return "Reset"; - default: return "unknown status"; + default: return "unknown"; } } @@ -78,7 +78,20 @@ const char* SL018_status_tostring(const uint8_t status) case 0xC: return "Load key fail"; case 0xD: return "Not authenticate"; case 0xE: return "Not a value block"; - default: return "unknown status"; + default: return "unknown"; + } +} + +const char* SL018_tagtype_tostring(const uint8_t type) +{ + switch(type) { + case 0x1: return "Mifare 1k, 4 byte UID"; + case 0x2: return "Mifare 1k, 7 byte UID"; + case 0x3: return "Mifare Ultralight or NATG203, 7 byte UID"; + case 0x4: return "Mifare 4k, 4 byte UID"; + case 0x5: return "Mifare 4k, 7 byte UID"; + case 0x6: return "Mifare DesFire, 7 byte UID"; + default: return "unknown"; } } @@ -242,11 +255,10 @@ uint8_t sl018_cmd(const uint8_t* twi_send_buf) void flash_keystore_from_stdio(void) { keyslot_t ks; - uint8_t keyslot_pos=0; uint8_t byte_pos=0; fprintf(stdio,"Flashing keys:\n\r"); fflush(stdio); - for(keyslot_pos=0;keyslot_pos sizeof(keyslot_t) ? sizeof(keyslot_t) : uid_len; for (uint8_t pos=0; poslen - sizeof(twi_recv_msg->command) - sizeof(twi_recv_msg->status) - 1; if(uid_len == 255 || uid_len > sizeof(keyslot_t) - 1) { - fprintf(stdio,"Invalid uid_len received %d\n\r", uid_len); + fprintf(stdio," Invalid uid length received %d\n\r", uid_len); return; } + for (uint8_t pos=0; posdata[uid_len-pos-1]); - for (pos=uid_len-1; pos<255; pos--) - fprintf(stdio,"%02X",twi_recv_msg->data[pos]); - - fprintf(stdio, "\n\r"); uint8_t type = twi_recv_msg->data[uid_len]; - if (0data,uid_len)) { sl018_cmd(SL018_CMD_ComRedLedOn); fprintf(stdio,"Card allowed - opening/closing door\n\r"); // TODO: open/close door! @@ -382,7 +390,7 @@ void handle_card(void) fprintf(stdio,"Card not found in Database\n\r"); } } else { - fprintf(stdio,"Unknown Card Type %02x\n\r",type); + fprintf(stdio,"Ignoring unknown card type %02x\n\r",type); } } } -- cgit v1.2.3