summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2013-01-27 19:20:28 +0000
committerOthmar Gsenger <otti@wirdorange.org>2013-01-27 19:20:28 +0000
commitaee60d49bd890c05f9deee091dbf957d47796c3f (patch)
treec49c81e22dcc6a62811c31d288b08f5cb236902b /usb-i2c-sl018
parentUID readout working (diff)
minor clean up, improved error handling
git-svn-id: https://svn.spreadspace.org/avr/trunk@70 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r--usb-i2c-sl018/tuer-rfid.c87
1 files changed, 43 insertions, 44 deletions
diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c
index 64831c1..2954231 100644
--- a/usb-i2c-sl018/tuer-rfid.c
+++ b/usb-i2c-sl018/tuer-rfid.c
@@ -150,62 +150,58 @@ unsigned char sl018_send_buffer(const unsigned char * buffer)
return 0;
}
+
+void flash_eeprom_from_usb(void)
+{
+
+}
+
+
+bool sl018_send_buffer_check_error(const unsigned char * buffer)
+{
+ char txt_buff[10];
+ if(sl018_send_buffer(buffer))
+ {
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
+ return 0;
+ } else {
+ if(twi_message->status)
+ {
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "SL018 Cmd,Error: ");
+ snprintf(txt_buff,sizeof(txt_buff),"%02X,%02X\n\r",twi_message->command,twi_message->status);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, txt_buff);
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
void handle_cmd(uint8_t cmd)
{
char foo[10];
uint8_t pos;
switch(cmd) {
- case '0': led_off(); break;
- case '1': led_on(); break;
- case 't': led_toggle(); break;
case 'r': reset2bootloader(); break;
-// case '2':
-// while(1)
-// {
-// if(sl018_send_buffer(SL018CMD_ComGetFirmwareVersion))
-// {
-// led_toggle();
-// CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
-// };
-// }
-// break;
- case '3':
- if(sl018_send_buffer(SL018CMD_ComGetFirmwareVersion))
+ case 'f': //get cardreader firmware version
+ if(sl018_send_buffer_check_error(SL018CMD_ComGetFirmwareVersion))
{
- led_toggle();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
- } else {
- snprintf(foo,sizeof(foo),"%x\n\r",twi_message->status);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "Status: ");
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, foo);
CDC_Device_SendString(&VirtualSerial_CDC_Interface, twi_message->data);
CDC_Device_SendString(&VirtualSerial_CDC_Interface, "\n\r");
}
break;
- case '4':
- if(sl018_send_buffer(SL018CMD_ComRedLedOff))
- {
- led_toggle();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
- }
+ case '4': //turn cardreader led off
+ if(sl018_send_buffer_check_error(SL018CMD_ComRedLedOff))
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "ok\n\r");
break;
- case '5':
- if(sl018_send_buffer(SL018CMD_ComRedLedOn))
- {
- led_toggle();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
- }
+ case '5': //turn cardreader led on
+ if(sl018_send_buffer_check_error(SL018CMD_ComRedLedOn))
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "ok\n\r");
break;
- case CARD_IN:
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "CARD IN\n\r");
- if(sl018_send_buffer(SL018CMD_ComSelectCard))
+ case CARD_IN: // card has been detected, read uid and print to usb
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "CARD IN: ");
+ if(sl018_send_buffer_check_error(SL018CMD_ComSelectCard))
{
- led_toggle();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r");
- } else {
- snprintf(foo,sizeof(foo),"%x\n\r",twi_message->status);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "Status: ");
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, foo);
for (pos=twi_message->len - 4 ; pos< 255; pos--)
{
snprintf(foo,sizeof(foo),"%02X",twi_message->data[pos]);
@@ -217,9 +213,11 @@ void handle_cmd(uint8_t cmd)
case CARD_OUT:
CDC_Device_SendString(&VirtualSerial_CDC_Interface, "CARD OUT\n\r");
break;
+ case 'e': //flash eeprom
+ flash_eeprom_from_usb();
+ break;
default: CDC_Device_SendString(&VirtualSerial_CDC_Interface, "error\n\r"); return;
}
- CDC_Device_SendString(&VirtualSerial_CDC_Interface, "ok\n\r");
}
@@ -259,6 +257,7 @@ int main(void)
cpu_init();
led_init();
+ led_on();
USB_Init();
TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 200000));
sei();
@@ -268,7 +267,7 @@ int main(void)
while(BytesReceived > 0) {
int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
if(!(ReceivedByte < 0)) {
- handle_cmd(ReceivedByte);
+ //handle_cmd(ReceivedByte);
RingBuffer_Insert(&CmdBuffer,(uint8_t) ReceivedByte);
}
BytesReceived--;