| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #pragma once
- #include <helpers/IdentityStore.h>
- #include <helpers/ContactInfo.h>
- #include <helpers/ChannelDetails.h>
- #include "NodePrefs.h"
- class DataStoreHost {
- public:
- virtual bool onContactLoaded(const ContactInfo& contact) =0;
- virtual bool getContactForSave(uint32_t idx, ContactInfo& contact) =0;
- virtual bool onChannelLoaded(uint8_t channel_idx, const ChannelDetails& ch) =0;
- virtual bool getChannelForSave(uint8_t channel_idx, ChannelDetails& ch) =0;
- };
- class DataStore {
- FILESYSTEM* _fs;
- FILESYSTEM* _fsExtra;
- mesh::RTCClock* _clock;
- IdentityStore identity_store;
- void loadPrefsInt(const char *filename, NodePrefs& prefs, double& node_lat, double& node_lon);
- #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
- void checkAdvBlobFile();
- #endif
- public:
- DataStore(FILESYSTEM& fs, mesh::RTCClock& clock);
- DataStore(FILESYSTEM& fs, FILESYSTEM& fsExtra, mesh::RTCClock& clock);
- void begin();
- bool formatFileSystem();
- FILESYSTEM* getPrimaryFS() const { return _fs; }
- FILESYSTEM* getSecondaryFS() const { return _fsExtra; }
- bool loadMainIdentity(mesh::LocalIdentity &identity);
- bool saveMainIdentity(const mesh::LocalIdentity &identity);
- void loadPrefs(NodePrefs& prefs, double& node_lat, double& node_lon);
- void savePrefs(const NodePrefs& prefs, double node_lat, double node_lon);
- void loadContacts(DataStoreHost* host);
- void saveContacts(DataStoreHost* host, bool (*filter)(const ContactInfo& c) = NULL);
- void loadChannels(DataStoreHost* host);
- void saveChannels(DataStoreHost* host);
- void migrateToSecondaryFS();
- uint8_t getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]);
- bool putBlobByKey(const uint8_t key[], int key_len, const uint8_t src_buf[], uint8_t len);
- bool deleteBlobByKey(const uint8_t key[], int key_len);
- File openRead(const char* filename);
- File openRead(FILESYSTEM* fs, const char* filename);
- bool removeFile(const char* filename);
- bool removeFile(FILESYSTEM* fs, const char* filename);
- uint32_t getStorageUsedKb() const;
- uint32_t getStorageTotalKb() const;
- private:
- FILESYSTEM* _getContactsChannelsFS() const { if (_fsExtra) return _fsExtra; return _fs;};
- };
|