diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-01-27 22:15:09 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-01-27 22:15:09 +0000 |
commit | 98dc60aa8c26569b56e3badf8e4e54cd87a4abfa (patch) | |
tree | 40bbdd5e079626fc5a26c5eb45d0415b14033b0a | |
parent | added flash debug output (diff) |
added update-keys (no csum function yet)
git-svn-id: https://svn.spreadspace.org/avr/trunk@74 aa12f405-d877-488e-9caf-2d797e2a1cc7
-rw-r--r-- | usb-i2c-sl018/Makefile | 3 | ||||
-rw-r--r-- | usb-i2c-sl018/update-keys.c | 70 |
2 files changed, 73 insertions, 0 deletions
diff --git a/usb-i2c-sl018/Makefile b/usb-i2c-sl018/Makefile index f505450..bd66f1f 100644 --- a/usb-i2c-sl018/Makefile +++ b/usb-i2c-sl018/Makefile @@ -42,3 +42,6 @@ LUFA_OPTS += -D USB_PRODUCT="L\"$(NAME)\"" LUFA_COMPONENTS := USB USBCLASS TWI
include ../include.mk
+
+update-keys: update-keys.c
+ gcc -o $@ $<
\ No newline at end of file diff --git a/usb-i2c-sl018/update-keys.c b/usb-i2c-sl018/update-keys.c new file mode 100644 index 0000000..dc082ed --- /dev/null +++ b/usb-i2c-sl018/update-keys.c @@ -0,0 +1,70 @@ +/* + * spreadspace avr utils + * + * + * Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org> + * + * This file is part of spreadspace avr utils. + * + * spreadspace avr utils is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * spreadspace avr utils is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <ctype.h> +#include <stdio.h> + +#define MAX_KEY_LEN 7 + +char generate_csum(char* key) +{ + return 0xFF; +} + +int main(int argc, char* argv[]) +{ + char* line = NULL; + size_t len = 0; + + for(;;) { + ssize_t ret = getline(&line, &len, stdin); + if(ret <= 0) return 0; + + int i; + for(i=0; i<len; ++i) { + if(!isxdigit(line[i])) { + line[i] = 0; + break; + } + } + if(i & 1 || i == 0 || i > MAX_KEY_LEN*2) { + fprintf(stderr, "ignoring invalid key (odd number of digits or empty string or too long): %s\n", line); + continue; + } + char key[MAX_KEY_LEN+1]; + int j; + char tmp[3]; + tmp[2] = 0; + for(j = 0; j<(i/2); ++j) { + tmp[0] = line[j*2]; + tmp[1] = line[j*2 + 1]; + key[j] = (char)strtoul(tmp, NULL, 16); + } + for(j=i/2; j < MAX_KEY_LEN; ++j) { + key[j] = 0; + } + key[MAX_KEY_LEN] = generate_csum(key); + ret = fwrite(key, MAX_KEY_LEN+1, 1, stdout); + } + + return 0; +} |