X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/6c5c2df75ff018417dd6abb38196d998d5fa5b10..2f47f304d1ffbed3869066b0cb335b7bf32a9e8d:/firmware.c diff --git a/firmware.c b/firmware.c index bd13dbe..6a544a3 100644 --- a/firmware.c +++ b/firmware.c @@ -1,6 +1,6 @@ /* generic firmware-functions for HomeMatic * - * Copyright (c) 2014 Michael Gernoth + * Copyright (c) 2014-16 Michael Gernoth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -33,35 +33,11 @@ #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; -} +#define MAX_BLOCK_LENGTH 2048 struct firmware* firmware_read_firmware(char *filename, int debug) { @@ -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);