/* * spreadspace avr utils * * * Copyright (C) 2012 Christian Pointner * * 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 . */ #include #include #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 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; }