#ifndef __STATE_MANAGER_H #define __STATE_MANAGER_H #define DEFAULT_STATE 0x0000 // #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