summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-01-27 22:15:09 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-01-27 22:15:09 +0000
commit98dc60aa8c26569b56e3badf8e4e54cd87a4abfa (patch)
tree40bbdd5e079626fc5a26c5eb45d0415b14033b0a /usb-i2c-sl018
parentadded 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
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r--usb-i2c-sl018/Makefile3
-rw-r--r--usb-i2c-sl018/update-keys.c70
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;
+}