Files
ch32v003-ext-board/state_manager.h

46 lines
1005 B
C

#ifndef __STATE_MANAGER_H
#define __STATE_MANAGER_H
#define DEFAULT_STATE 0xFFFF
// #define USE_EEPROM_STORAGE
#ifdef USE_EEPROM_STORAGE
#include "simple_eeprom.h"
static uint16_t current_state = DEFAULT_STATE;
static bool state_initialized = false;
void save_state(uint16_t state) {
current_state = state;
eeprom_write(state);
}
uint16_t load_state(void) {
if (!state_initialized) {
current_state = eeprom_read();
state_initialized = true;
}
return current_state;
}
void dump_eeprom(void) {
uint16_t *word = (uint16_t *)(EEPROM_BASE);
printf("EEPROM contents:");
for (int i = 0; i < 32; i++) {
uint16_t val = word[i];
printf(" %04X", val);
}
printf("\n");
}
#else // RAM-only
static uint16_t current_state = DEFAULT_STATE;
void save_state(uint16_t state) { current_state = state; }
uint16_t load_state(void) { return current_state; }
void dump_eeprom(void) { printf("EEPROM storage disabled\n"); }
#endif // USE_EEPROM_STORAGE
#endif // __STATE_MANAGER_H