46 lines
1005 B
C
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
|