on-chip eeprom doesn't erase to 0xff, so let TeleMega use a different
value.
Signed-off-by: Keith Packard <keithp@keithp.com>
uint16_t flight;
};
static __xdata struct ao_log_erase erase;
uint16_t flight;
};
static __xdata struct ao_log_erase erase;
+#endif
+
+#ifndef LOG_ERASE_MARK
+#if USE_EEPROM_CONFIG
+#error "Must define LOG_ERASE_MARK with USE_EEPROM_CONFIG"
+#endif
+#define LOG_ERASE_MARK 0x00
+#endif
static uint32_t
ao_log_erase_pos(uint8_t i)
static uint32_t
ao_log_erase_pos(uint8_t i)
void
ao_log_write_erase(uint8_t pos)
{
void
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));
ao_config_flush();
erase.flight = ao_flight_number;
ao_config_write(ao_log_erase_pos(pos), &erase, sizeof (erase));
ao_config_flush();
for (i = 0; i < LOG_MAX_ERASE; i++) {
ao_log_read_erase(i);
for (i = 0; i < LOG_MAX_ERASE; i++) {
ao_log_read_erase(i);
- if (erase.unused == 0 && erase.flight == ao_flight_number)
+ if (erase.mark == LOG_ERASE_MARK && erase.flight == ao_flight_number)
- if (erase.unused == 0xff) {
+ if (erase.mark != LOG_ERASE_MARK) {
ao_log_write_erase(i);
return;
}
ao_log_write_erase(i);
return;
}
*/
for (log_slot = LOG_MAX_ERASE; log_slot-- > 0;) {
ao_log_read_erase(log_slot);
*/
for (log_slot = LOG_MAX_ERASE; log_slot-- > 0;) {
ao_log_read_erase(log_slot);
- if (erase.unused == 0) {
+ if (erase.mark == LOG_ERASE_MARK) {
if (ao_flight_number == 0 ||
(int16_t) (erase.flight - ao_flight_number) > 0)
ao_flight_number = erase.flight;
if (ao_flight_number == 0 ||
(int16_t) (erase.flight - ao_flight_number) > 0)
ao_flight_number = erase.flight;