FOSSASAT-1B
persistent_storage.cpp
1 #include "persistent_storage.h"
2 
4  // wipe EEPROM
5  FOSSASAT_DEBUG_PRINTLN('W');
6  for (uint16_t i = 0; i < EEPROM.length(); i++) {
7  Persistent_Storage_Write<uint8_t>(i, EEPROM_RESET_VALUE);
8  }
9 
10  // set default variable values
11 
12  // set deployment counter to 0
13  Persistent_Storage_Write<uint8_t>(EEPROM_DEPLOYMENT_COUNTER_ADDR, 0);
14 
15  // set default power configuration
16  powerConfig.bits.lowPowerModeActive = LOW_POWER_MODE_ACTIVE;
17  powerConfig.bits.lowPowerModeEnabled = LOW_POWER_MODE_ENABLED;
18  powerConfig.bits.mpptTempSwitchEnabled = MPPT_TEMP_SWITCH_ENABLED;
19  powerConfig.bits.mpptKeepAliveEnabled = MPPT_KEEP_ALIVE_ENABLED;
20  powerConfig.bits.transmitEnabled = TRANSMIT_ENABLED;
22 
23  // reset first run flag
24  Persistent_Storage_Write<uint8_t>(EEPROM_FIRST_RUN_ADDR, EEPROM_FIRST_RUN);
25 
26  // set reset counter to 0
27  Persistent_Storage_Write<uint16_t>(EEPROM_RESTART_COUNTER_ADDR, 0);
28 
29  // set default receive window lengths
30  Persistent_Storage_Write<uint8_t>(EEPROM_FSK_RECEIVE_LEN_ADDR, FSK_RECEIVE_WINDOW_LENGTH);
31  Persistent_Storage_Write<uint8_t>(EEPROM_LORA_RECEIVE_LEN_ADDR, LORA_RECEIVE_WINDOW_LENGTH);
32 
33  // reset uptime counter
34  Persistent_Storage_Write<uint32_t>(EEPROM_UPTIME_COUNTER_ADDR, 0);
35 
36  // reset loop counter
37  Persistent_Storage_Write<uint8_t>(EEPROM_LOOP_COUNTER, 0);
38 
39  // reset frame counters
40  Persistent_Storage_Write<uint16_t>(EEPROM_LORA_VALID_COUNTER_ADDR, 0);
41  Persistent_Storage_Write<uint16_t>(EEPROM_LORA_INVALID_COUNTER_ADDR, 0);
42  Persistent_Storage_Write<uint16_t>(EEPROM_FSK_VALID_COUNTER_ADDR, 0);
43  Persistent_Storage_Write<uint16_t>(EEPROM_FSK_INVALID_COUNTER_ADDR, 0);
44 
45  // set default callsign
46  System_Info_Set_Callsign((char*)"FOSSASAT-1B");
47 
48  // reset stats
49  for(uint16_t addr = EEPROM_CHARGING_VOLTAGE_STATS_ADDR; addr <= EEPROM_MCU_TEMP_STATS_ADDR + 2; addr += sizeof(uint32_t)) {
50  Persistent_Storage_Write<uint32_t>(addr, 0);
51  }
52 
53 }
54 
56  Persistent_Storage_Write<uint16_t>(addr, Persistent_Storage_Read<uint16_t>(addr) + 1);
57 }
58 
60  uint16_t addr = EEPROM_LORA_VALID_COUNTER_ADDR;
61  if(currentModem == MODEM_LORA) {
62  if(!valid) {
63  addr += 2;
64  }
65  } else {
66  if(valid) {
67  addr += 4;
68  } else {
69  addr += 6;
70  }
71  }
72 
74 }
#define EEPROM_LOOP_COUNTER
Loop counter - only used to determine when to transmit full Morse beacon, so it doesn&#39;t matter when i...
#define EEPROM_LORA_INVALID_COUNTER_ADDR
Start AddressEnd Address 0x000E0x000F
#define EEPROM_FSK_RECEIVE_LEN_ADDR
Start AddressEnd Address 0x00050x0005
#define EEPROM_MCU_TEMP_STATS_ADDR
Start AddressEnd Address 0x00610x0063
#define EEPROM_FSK_VALID_COUNTER_ADDR
Start AddressEnd Address 0x00100x0011
#define EEPROM_LORA_RECEIVE_LEN_ADDR
Start AddressEnd Address 0x00060x0006
#define EEPROM_UPTIME_COUNTER_ADDR
Start AddressEnd Address 0x00070x000A
#define EEPROM_CHARGING_VOLTAGE_STATS_ADDR
Start AddressEnd Address 0x00400x0042
#define MPPT_KEEP_ALIVE_ENABLED
#define EEPROM_RESET_VALUE
#define TRANSMIT_ENABLED
#define EEPROM_FIRST_RUN
void Power_Control_Save_Configuration()
Saves the configuration bytes from RAM into EEPROM.
This module controls access to the EEPROM.
#define LOW_POWER_MODE_ACTIVE
Definition: configuration.h:98
uint8_t currentModem
powerConfig_t powerConfig
The current power configuration settings.
#define EEPROM_FSK_INVALID_COUNTER_ADDR
Start AddressEnd Address 0x00120x0013
#define LORA_RECEIVE_WINDOW_LENGTH
#define LOW_POWER_MODE_ENABLED
Definition: configuration.h:99
#define EEPROM_FIRST_RUN_ADDR
Start AddressEnd Address 0x00020x0002
#define EEPROM_LORA_VALID_COUNTER_ADDR
Start AddressEnd Address 0x000C0x000D
void Persistent_Storage_Wipe()
This functions clears the EEPROM by writing EEPROM_RESET_VALUE to each memory addres.
#define EEPROM_DEPLOYMENT_COUNTER_ADDR
Start AddressEnd Address 0x00000x0000
void System_Info_Set_Callsign(char *newCallsign)
Set the callsign to be used for each transmission to EEPROM.
Definition: system_info.cpp:3
#define FSK_RECEIVE_WINDOW_LENGTH
#define MPPT_TEMP_SWITCH_ENABLED
void Persistent_Storage_Increment_Frame_Counter(bool valid)
This functions increments one of frame counters of the currently active modem in EEPROM.
void Persistent_Storage_Increment_Counter(uint16_t addr)
This functions increments 2-byte counter in EEPROM.
#define EEPROM_RESTART_COUNTER_ADDR
Start AddressEnd Address 0x00030x0004