diff --git a/24c16.c b/24c16.c index 8f07d40..cba3e62 100644 --- a/24c16.c +++ b/24c16.c @@ -19,7 +19,7 @@ int update_checksum(t_eeprom_data* data) p_data = (char*)data; - for (size_t i=0; ichecksum)); i++) { checksum += *p_data; p_data++; @@ -27,6 +27,7 @@ int update_checksum(t_eeprom_data* data) //fprintf(stderr, "Checksum: %x\n", checksum); data->checksum = checksum; + return (0); } @@ -56,7 +57,7 @@ char verify_checksum(t_eeprom_data* data) p_data = (char*)data; - for (size_t i=0; ichecksum)); i++) { checksum += *p_data; p_data++; diff --git a/24c16.h b/24c16.h index b47e8fe..3cca5d7 100644 --- a/24c16.h +++ b/24c16.h @@ -2,6 +2,8 @@ #define EEPROM_DATA_VERSION 1 +#define SN_LENGTH 8 + // define struct for MS5611 sensor typedef struct { int fd; @@ -11,11 +13,14 @@ typedef struct { typedef struct { char header[3]; char data_version; - char serial[6]; float zero_offset; + char serial[SN_LENGTH]; + char padding[3]; char checksum; } t_eeprom_data; + + // prototypes int eeprom_open(t_24c16 *, unsigned char); char eeprom_write(t_24c16 *, char *, unsigned char, unsigned char); diff --git a/sensorcal.c b/sensorcal.c index 132887a..e5aa415 100644 --- a/sensorcal.c +++ b/sensorcal.c @@ -83,7 +83,7 @@ int main (int argc, char **argv) { int result; int c; int i; - char sn[7]; + char sn[SN_LENGTH]; char zero[1]={0x00}; @@ -128,8 +128,9 @@ int main (int argc, char **argv) { } strcpy(data.header, "OV"); data.data_version = EEPROM_DATA_VERSION; - memset(data.serial,'0',6); + memset(data.serial,'0',SN_LENGTH); data.zero_offset=0.0; + memset(data.padding,'0',3); update_checksum(&data); printf("Writing data to EEPROM ...\n"); result = eeprom_write(&eeprom, (char*)&data, 0x00, sizeof(data)); @@ -171,7 +172,7 @@ int main (int argc, char **argv) { printf("Reading EEPROM values ...\n\n"); if( eeprom_read_data(&eeprom, &data) == 0) { - memcpy(sn,data.serial,6); + memcpy(sn,data.serial,SN_LENGTH); printf("Actual EEPROM values:\n"); printf("---------------------\n"); printf("Serial: \t\t\t%s\n", sn); @@ -189,12 +190,12 @@ int main (int argc, char **argv) { break; case 's': - if( strlen(optarg) == 6) + if( strlen(optarg) == SN_LENGTH) { // read actual EEPROM values if( eeprom_read_data(&eeprom, &data) == 0) { - for(i=0; i<6;i++) + for(i=0; i