NVProperty generic key value store using the MCU flash area.

Dependents:   Turtle_RadioShuttle

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?

UserRevisionLine numberNew 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__