NVProperty generic key value store using the MCU flash area.
Dependents: Turtle_RadioShuttle
NVProperty_SRAM.h@16:24a9d3ecee7b, 2019-04-22 (annotated)
- Committer:
- Helmut Tschemernjak
- Date:
- Mon Apr 22 12:29:12 2019 +0200
- Revision:
- 16:24a9d3ecee7b
- Parent:
- 1:3a8297ad8cd9
Added NTP to the editor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Helmut Tschemernjak | 1:3a8297ad8cd9 | 1 | /* |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 2 | * This is an unpublished work copyright |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 3 | * (c) 2019 Helmut Tschemernjak |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 4 | * 30826 Garbsen (Hannover) Germany |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 5 | * |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 6 | * |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 7 | * Use is granted to registered RadioShuttle licensees only. |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 8 | * Licensees must own a valid serial number and product code. |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 9 | * Details see: www.radioshuttle.de |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 10 | */ |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 11 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 12 | #ifndef __NVSProperty_SRAM__ |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 13 | #define __NVSProperty_SRAM__ |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 14 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 15 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 16 | #ifdef ARDUINO |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 17 | #undef min |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 18 | #undef max |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 19 | #undef map |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 20 | #endif |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 21 | #include <map> |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 22 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 23 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 24 | class NVProperty_SRAM : public NVPropertyProviderInterface { |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 25 | public: |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 26 | NVProperty_SRAM(); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 27 | ~NVProperty_SRAM(); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 28 | virtual int GetProperty(int key); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 29 | virtual int64_t GetProperty64(int key); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 30 | virtual const char *GetPropertyStr(int key); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 31 | virtual int GetPropertyBlob(int key, const void *blob, int *size); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 32 | virtual int SetProperty(int key, int64_t value, int type); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 33 | virtual int SetPropertyStr(int key, const char *value, int type); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 34 | virtual int SetPropertyBlob(int key, const void *blob, int size, int type); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 35 | virtual int EraseProperty(int key); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 36 | virtual int ReorgProperties(void); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 37 | virtual int OpenPropertyStore(bool forWrite = false); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 38 | virtual int ClosePropertyStore(bool flush = false); |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 39 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 40 | private: |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 41 | struct PropertyEntry { |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 42 | int key; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 43 | uint8_t type; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 44 | uint8_t size; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 45 | union { |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 46 | int val32; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 47 | int64_t val64; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 48 | void *data; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 49 | char *str; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 50 | }; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 51 | }; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 52 | std::map<int, PropertyEntry> _props; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 53 | }; |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 54 | |
Helmut Tschemernjak | 1:3a8297ad8cd9 | 55 | #endif // __NVSProperty_SRAM__ |