#ifdef USE_LOGGING #include #include #include "lights.h" #define LOG_BUFFER 128 static unsigned char log_state EEMEM; static unsigned char log_buffer_ee[LOG_BUFFER] EEMEM; static unsigned char log_buffer_count; static unsigned char log_buffer[LOG_BUFFER]; void log_set_state(unsigned char val) { eeprom_write_byte(&log_state, val); } void log_init() { log_set_state(1); log_buffer_count = 0; } void log_byte(unsigned char byte) { if (log_buffer_count >= LOG_BUFFER) return; // eeprom_write_word(&log_buffer[log_buffer_count], word); log_buffer[log_buffer_count++] = byte; if (log_buffer_count == LOG_BUFFER) log_flush(); } void log_word(uint16_t word) { log_byte(word & 0xFF); log_byte(word >> 8); } void log_flush() { unsigned char i; log_buffer_count = LOG_BUFFER; for (i=0; i < LOG_BUFFER; i++) { eeprom_write_byte(&log_buffer_ee[i], log_buffer[i]); } log_set_state(0x42); } #endif