diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-01-27 23:50:44 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-01-27 23:50:44 +0000 |
commit | 51084627f371157b9cddfd38f638be49a497312f (patch) | |
tree | 6847cfe4feac9c2bac55fff426a691b3ddc128a8 /usb-i2c-sl018/update-keys.c | |
parent | set tty to raw (diff) |
reading '.' after every keyslot update
git-svn-id: https://svn.spreadspace.org/avr/trunk@82 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018/update-keys.c')
-rw-r--r-- | usb-i2c-sl018/update-keys.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/usb-i2c-sl018/update-keys.c b/usb-i2c-sl018/update-keys.c index 6ea508a..ae22843 100644 --- a/usb-i2c-sl018/update-keys.c +++ b/usb-i2c-sl018/update-keys.c @@ -37,6 +37,16 @@ uint8_t generate_csum(keyslot_t data) return sum2<<4 | sum1; } +void send_key(keyslot_t key, FILE* dev) +{ + fwrite(key, sizeof(keyslot_t), 1, dev); + char tmp; + while(fread(&tmp, 1, 1, dev)) { + fwrite(&tmp, 1, 1, stdout); + if(tmp == '.') break; + } +} + int main(int argc, char* argv[]) { if(argc<2) { @@ -94,7 +104,8 @@ int main(int argc, char* argv[]) key[j] = 0; } key[sizeof(keyslot_t)-1] = generate_csum(key); - fwrite(key, sizeof(keyslot_t), 1, dev); + send_key(key, dev); + key_num++; if(key_num > EEPROM_SIZE/sizeof(keyslot_t)) { fprintf(stderr, "reached maximum number of key slots (%d), will ignore remaining keys\n", EEPROM_SIZE/sizeof(keyslot_t)); @@ -107,7 +118,7 @@ int main(int argc, char* argv[]) 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) - fwrite(key, sizeof(keyslot_t), 1, dev); + send_key(key, dev); char tmp; while(fread(&tmp, 1, 1, dev)) { |