rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
storage.h
Go to the documentation of this file.
1/**
2 * @file storage.h
3 * @brief
4 *
5 * @date Jan 4, 2025
6 * @author Andrey Gusakov
7 */
8
9#pragma once
10
11// Storage status
12enum class StorageStatus {
13 Ok,
17 // all is well, but we're on a fresh chip with blank memory
19 // Write failed
20 Failed
21};
22
24public:
25 /* is storage ready? */
26 virtual bool isReady() = 0;
27 /* does storage able to srore given ID? */
28 virtual bool isIdSupported(size_t id) = 0;
29 /* store given ID */
30 virtual StorageStatus store(size_t id, const uint8_t *ptr, size_t size) = 0;
31 /* read given ID */
32 virtual StorageStatus read(size_t id, uint8_t *ptr, size_t size) = 0;
33 /* format/esare storage */
34 virtual StorageStatus format() = 0;
35};
36
45
46// IDs used as MFS record ids and internal RusEFI ids
48 /* 0 is reserved due to MFS limitation */
52
54};
55
56// exported for unit tests only
58
59// read and write storate item. executed in caller context
60StorageStatus storageWrite(StorageItemId id, const uint8_t *ptr, size_t size);
61StorageStatus storageRead(StorageItemId id, uint8_t *ptr, size_t size);
62
63// request storage manager to read or write given ID from its own context when storage is ready
64bool storageRequestWriteID(StorageItemId id, bool forced);
66
69
71
72// request storage manager to attach or deattach storage from its own context
75
76/**
77 * @return true if an persistentState write is pending
78 */
80
81void initStorage();
virtual StorageStatus read(size_t id, uint8_t *ptr, size_t size)=0
virtual StorageStatus store(size_t id, const uint8_t *ptr, size_t size)=0
virtual bool isReady()=0
virtual bool isIdSupported(size_t id)=0
virtual StorageStatus format()=0
bool storageIsStorageRegistered(StorageType type)
Definition storage.cpp:230
bool storageReqestReadID(StorageItemId id)
Definition storage.cpp:190
bool storageUnregisterStorage(StorageType type)
Definition storage.cpp:213
bool storagRequestUnregisterStorage(StorageType id)
Definition storage.cpp:243
bool storageRegisterStorage(StorageType type, SettingStorageBase *storage)
Definition storage.cpp:194
StorageType
Definition storage.h:37
@ STORAGE_INT_FLASH
Definition storage.h:38
@ STORAGE_TOTAL
Definition storage.h:43
@ STORAGE_SD_CARD
Definition storage.h:41
@ STORAGE_MFS_EXT_FLASH
Definition storage.h:40
@ STORAGE_MFS_INT_FLASH
Definition storage.h:39
StorageStatus storageRead(StorageItemId id, uint8_t *ptr, size_t size)
Definition storage.cpp:160
StorageItemId
Definition storage.h:47
@ EFI_SETTINGS_BACKUP_RECORD_ID
Definition storage.h:50
@ EFI_LTFT_RECORD_ID
Definition storage.h:51
@ EFI_STORAGE_TOTAL_ITEMS
Definition storage.h:53
@ EFI_SETTINGS_RECORD_ID
Definition storage.h:49
bool storageRequestWriteID(StorageItemId id, bool forced)
Definition storage.cpp:186
bool storageAllowWriteID(StorageItemId id)
Definition storage.cpp:19
void initStorage()
Definition storage.cpp:357
StorageStatus storageWrite(StorageItemId id, const uint8_t *ptr, size_t size)
Definition storage.cpp:142
StorageStatus
Definition storage.h:12
bool getNeedToWriteConfiguration()
Definition storage.cpp:353
bool storagRequestRegisterStorage(StorageType id)
Definition storage.cpp:238
composite packet size