From b81bcf5f68c7b75a0e2079e8bfb794db8251fa37 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sun, 27 Jan 2013 18:27:59 +0000 Subject: basic working version usb-i2c-sl018 git-svn-id: https://svn.spreadspace.org/avr/trunk@68 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/tuer-rfid.c | 89 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 14 deletions(-) (limited to 'usb-i2c-sl018') diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c index e59b65c..f37c857 100644 --- a/usb-i2c-sl018/tuer-rfid.c +++ b/usb-i2c-sl018/tuer-rfid.c @@ -44,18 +44,33 @@ const uint8_t SL018_READ = 1; //============================================ const unsigned char SL018CMD_ComSelectCard[] ={1,1}; -const unsigned char SL018CMD_ComLoginSector0[] ={9,2,0+2,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; -const unsigned char SL018CMD_ComReadBlock1[] ={2,3,1+8}; -const unsigned char SL018CMD_ComWriteBlock1[] ={18,4,1+8,0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF}; -const unsigned char SL018CMD_ComIntiPurse1[] ={6,6,1+8,0x78,0x56,0x34,0x12}; -const unsigned char SL018CMD_ComReadPurse1[] ={2,5,1+8}; -const unsigned char SL018CMD_ComIncrPurse1[] ={6,8,1+8,0x02,0x00,0x00,0x00}; -const unsigned char SL018CMD_ComDecrPurse1[] ={6,9,1+8,0x01,0x00,0x00,0x00}; -const unsigned char SL018CMD_ComCopyValue[] ={3,0x0A,1+8,2+8}; -const unsigned char SL018CMD_ComReadUltralightPage5[] ={2,0x10,0x05}; -const unsigned char SL018CMD_ComWriteUltralightPage5[]={6,0x11,0x05,0x12,0x34,0x56,0x78}; +//const unsigned char SL018CMD_ComLoginSector0[] ={9,2,0+2,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; +//const unsigned char SL018CMD_ComReadBlock1[] ={2,3,1+8}; +//const unsigned char SL018CMD_ComWriteBlock1[] ={18,4,1+8,0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF}; +//const unsigned char SL018CMD_ComIntiPurse1[] ={6,6,1+8,0x78,0x56,0x34,0x12}; +//const unsigned char SL018CMD_ComReadPurse1[] ={2,5,1+8}; +//const unsigned char SL018CMD_ComIncrPurse1[] ={6,8,1+8,0x02,0x00,0x00,0x00}; +//const unsigned char SL018CMD_ComDecrPurse1[] ={6,9,1+8,0x01,0x00,0x00,0x00}; +//const unsigned char SL018CMD_ComCopyValue[] ={3,0x0A,1+8,2+8}; +//const unsigned char SL018CMD_ComReadUltralightPage5[] ={2,0x10,0x05}; +//const unsigned char SL018CMD_ComWriteUltralightPage5[]={6,0x11,0x05,0x12,0x34,0x56,0x78}; const unsigned char SL018CMD_ComRedLedOn[] ={2,0x40,1}; const unsigned char SL018CMD_ComRedLedOff[] ={2,0x40,0}; +const unsigned char SL018CMD_ComGetFirmwareVersion[] ={1,0xF0}; + +unsigned char twi_rcv_buff[256]; + + +typedef struct __attribute__((__packed__)) +{ + uint8_t command; + uint8_t status; + char data[sizeof(twi_rcv_buff)-3]; + uint8_t len; +} SL018CMD_MESSAGE; + +SL018CMD_MESSAGE * twi_message = (SL018CMD_MESSAGE *) &twi_rcv_buff; + /* LUFA Library Copyright (C) Dean Camera, 2012. @@ -63,6 +78,8 @@ const unsigned char SL018CMD_ComRedLedOff[] ={2,0x40,0}; dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ + + #include #include "lufa-descriptor-usbserial.h" @@ -112,25 +129,69 @@ unsigned char sl018_send_buffer(const unsigned char * buffer) } else { return 1; } + _delay_ms(50); + if (TWI_StartTransmission(SL018_ADDR | SL018_READ,10) == TWI_ERROR_NoError) + { + TWI_ReceiveByte(&len, 0); + twi_rcv_buff[255]=len; + for(pos=0; posstatus); + 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(); - } + led_toggle(); + CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r"); + } + break; + case '5': + if(sl018_send_buffer(SL018CMD_ComRedLedOn)) + { + led_toggle(); + CDC_Device_SendString(&VirtualSerial_CDC_Interface, "I2C error\n\r"); + } break; - default: CDC_Device_SendString(&VirtualSerial_CDC_Interface, "error\n"); return; + default: CDC_Device_SendString(&VirtualSerial_CDC_Interface, "error\n\r"); return; } - CDC_Device_SendString(&VirtualSerial_CDC_Interface, "ok\n"); + CDC_Device_SendString(&VirtualSerial_CDC_Interface, "ok\n\r"); } -- cgit v1.2.3