From 73c7cada410244916314d44bfbf3be494a81fa4c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 30 Jan 2013 02:16:09 +0000 Subject: slightly better error handling for update keys git-svn-id: https://svn.spreadspace.org/avr/trunk@102 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/tuer-rfid.c | 3 ++- usb-i2c-sl018/update-keys.c | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'usb-i2c-sl018') diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c index 2406ec7..a50866e 100644 --- a/usb-i2c-sl018/tuer-rfid.c +++ b/usb-i2c-sl018/tuer-rfid.c @@ -259,13 +259,14 @@ void flash_keystore_from_stdio(void) byte_pos=0; eeprom_update_block(&keyslot,&keystore[keyslot_pos],sizeof(keyslot)); keyslot_pos++; - fprintf(stdio,"."); + fputc('.', stdio); fflush(stdio); led_toggle(); } } } fprintf(stdio,"\n"); + fputc(0, stdio); led_off(); } diff --git a/usb-i2c-sl018/update-keys.c b/usb-i2c-sl018/update-keys.c index b730c6e..d4dfd06 100644 --- a/usb-i2c-sl018/update-keys.c +++ b/usb-i2c-sl018/update-keys.c @@ -37,15 +37,17 @@ uint8_t generate_csum(keyslot_t data) return sum2<<4 | sum1; } -void send_key(keyslot_t key, FILE* dev) +int send_key(keyslot_t key, FILE* dev) { fwrite(key, sizeof(keyslot_t), 1, dev); fflush(dev); char tmp; while(fread(&tmp, 1, 1, dev)) { fwrite(&tmp, 1, 1, stdout); - if(tmp == '.') break; + if(tmp == 0) return 1; + if(tmp == '.') return 0; } + return 0; } int main(int argc, char* argv[]) @@ -107,7 +109,10 @@ int main(int argc, char* argv[]) key[j] = 0; } key[sizeof(keyslot_t)-1] = generate_csum(key); - send_key(key, dev); + if(send_key(key, dev)) { + fprintf(stderr, "send_key failed at keyslot %d\n", key_num); + return 1; + } key_num++; if(key_num > EEPROM_SIZE/sizeof(keyslot_t)) { @@ -115,13 +120,19 @@ int main(int argc, char* argv[]) break; } } - printf("read %d keys from STDIN\n", key_num); + printf("\nread %d keys from STDIN - filling rest of keystore with invalid keys\n", key_num); int i; for(i=0; i<=sizeof(keyslot_t)-1; ++i) key[i] = 0xFF; - for(i=key_num; i < EEPROM_SIZE/sizeof(keyslot_t); ++i) - send_key(key, dev); - printf("write finished\n"); + for(i=key_num; i < EEPROM_SIZE/sizeof(keyslot_t); ++i) { + if(send_key(key, dev)) { + fprintf(stderr, "send_key failed at keyslot %d\n", key_num); + return 1; + } + key_num++; + } + + printf("\nwrite of %d keys finished\n", key_num); return 0; } -- cgit v1.2.3