15 minuter timer for EE write

This commit is contained in:
Cabooman 2024-02-12 01:49:09 +01:00
parent d12fe99e8e
commit 1e0740fd27
2 changed files with 12 additions and 3 deletions

View file

@ -27,6 +27,7 @@ typedef struct {
EVENTS_STRUCT_TYPE entries[EVENT_NOF_EVENTS];
uint32_t time_seconds;
MyTimer second_timer;
MyTimer ee_timer;
EVENTS_LEVEL_TYPE level;
uint16_t event_log_head_index;
uint16_t event_log_tail_index;
@ -44,6 +45,7 @@ static void update_event_level(void);
static void update_bms_status(void);
static void log_event(EVENTS_ENUM_TYPE event, uint8_t data);
static void print_event_log(void);
static void check_ee_write(void);
/* Exported functions */
@ -51,6 +53,7 @@ static void print_event_log(void);
void run_event_handling(void) {
update_event_time();
run_sequence_on_target();
check_ee_write();
}
/* Initialization function */
@ -58,7 +61,7 @@ void init_events(void) {
EEPROM.begin(1024);
uint16_t header = EEPROM.readUShort(0);
uint16_t header = EEPROM.readUShort(EE_EVENT_LOG_START_ADDRESS);
if (header != EE_MAGIC_HEADER_VALUE) {
EEPROM.writeUShort(EE_EVENT_LOG_START_ADDRESS, EE_MAGIC_HEADER_VALUE);
EEPROM.writeUShort(EE_EVENT_LOG_HEAD_INDEX_ADDRESS, 0);
@ -108,6 +111,7 @@ void init_events(void) {
events.entries[EVENT_DUMMY_ERROR].log = true;
events.second_timer.set_interval(1000);
events.ee_timer.set_interval(15 * 60 * 1000); // Write to EEPROM every 15 minutes
}
void set_event(EVENTS_ENUM_TYPE event, uint8_t data) {
@ -283,7 +287,6 @@ static void log_event(EVENTS_ENUM_TYPE event, uint8_t data) {
EEPROM.put(entry_address, entry);
EEPROM.writeUShort(EE_EVENT_LOG_HEAD_INDEX_ADDRESS, events.event_log_head_index);
EEPROM.writeUShort(EE_EVENT_LOG_TAIL_INDEX_ADDRESS, events.event_log_tail_index);
EEPROM.commit();
//Serial.println("Wrote event " + String(event) + " to " + String(entry_address));
//Serial.println("head: " + String(events.event_log_head_index) + ", tail: " + String(events.event_log_tail_index));
}
@ -307,3 +310,9 @@ static void print_event_log(void) {
}
}
}
static void check_ee_write(void) {
if (events.ee_timer.elapsed()) {
EEPROM.commit();
}
}

View file

@ -22,7 +22,7 @@ class EEPROMClass {
EEPROMClass EEPROM;
#include "../../Software/src/devboard/utils/events.cpp"
/* Local rest variables */
/* Local test variables */
bool elapsed = false;
/* Stubs */