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);
62 static void ScheduleSave(uint32_t delayMsMax, uint32_t delayMsMin = 0);
63 static bool IsStateStorageValid();
64 static void LoadStateStorage();
65 static void WriteStateStorage();
67 static bool ReadState(
unsigned char *,
int);
68 static bool WriteState(
const unsigned char *,
int);
70 static void EraseSector(
unsigned int offset,
int size);
79 static bool RegisterSection(
int sectionId,
int offset,
int size,
80 bool addCrc,
bool addBackupCopy);
83 static bool ReadSection(
int sectionId,
unsigned char *data,
int size);
86 static bool WriteSection(
int sectionId,
const unsigned char *data,
int size);
88 static bool DeleteSection(
int sectionId);
90 explicit Storage(
unsigned int storageStartingOffset = 0,
91 unsigned int availableSize = 0,
92 enum WearLevelingMode = WearLevelingMode::OFF);
96 virtual void setStateSavePeriod(uint32_t periodMs);
98 virtual void deleteAll();
99 virtual void eraseSector(
unsigned int address,
int size);
101 void enableChannelNumbers();
102 bool isAddChannelNumbersEnabled()
const;
115 bool getInitResult()
const;
116 virtual int readStorage(
unsigned int address,
119 bool logs =
true) = 0;
120 virtual int writeStorage(
unsigned int address,
121 const unsigned char *buf,
123 virtual void commit() = 0;
125 virtual int updateStorage(
unsigned int,
const unsigned char *,
int);
127 virtual bool saveStateAllowed(uint32_t);
128 virtual void scheduleSave(uint32_t delayMsMax, uint32_t delayMsMin);
130 bool registerSection(
131 int sectionId,
int offset,
int size,
bool addCrc,
bool addBackupCopy);
132 bool readSection(
int sectionId,
unsigned char *data,
int size);
133 bool writeSection(
int sectionId,
const unsigned char *data,
int size);
134 bool deleteSection(
int sectionId);
136 static void WriteElementsState();
138 const uint32_t storageStartingOffset = 0;
139 const uint32_t availableSize = 0;
140 const enum WearLevelingMode wearLevelingMode = WearLevelingMode::OFF;
142 uint32_t saveStatePeriod = 1000;
143 uint32_t lastWriteTimestamp = 0;
146 StateStorageInterface *stateStorage =
nullptr;
148 static Storage *instance;
149 static Config *configInstance;
150 bool addChannelNumbers =
false;
151 bool deleteAllMethodEnabled =
true;
152 bool initResult =
false;
static void ScheduleSave(uint32_t delayMsMax, uint32_t delayMsMin=0)
Schedules save of state storage in given time range.
Definition storage.cpp:110