summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-01-27 23:50:44 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-01-27 23:50:44 +0000
commit51084627f371157b9cddfd38f638be49a497312f (patch)
tree6847cfe4feac9c2bac55fff426a691b3ddc128a8 /usb-i2c-sl018
parentset 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')
-rw-r--r--usb-i2c-sl018/update-keys.c15
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)) {