40 static bool storageInitDone;
42 enum class WearLevelingMode {
48 friend class StateStorageInterface;
49 static Storage *Instance();
50 static Config *ConfigInstance();
51 static void SetConfigInstance(
Config *instance);
52 static bool IsConfigStorageAvailable();
55 static bool SaveStateAllowed(uint32_t);
56 static void ScheduleSave(uint32_t delayMs);
57 static bool IsStateStorageValid();
58 static void LoadStateStorage();
59 static void WriteStateStorage();
61 static bool ReadState(
unsigned char *,
int);
62 static bool WriteState(
const unsigned char *,
int);
64 static void EraseSector(
unsigned int offset,
int size);
73 static bool RegisterSection(
int sectionId,
int offset,
int size,
74 bool addCrc,
bool addBackupCopy);
77 static bool ReadSection(
int sectionId,
unsigned char *data,
int size);
80 static bool WriteSection(
int sectionId,
const unsigned char *data,
int size);
82 static bool DeleteSection(
int sectionId);
84 explicit Storage(
unsigned int storageStartingOffset = 0,
85 unsigned int availableSize = 0,
86 enum WearLevelingMode = WearLevelingMode::OFF);
90 virtual void setStateSavePeriod(uint32_t periodMs);
92 virtual void deleteAll();
93 virtual void eraseSector(
unsigned int address,
int size);
95 void enableChannelNumbers();
96 bool isAddChannelNumbersEnabled()
const;
109 virtual int readStorage(
unsigned int address,
112 bool logs =
true) = 0;
113 virtual int writeStorage(
unsigned int address,
114 const unsigned char *buf,
116 virtual void commit() = 0;
118 virtual int updateStorage(
unsigned int,
const unsigned char *,
int);
120 virtual bool saveStateAllowed(uint32_t);
121 virtual void scheduleSave(uint32_t delayMs);
123 bool registerSection(
124 int sectionId,
int offset,
int size,
bool addCrc,
bool addBackupCopy);
125 bool readSection(
int sectionId,
unsigned char *data,
int size);
126 bool writeSection(
int sectionId,
const unsigned char *data,
int size);
127 bool deleteSection(
int sectionId);
129 static void WriteElementsState();
131 const uint32_t storageStartingOffset = 0;
132 const uint32_t availableSize = 0;
133 const enum WearLevelingMode wearLevelingMode = WearLevelingMode::OFF;
135 uint32_t saveStatePeriod = 1000;
136 uint32_t lastWriteTimestamp = 0;
139 StateStorageInterface *stateStorage =
nullptr;
141 static Storage *instance;
142 static Config *configInstance;
143 bool addChannelNumbers =
false;
144 bool deleteAllMethodEnabled =
true;