/* Upper 4 bits are reset count, lower 4 bits are reset reason from MCUSR */
static unsigned char reboot_count EEMEM = 0;
static unsigned char can_write_eeprom = 0;
+static uint16_t flushed_end;
void log_set_state(unsigned char val)
{
log_set_state(1);
log_buffer_count = 0;
+ flushed_end = 0;
}
void log_byte(unsigned char byte) {
void log_flush() {
unsigned char i;
- log_buffer_count = LOG_BUFFER;
-
if (!can_write_eeprom)
return;
- for (i=0; i < LOG_BUFFER; i++) {
+ for (i=flushed_end; i < log_buffer_count; i++) {
eeprom_write_byte(&log_buffer_ee[i],
log_buffer[i]);
}
- log_set_state(0x42);
+
+ flushed_end = i;
+
+ if (flushed_end == LOG_BUFFER)
+ log_set_state(0x42);
}
#endif