mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
fix: update checksum
This commit is contained in:
parent
39f997f7d4
commit
8e8bc6924e
12
flash.c
12
flash.c
|
|
@ -64,6 +64,7 @@ void flash_unlock(void)
|
|||
FLASH->KEYR = 0xCDEF89AB;
|
||||
}
|
||||
|
||||
#define rotate(x) ((x<<1) | (x&(1<<31)?1:0))
|
||||
|
||||
static uint32_t
|
||||
checksum(const void *start, size_t len)
|
||||
|
|
@ -72,7 +73,7 @@ checksum(const void *start, size_t len)
|
|||
uint32_t *tail = (uint32_t*)(start + len);
|
||||
uint32_t value = 0;
|
||||
while (p < tail)
|
||||
value ^= *p++;
|
||||
value = rotate(value) | *p++;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
@ -89,8 +90,7 @@ config_save(void)
|
|||
int count = sizeof(config_t) / sizeof(uint16_t);
|
||||
|
||||
config.magic = CONFIG_MAGIC;
|
||||
config.checksum = 0;
|
||||
config.checksum = checksum(&config, sizeof config);
|
||||
config.checksum = checksum(&config, sizeof config - sizeof config.checksum);
|
||||
|
||||
flash_unlock();
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ config_recall(void)
|
|||
|
||||
if (src->magic != CONFIG_MAGIC)
|
||||
return -1;
|
||||
if (checksum(src, sizeof(config_t)) != 0)
|
||||
if (checksum(src, sizeof *src - sizeof src->checksum) != src->checksum)
|
||||
return -1;
|
||||
|
||||
/* duplicated saved data onto sram to be able to modify marker/trace */
|
||||
|
|
@ -182,7 +182,7 @@ caldata_recall(int id)
|
|||
|
||||
if (src->magic != CONFIG_MAGIC)
|
||||
return -1;
|
||||
if (checksum(src, sizeof(properties_t)) != 0)
|
||||
if (checksum(src, sizeof *src - sizeof src->checksum) != src->checksum)
|
||||
return -1;
|
||||
|
||||
/* active configuration points to save data on flash memory */
|
||||
|
|
@ -205,7 +205,7 @@ caldata_ref(int id)
|
|||
|
||||
if (src->magic != CONFIG_MAGIC)
|
||||
return NULL;
|
||||
if (checksum(src, sizeof(properties_t)) != 0)
|
||||
if (checksum(src, sizeof *src - sizeof src->checksum) != src->checksum)
|
||||
return NULL;
|
||||
return src;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ typedef struct {
|
|||
uint32_t harmonic_freq_threshold;
|
||||
|
||||
uint8_t _reserved[24];
|
||||
int32_t checksum;
|
||||
uint32_t checksum;
|
||||
} config_t;
|
||||
|
||||
extern config_t config;
|
||||
|
|
@ -352,7 +352,7 @@ typedef struct {
|
|||
uint8_t _domain_mode; /* 0bxxxxxffm : where ff: TD_FUNC m: DOMAIN_MODE */
|
||||
uint8_t _marker_smith_format;
|
||||
uint8_t _reserved[50];
|
||||
int32_t checksum;
|
||||
uint32_t checksum;
|
||||
} properties_t;
|
||||
|
||||
//sizeof(properties_t) == 0x1200
|
||||
|
|
|
|||
Loading…
Reference in a new issue