2 #include <avr/eeprom.h>
7 static unsigned char log_buffer_ee[LOG_BUFFER] EEMEM;
8 static unsigned char log_buffer_count;
9 static unsigned char log_buffer[LOG_BUFFER];
10 static unsigned char log_state EEMEM;
11 /* Upper 4 bits are reset count, lower 4 bits are reset reason from MCUSR */
12 static unsigned char reboot_count EEMEM = 0;
13 static unsigned char can_write_eeprom = 0;
14 static uint16_t flushed_end;
16 void log_set_state(unsigned char val)
19 eeprom_write_byte(&log_state, val);
24 unsigned char r_count;
26 r_count = eeprom_read_byte(&reboot_count);
31 eeprom_write_byte(&reboot_count,
32 (r_count << 4) | (MCUSR & 0xF));
36 //eeprom_write_byte(&log_state, 0xFF);
45 void log_byte(unsigned char byte) {
46 if (log_buffer_count >= LOG_BUFFER)
49 // eeprom_write_word(&log_buffer[log_buffer_count], word);
50 log_buffer[log_buffer_count++] = byte;
52 if (log_buffer_count == LOG_BUFFER)
56 void log_word(uint16_t word) {
57 log_byte(word & 0xFF);
64 if (!can_write_eeprom)
67 for (i=flushed_end; i < log_buffer_count; i++) {
68 eeprom_write_byte(&log_buffer_ee[i],
74 if (flushed_end == LOG_BUFFER)