X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/6c5c2df75ff018417dd6abb38196d998d5fa5b10..47ea478b44e3c529201c6678f5e2cbbe0fc60bf9:/firmware.c?ds=sidebyside diff --git a/firmware.c b/firmware.c index bd13dbe..650f035 100644 --- a/firmware.c +++ b/firmware.c @@ -33,36 +33,12 @@ #include #include +#include "util.h" #include "firmware.h" /* This might be wrong, but it works for current fw */ #define MAX_BLOCK_LENGTH 512 -static uint8_t ascii_to_nibble(uint8_t a) -{ - uint8_t c = 0x00; - - if ((a >= '0') && (a <= '9')) { - c = a - '0'; - } else if ((a >= 'A') && (a <= 'F')) { - c = (a - 'A') + 10; - } else if ((a >= 'a') && (a <= 'f')) { - c = (a - 'a') + 10; - } - - return c; -} - -static int validate_nibble(uint8_t a) -{ - if (((a >= '0') && (a <= '9')) || - ((a >= 'A') && (a <= 'F')) || - ((a >= 'a') && (a <= 'f'))) - return 1; - - return 0; -} - struct firmware* firmware_read_firmware(char *filename, int debug) { struct firmware *fw; @@ -119,7 +95,6 @@ struct firmware* firmware_read_firmware(char *filename, int debug) len |= (ascii_to_nibble(buf[2]) & 0xf)<< 4; len |= ascii_to_nibble(buf[3]) & 0xf; - /* This might be wrong, but it works for current fw->fw */ if (len > MAX_BLOCK_LENGTH) { fprintf(stderr, "Invalid block-length %u > %u for block %d!\n", len, MAX_BLOCK_LENGTH, fw->fw_blocks+1); exit(EXIT_FAILURE);