diff options
| author | Selene ToyKeeper | 2023-11-02 17:16:25 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2023-11-02 17:16:25 -0600 |
| commit | 7cb4fe0944b839f28dfd96a88a772cd6a8b58019 (patch) | |
| tree | 8d3b203f1650edc28b1f67e1589e3bc870b33fa6 /spaghetti-monster/fsm-eeprom.c | |
| parent | added LICENSE (GPLv3) (diff) | |
| download | anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.tar.gz anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.tar.bz2 anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.zip | |
reorganized project files (part 1)
(just moved files, didn't change the contents yet,
and nothing will work without updating #includes and build scripts and stuff)
Diffstat (limited to 'spaghetti-monster/fsm-eeprom.c')
| -rw-r--r-- | spaghetti-monster/fsm-eeprom.c | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/spaghetti-monster/fsm-eeprom.c b/spaghetti-monster/fsm-eeprom.c deleted file mode 100644 index 66cdd78..0000000 --- a/spaghetti-monster/fsm-eeprom.c +++ /dev/null @@ -1,112 +0,0 @@ -// fsm-eeprom.c: EEPROM API for SpaghettiMonster. -// Copyright (C) 2017-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "fsm-eeprom.h" - -#ifdef USE_EEPROM -#ifdef EEPROM_OVERRIDE -uint8_t *eeprom; -#else -uint8_t eeprom[EEPROM_BYTES]; -#endif - -uint8_t load_eeprom() { - #if defined(LED_ENABLE_PIN) || defined(LED2_ENABLE_PIN) - delay_4ms(2); // wait for power to stabilize - #endif - - cli(); - // check if eeprom has been initialized; abort if it hasn't - uint8_t marker = eeprom_read_byte((uint8_t *)EEP_START); - if (marker != EEP_MARKER) { sei(); return 0; } - - // load the actual data - for(uint8_t i=0; i<EEPROM_BYTES; i++) { - eeprom[i] = eeprom_read_byte((uint8_t *)(EEP_START+1+i)); - } - sei(); - return 1; -} - -void save_eeprom() { - #if defined(LED_ENABLE_PIN) || defined(LED2_ENABLE_PIN) - delay_4ms(2); // wait for power to stabilize - #endif - - cli(); - - // save the actual data - for(uint8_t i=0; i<EEPROM_BYTES; i++) { - eeprom_update_byte((uint8_t *)(EEP_START+1+i), eeprom[i]); - } - - // save the marker last, to indicate the transaction is complete - eeprom_update_byte((uint8_t *)EEP_START, EEP_MARKER); - sei(); -} -#endif - -#ifdef USE_EEPROM_WL -uint8_t eeprom_wl[EEPROM_WL_BYTES]; -uint8_t * eep_wl_prev_offset; - -uint8_t load_eeprom_wl() { - #if defined(LED_ENABLE_PIN) || defined(LED2_ENABLE_PIN) - delay_4ms(2); // wait for power to stabilize - #endif - - cli(); - // check if eeprom has been initialized; abort if it hasn't - uint8_t found = 0; - uint8_t * offset; - for(offset = 0; - offset < (uint8_t *)(EEP_WL_SIZE - EEPROM_WL_BYTES - 1); - offset += (EEPROM_WL_BYTES + 1)) { - if (eeprom_read_byte(offset) == EEP_MARKER) { - found = 1; - eep_wl_prev_offset = offset; - break; - } - } - - if (found) { - // load the actual data - for(uint8_t i=0; i<EEPROM_WL_BYTES; i++) { - eeprom_wl[i] = eeprom_read_byte(offset+1+i); - } - } - sei(); - return found; -} - -void save_eeprom_wl() { - #if defined(LED_ENABLE_PIN) || defined(LED2_ENABLE_PIN) - delay_4ms(2); // wait for power to stabilize - #endif - - cli(); - // erase old state - uint8_t * offset = eep_wl_prev_offset; - for (uint8_t i = 0; i < EEPROM_WL_BYTES+1; i ++) { - eeprom_update_byte(offset+i, 0xFF); - } - - // save new state - offset += EEPROM_WL_BYTES+1; - if (offset > (uint8_t *)(EEP_WL_SIZE-EEPROM_WL_BYTES-1)) offset = 0; - eep_wl_prev_offset = offset; - // marker byte - // FIXME: write the marker last, to signal completed transaction - eeprom_update_byte(offset, EEP_MARKER); - offset ++; - // user data - for(uint8_t i=0; i<EEPROM_WL_BYTES; i++, offset++) { - eeprom_update_byte(offset, eeprom_wl[i]); - } - sei(); -} -#endif - |
