]> www.fi.muni.cz Git - bike-lights.git/blob - logging.c
ambient light sensor
[bike-lights.git] / logging.c
1 #ifdef USE_LOGGING
2
3 #include <avr/io.h>
4 #include <avr/eeprom.h>
5
6 #include "lights.h"
7
8 #define LOG_BUFFER 128
9 static unsigned char log_state EEMEM;
10 static unsigned char log_buffer_ee[LOG_BUFFER] EEMEM;
11 static unsigned char log_buffer_count;
12 static unsigned char log_buffer[LOG_BUFFER];
13
14 void log_set_state(unsigned char val)
15 {
16         eeprom_write_byte(&log_state, val);
17 }
18
19 void log_init()
20 {
21         log_set_state(1);
22         log_buffer_count = 0;
23 }
24
25 void log_byte(unsigned char byte) {
26         if (log_buffer_count >= LOG_BUFFER)
27                 return;
28         
29         // eeprom_write_word(&log_buffer[log_buffer_count], word);
30         log_buffer[log_buffer_count++] = byte;
31
32         if (log_buffer_count == LOG_BUFFER)
33                 log_flush();
34 }
35
36 void log_word(uint16_t word) {
37         log_byte(word & 0xFF);
38         log_byte(word >> 8);
39 }
40
41 void log_flush() {
42         unsigned char i;
43
44         log_buffer_count = LOG_BUFFER;
45         for (i=0; i < LOG_BUFFER; i++) {
46                 eeprom_write_byte(&log_buffer_ee[i],
47                         log_buffer[i]);
48         }
49         log_set_state(0x42);
50 }
51
52 #endif
53