From: Keith Packard Date: Sat, 7 Jun 2014 17:54:14 +0000 (-0700) Subject: altos: Clear out eeprom erase records when writing entry 0 X-Git-Tag: 1.3.2.3~14 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=5d973570ef2324b21a64477eecb0a292652ff467;ds=sidebyside altos: Clear out eeprom erase records when writing entry 0 When writing config/erase to eeprom, there's no 'erase' operation as on-chip eeprom is writable at a byte level. As such, we can't tell when the erase blocks get reset when the config gets written. When this happens, erase block 0 gets written explicitly, so just use that call to trigger explicit erasing of the data. Signed-off-by: Keith Packard --- diff --git a/src/kernel/ao_log.c b/src/kernel/ao_log.c index 76e0e68c..3cf85a33 100644 --- a/src/kernel/ao_log.c +++ b/src/kernel/ao_log.c @@ -67,6 +67,18 @@ ao_log_write_erase(uint8_t pos) erase.mark = LOG_ERASE_MARK; erase.flight = ao_flight_number; ao_config_write(ao_log_erase_pos(pos), &erase, sizeof (erase)); + +#if USE_EEPROM_CONFIG + if (pos == 0) { + uint8_t i; + for (i = 1; i < LOG_MAX_ERASE; i++) { + erase.mark = ~LOG_ERASE_MARK; + erase.flight = 0; + ao_config_write(ao_log_erase_pos(i), &erase, sizeof (erase)); + } + } +#endif + ao_config_flush(); }