25 static bool storageInitDone;
27 enum class WearLevelingMode {
35 static Config *ConfigInstance();
36 static void SetConfigInstance(
Config *instance);
37 static bool IsConfigStorageAvailable();
40 static bool SaveStateAllowed(uint32_t);
47 static void ScheduleSave(uint32_t delayMsMax, uint32_t delayMsMin = 0);
48 static bool IsStateStorageValid();
49 static void LoadStateStorage();
50 static void WriteStateStorage();
52 static bool ReadState(
unsigned char *,
int);
53 static bool WriteState(
const unsigned char *,
int);
55 static void EraseSector(
unsigned int offset,
int size);
64 static bool RegisterSection(
int sectionId,
int offset,
int size,
65 bool addCrc,
bool addBackupCopy);
68 static bool ReadSection(
int sectionId,
unsigned char *data,
int size);
71 static bool WriteSection(
int sectionId,
const unsigned char *data,
int size);
73 static bool DeleteSection(
int sectionId);
75 explicit Storage(
unsigned int storageStartingOffset = 0,
76 unsigned int availableSize = 0,
77 enum WearLevelingMode = WearLevelingMode::OFF);
81 virtual void setStateSavePeriod(uint32_t periodMs);
83 virtual void deleteAll();
84 virtual void eraseSector(
unsigned int address,
int size);
86 void enableChannelNumbers();
87 bool isAddChannelNumbersEnabled()
const;
100 bool getInitResult()
const;
101 virtual int readStorage(
unsigned int address,
104 bool logs =
true) = 0;
105 virtual int writeStorage(
unsigned int address,
106 const unsigned char *buf,
107 unsigned int size) = 0;
108 virtual void commit() = 0;
110 virtual int updateStorage(
unsigned int,
const unsigned char *,
int);
112 virtual bool saveStateAllowed(uint32_t);
113 virtual void scheduleSave(uint32_t delayMsMax, uint32_t delayMsMin);
115 bool registerSection(
116 int sectionId,
int offset,
int size,
bool addCrc,
bool addBackupCopy);
117 bool readSection(
int sectionId,
unsigned char *data,
int size);
118 bool writeSection(
int sectionId,
const unsigned char *data,
int size);
119 bool deleteSection(
int sectionId);
121 static void WriteElementsState();
123 const uint32_t storageStartingOffset = 0;
124 const uint32_t availableSize = 0;
125 const enum WearLevelingMode wearLevelingMode = WearLevelingMode::OFF;
127 uint32_t saveStatePeriod = 1000;
128 uint32_t lastWriteTimestamp = 0;
134 static Config *configInstance;
135 bool addChannelNumbers =
false;
136 bool deleteAllMethodEnabled =
true;
137 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:93