summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-01-30 02:49:32 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-01-30 02:49:32 +0000
commit194662d89eafbf9c46f7740920e6e14e4c6fff10 (patch)
tree3563a8370632985487eaeb83f1f6b6b0b8dbc2a4 /usb-i2c-sl018
parentsome more cleanup (diff)
further cleanup
git-svn-id: https://svn.spreadspace.org/avr/trunk@104 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r--usb-i2c-sl018/tuer-rfid.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c
index 302bcae..65d4a3d 100644
--- a/usb-i2c-sl018/tuer-rfid.c
+++ b/usb-i2c-sl018/tuer-rfid.c
@@ -38,18 +38,9 @@
#include <avr/eeprom.h>
#define EEPROM_SIZE 1024
-
typedef uint8_t keyslot_t[8];
keyslot_t EEMEM keystore[EEPROM_SIZE/sizeof(keyslot_t)];
-#define TAG_STA_PIN PINB
-#define TAG_STA_BIT 7
-#define CARD_PRESENT (!((TAG_STA_PIN >> TAG_STA_BIT) & 1))
-
-const uint8_t SL018_ADDR = 0xa0;
-const uint8_t SL018_WRITE = 0;
-const uint8_t SL018_READ = 1;
-#define SL018_RESET 0xFF
const char* SL018_cmd_tostring(const uint8_t status)
{
@@ -68,7 +59,7 @@ const char* SL018_cmd_tostring(const uint8_t status)
case 0x11: return "Write a data page";
case 0x40: return "Control the red led";
case 0xF0: return "Get firmware version";
- case SL018_RESET: return "Reset";
+ case 0xFF: return "Reset";
default: return "unknown status";
}
}
@@ -91,11 +82,11 @@ const char* SL018_status_tostring(const uint8_t status)
}
}
-const uint8_t SL018CMD_ComSelectCard[] ={1,0x01};
-const uint8_t SL018CMD_ComRedLedOn[] ={2,0x40,1};
-const uint8_t SL018CMD_ComRedLedOff[] ={2,0x40,0};
-const uint8_t SL018CMD_ComGetFirmwareVersion[] ={1,0xF0};
-const uint8_t SL018CMD_ComReset[] ={1,SL018_RESET};
+const uint8_t SL018_CMD_ComSelectCard[] ={1,0x01};
+const uint8_t SL018_CMD_ComRedLedOn[] ={2,0x40,1};
+const uint8_t SL018_CMD_ComRedLedOff[] ={2,0x40,0};
+const uint8_t SL018_CMD_ComGetFirmwareVersion[] ={1,0xF0};
+const uint8_t SL018_CMD_ComReset[] ={1,0xFF};
uint8_t twi_recv_buf[256];
typedef struct __attribute__((__packed__))
@@ -107,7 +98,14 @@ typedef struct __attribute__((__packed__))
} sl018_message_t;
sl018_message_t* twi_recv_msg = (sl018_message_t *)&twi_recv_buf;
-uint8_t card_status =0;
+
+#define SL018_TWI_ADDR 0xA0
+#define SL018_TAG_STA_PIN PINB
+#define SL018_TAG_STA_BIT 7
+#define CARD_PRESENT (!((SL018_TAG_STA_PIN >> SL018_TAG_STA_BIT) & 1))
+uint8_t card_status = 0;
+
+
FILE usb_stream;
FILE serial_stream;
@@ -176,14 +174,14 @@ int16_t stdio_bytes_received(void)
bool sl018_cmd_raw(const uint8_t* twi_send_buf, bool wait_for_answer)
{
uint8_t pos = 0;
- //uint8_t ret;
- if (TWI_StartTransmission(SL018_ADDR | SL018_WRITE,10) == TWI_ERROR_NoError) {
- for(pos=0; pos<=twi_send_buf[0]; pos++)
+
+ if (TWI_StartTransmission(SL018_TWI_ADDR | TWI_ADDRESS_WRITE,10) == TWI_ERROR_NoError) {
+ for(pos=0; pos<=twi_send_buf[0]; pos++) {
if( ! TWI_SendByte(twi_send_buf[pos])) {
TWI_StopTransmission();
return 1;
}
- // Must stop transmission afterwards to release the bus
+ }
TWI_StopTransmission();
} else
return 1;
@@ -192,14 +190,14 @@ bool sl018_cmd_raw(const uint8_t* twi_send_buf, bool wait_for_answer)
_delay_ms(50);
- if (TWI_StartTransmission(SL018_ADDR | SL018_READ,10) == TWI_ERROR_NoError) {
+ if (TWI_StartTransmission(SL018_TWI_ADDR | TWI_ADDRESS_READ,10) == TWI_ERROR_NoError) {
TWI_ReceiveByte(twi_recv_buf, 0);
- for(pos=1; pos<=twi_recv_buf[0]; pos++)
+ for(pos=1; pos<=twi_recv_buf[0]; pos++) {
if (! TWI_ReceiveByte(&twi_recv_buf[pos], (pos == twi_recv_buf[0]) ? 1:0 ) ) {
TWI_StopTransmission();
return 1;
}
- // Must stop transmission afterwards to release the bus
+ }
TWI_StopTransmission();
} else
return 1;
@@ -209,7 +207,7 @@ bool sl018_cmd_raw(const uint8_t* twi_send_buf, bool wait_for_answer)
bool sl018_reset(void)
{
- if(sl018_cmd_raw(SL018CMD_ComReset, 0)) {
+ if(sl018_cmd_raw(SL018_CMD_ComReset, 0)) {
fprintf(stdio, "I2C error\n\r");
return 0;
}
@@ -294,15 +292,15 @@ void handle_stdio(uint8_t cmd)
fprintf(stdio, "ok\n\r");
break;
case 'f': //get cardreader firmware version
- if(sl018_cmd(SL018CMD_ComGetFirmwareVersion))
+ if(sl018_cmd(SL018_CMD_ComGetFirmwareVersion))
fprintf(stdio, "%s\n\r",twi_recv_msg->data);
break;
case '4': //turn cardreader led off
- if(sl018_cmd(SL018CMD_ComRedLedOff))
+ if(sl018_cmd(SL018_CMD_ComRedLedOff))
fprintf(stdio, "ok\n\r");
break;
case '5': //turn cardreader led on
- if(sl018_cmd(SL018CMD_ComRedLedOn))
+ if(sl018_cmd(SL018_CMD_ComRedLedOn))
fprintf(stdio, "ok\n\r");
break;
case 'e': //flash eeprom
@@ -358,7 +356,7 @@ void handle_card(void)
{
uint8_t pos;
fprintf(stdio, "CARD IN: ");
- if(sl018_cmd(SL018CMD_ComSelectCard))
+ if(sl018_cmd(SL018_CMD_ComSelectCard))
{
uint8_t uid_len = twi_recv_msg->len - sizeof(twi_recv_msg->command) - sizeof(twi_recv_msg->status) - 1;
if(uid_len == 255 || uid_len > sizeof(keyslot_t) - 1) {
@@ -373,10 +371,10 @@ void handle_card(void)
uint8_t type = twi_recv_msg->data[uid_len];
if (0<type && type < 7) {
if(check_card(twi_recv_msg->data,uid_len)) {
- sl018_cmd(SL018CMD_ComRedLedOn);
+ sl018_cmd(SL018_CMD_ComRedLedOn);
fprintf(stdio,"Card allowed - opening/closing door\n\r"); // TODO: open/close door!
_delay_ms(255);
- sl018_cmd(SL018CMD_ComRedLedOff);
+ sl018_cmd(SL018_CMD_ComRedLedOff);
} else {
fprintf(stdio,"Card not found in Database\n\r");
}