NVProperty generic key value store using the MCU flash area.

Dependents:   Turtle_RadioShuttle

Committer:
Helmut Tschemernjak
Date:
Wed Feb 13 10:44:06 2019 +0100
Revision:
14:96400e56a1ad
Parent:
4:eb6850e3bc21
Updated

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 #ifdef ARDUINO
Helmut Tschemernjak 1:3a8297ad8cd9 13 #include <Arduino.h>
Helmut Tschemernjak 1:3a8297ad8cd9 14 #elif __MBED__
Helmut Tschemernjak 1:3a8297ad8cd9 15 #include <mbed.h>
Helmut Tschemernjak 1:3a8297ad8cd9 16 #else
Helmut Tschemernjak 1:3a8297ad8cd9 17 #error "Unkown operating system"
Helmut Tschemernjak 1:3a8297ad8cd9 18 #endif
Helmut Tschemernjak 1:3a8297ad8cd9 19
Helmut Tschemernjak 1:3a8297ad8cd9 20
Helmut Tschemernjak 1:3a8297ad8cd9 21 #include <NVPropertyProviderInterface.h>
Helmut Tschemernjak 1:3a8297ad8cd9 22 #include <NVProperty_SRAM.h>
Helmut Tschemernjak 1:3a8297ad8cd9 23 #ifdef ARDUINO_ARCH_ESP32
Helmut Tschemernjak 1:3a8297ad8cd9 24 #include <NVProperty_ESP32NVS.h>
Helmut Tschemernjak 1:3a8297ad8cd9 25 #include <NVProperty_ESP32efuse.h>
Helmut Tschemernjak 1:3a8297ad8cd9 26 #elif defined(ARDUINO_SAMD_ZERO) || defined(ARDUINO_ARCH_SAMD)
Helmut Tschemernjak 1:3a8297ad8cd9 27 #include <NVProperty_D21Flash.h>
Helmut Tschemernjak 4:eb6850e3bc21 28 #elif __MBED__
Helmut Tschemernjak 1:3a8297ad8cd9 29 #include <mbed.h>
Helmut Tschemernjak 4:eb6850e3bc21 30 #include <NVProperty_MBEDFlash.h>
Helmut Tschemernjak 4:eb6850e3bc21 31 #ifdef TARGET_STM32L4
Helmut Tschemernjak 4:eb6850e3bc21 32 #include <NVProperty_L4OTP.h>
Helmut Tschemernjak 4:eb6850e3bc21 33 #endif
Helmut Tschemernjak 1:3a8297ad8cd9 34 #else
Helmut Tschemernjak 1:3a8297ad8cd9 35 #error "Unkown implementation"
Helmut Tschemernjak 1:3a8297ad8cd9 36 #endif
Helmut Tschemernjak 1:3a8297ad8cd9 37 #include <NVProperty.h>
Helmut Tschemernjak 1:3a8297ad8cd9 38
Helmut Tschemernjak 1:3a8297ad8cd9 39
Helmut Tschemernjak 1:3a8297ad8cd9 40 NVProperty::NVProperty(int propSizekB, bool erase)
Helmut Tschemernjak 1:3a8297ad8cd9 41 {
Helmut Tschemernjak 1:3a8297ad8cd9 42 _flash = NULL;
Helmut Tschemernjak 1:3a8297ad8cd9 43 _otp = NULL;
Helmut Tschemernjak 1:3a8297ad8cd9 44 _ram = new NVProperty_SRAM();
Helmut Tschemernjak 1:3a8297ad8cd9 45
Helmut Tschemernjak 1:3a8297ad8cd9 46 #ifdef ARDUINO_ARCH_ESP32
Helmut Tschemernjak 1:3a8297ad8cd9 47 _flash = new NVProperty_ESP32NVS();
Helmut Tschemernjak 1:3a8297ad8cd9 48 #elif defined(ARDUINO_SAMD_ZERO) || defined(ARDUINO_ARCH_SAMD)
Helmut Tschemernjak 1:3a8297ad8cd9 49 _flash = new NVProperty_D21Flash(propSizekB, erase);
Helmut Tschemernjak 4:eb6850e3bc21 50 #elif __MBED__
Helmut Tschemernjak 4:eb6850e3bc21 51 _flash = new NVProperty_MBEDFlash(propSizekB, erase);
Helmut Tschemernjak 1:3a8297ad8cd9 52 #else
Helmut Tschemernjak 1:3a8297ad8cd9 53 #error "unkown platform"
Helmut Tschemernjak 1:3a8297ad8cd9 54 #endif
Helmut Tschemernjak 1:3a8297ad8cd9 55
Helmut Tschemernjak 1:3a8297ad8cd9 56 #ifdef ARDUINO_ARCH_ESP32
Helmut Tschemernjak 1:3a8297ad8cd9 57 _otp = new NVProperty_ESP32efuse();
Helmut Tschemernjak 1:3a8297ad8cd9 58 #elif TARGET_STM32L4
Helmut Tschemernjak 1:3a8297ad8cd9 59 _otp = new NVProperty_L4OTP();
Helmut Tschemernjak 1:3a8297ad8cd9 60 #endif
Helmut Tschemernjak 1:3a8297ad8cd9 61 _allowWrite = false;
Helmut Tschemernjak 1:3a8297ad8cd9 62 _didOpen = false;
Helmut Tschemernjak 1:3a8297ad8cd9 63 }
Helmut Tschemernjak 1:3a8297ad8cd9 64
Helmut Tschemernjak 1:3a8297ad8cd9 65 NVProperty::~NVProperty()
Helmut Tschemernjak 1:3a8297ad8cd9 66 {
Helmut Tschemernjak 1:3a8297ad8cd9 67 if (_ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 68 delete _ram;
Helmut Tschemernjak 1:3a8297ad8cd9 69 }
Helmut Tschemernjak 1:3a8297ad8cd9 70 if (_flash)
Helmut Tschemernjak 1:3a8297ad8cd9 71 delete _flash;
Helmut Tschemernjak 1:3a8297ad8cd9 72 if (_otp)
Helmut Tschemernjak 1:3a8297ad8cd9 73 delete _otp;
Helmut Tschemernjak 1:3a8297ad8cd9 74 }
Helmut Tschemernjak 1:3a8297ad8cd9 75
Helmut Tschemernjak 1:3a8297ad8cd9 76
Helmut Tschemernjak 1:3a8297ad8cd9 77 int
Helmut Tschemernjak 1:3a8297ad8cd9 78 NVProperty::GetProperty(int key, int defaultValue)
Helmut Tschemernjak 1:3a8297ad8cd9 79 {
Helmut Tschemernjak 1:3a8297ad8cd9 80 int res;
Helmut Tschemernjak 1:3a8297ad8cd9 81
Helmut Tschemernjak 1:3a8297ad8cd9 82 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 83 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 84
Helmut Tschemernjak 1:3a8297ad8cd9 85 if (_ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 86 res = _ram->GetProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 87 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 88 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 89 }
Helmut Tschemernjak 1:3a8297ad8cd9 90 if (_flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 91 res = _flash->GetProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 92 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 93 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 94 }
Helmut Tschemernjak 1:3a8297ad8cd9 95 if (_otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 96 res = _otp->GetProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 97 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 98 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 99 }
Helmut Tschemernjak 1:3a8297ad8cd9 100 return defaultValue;
Helmut Tschemernjak 1:3a8297ad8cd9 101 }
Helmut Tschemernjak 1:3a8297ad8cd9 102
Helmut Tschemernjak 1:3a8297ad8cd9 103
Helmut Tschemernjak 1:3a8297ad8cd9 104 int64_t
Helmut Tschemernjak 1:3a8297ad8cd9 105 NVProperty::GetProperty64(int key, int64_t defaultValue)
Helmut Tschemernjak 1:3a8297ad8cd9 106 {
Helmut Tschemernjak 1:3a8297ad8cd9 107 int64_t res;
Helmut Tschemernjak 1:3a8297ad8cd9 108
Helmut Tschemernjak 1:3a8297ad8cd9 109 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 110 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 111
Helmut Tschemernjak 1:3a8297ad8cd9 112 if (_ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 113 res = _ram->GetProperty64(key);
Helmut Tschemernjak 1:3a8297ad8cd9 114 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 115 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 116 }
Helmut Tschemernjak 1:3a8297ad8cd9 117 if (_flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 118 res = _flash->GetProperty64(key);
Helmut Tschemernjak 1:3a8297ad8cd9 119 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 120 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 121 }
Helmut Tschemernjak 1:3a8297ad8cd9 122 if (_otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 123 res = _otp->GetProperty64(key);
Helmut Tschemernjak 1:3a8297ad8cd9 124 if (res != NVP_ENOENT)
Helmut Tschemernjak 1:3a8297ad8cd9 125 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 126 }
Helmut Tschemernjak 1:3a8297ad8cd9 127 return defaultValue;
Helmut Tschemernjak 1:3a8297ad8cd9 128 }
Helmut Tschemernjak 1:3a8297ad8cd9 129
Helmut Tschemernjak 1:3a8297ad8cd9 130 const char *
Helmut Tschemernjak 1:3a8297ad8cd9 131 NVProperty::GetProperty(int key, const char *defaultValue)
Helmut Tschemernjak 1:3a8297ad8cd9 132 {
Helmut Tschemernjak 1:3a8297ad8cd9 133 const char *res;
Helmut Tschemernjak 1:3a8297ad8cd9 134
Helmut Tschemernjak 1:3a8297ad8cd9 135 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 136 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 137
Helmut Tschemernjak 1:3a8297ad8cd9 138 if (_ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 139 res = _ram->GetPropertyStr(key);
Helmut Tschemernjak 1:3a8297ad8cd9 140 if (res != NULL)
Helmut Tschemernjak 1:3a8297ad8cd9 141 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 142 }
Helmut Tschemernjak 1:3a8297ad8cd9 143 if (_flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 144 res = _flash->GetPropertyStr(key);
Helmut Tschemernjak 1:3a8297ad8cd9 145 if (res != NULL)
Helmut Tschemernjak 1:3a8297ad8cd9 146 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 147 }
Helmut Tschemernjak 1:3a8297ad8cd9 148 if (_otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 149 res = _otp->GetPropertyStr(key);
Helmut Tschemernjak 1:3a8297ad8cd9 150 if (res != NULL)
Helmut Tschemernjak 1:3a8297ad8cd9 151 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 152 }
Helmut Tschemernjak 1:3a8297ad8cd9 153 if (res != NULL)
Helmut Tschemernjak 1:3a8297ad8cd9 154 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 155
Helmut Tschemernjak 1:3a8297ad8cd9 156 return defaultValue;
Helmut Tschemernjak 1:3a8297ad8cd9 157 }
Helmut Tschemernjak 1:3a8297ad8cd9 158
Helmut Tschemernjak 1:3a8297ad8cd9 159 int
Helmut Tschemernjak 1:3a8297ad8cd9 160 NVProperty::GetProperty(int key, void *buffer, int *size)
Helmut Tschemernjak 1:3a8297ad8cd9 161 {
Helmut Tschemernjak 1:3a8297ad8cd9 162 int res;
Helmut Tschemernjak 1:3a8297ad8cd9 163 int maxsize = *size;
Helmut Tschemernjak 1:3a8297ad8cd9 164
Helmut Tschemernjak 1:3a8297ad8cd9 165 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 166 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 167
Helmut Tschemernjak 1:3a8297ad8cd9 168 if (_ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 169 res = _ram->GetPropertyBlob(key, buffer, &maxsize);
Helmut Tschemernjak 1:3a8297ad8cd9 170 if (res == NVP_OK)
Helmut Tschemernjak 1:3a8297ad8cd9 171 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 172 }
Helmut Tschemernjak 1:3a8297ad8cd9 173 if (_flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 174 res = _flash->GetPropertyBlob(key, buffer, &maxsize);
Helmut Tschemernjak 1:3a8297ad8cd9 175 if (res == NVP_OK)
Helmut Tschemernjak 1:3a8297ad8cd9 176 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 177 }
Helmut Tschemernjak 1:3a8297ad8cd9 178 if (_otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 179 res = _otp->GetPropertyBlob(key, buffer, &maxsize);
Helmut Tschemernjak 1:3a8297ad8cd9 180 if (res == NVP_OK)
Helmut Tschemernjak 1:3a8297ad8cd9 181 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 182 }
Helmut Tschemernjak 1:3a8297ad8cd9 183
Helmut Tschemernjak 1:3a8297ad8cd9 184 return NVP_ENOENT;
Helmut Tschemernjak 1:3a8297ad8cd9 185 }
Helmut Tschemernjak 1:3a8297ad8cd9 186
Helmut Tschemernjak 1:3a8297ad8cd9 187
Helmut Tschemernjak 1:3a8297ad8cd9 188 int
Helmut Tschemernjak 1:3a8297ad8cd9 189 NVProperty::SetProperty(int key, NVPType ptype, int64_t value, NVPStore store)
Helmut Tschemernjak 1:3a8297ad8cd9 190 {
Helmut Tschemernjak 1:3a8297ad8cd9 191 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 192
Helmut Tschemernjak 1:3a8297ad8cd9 193 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 194 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 195
Helmut Tschemernjak 1:3a8297ad8cd9 196 if (!_allowWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 197 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 198
Helmut Tschemernjak 1:3a8297ad8cd9 199 if (store == S_RAM && _ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 200 res = _ram->SetProperty(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 201 } else if (store == S_FLASH && _flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 202 res = _flash->SetProperty(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 203 } else if (store == S_OTP && _otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 204 res = _otp->SetProperty(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 205 } else {
Helmut Tschemernjak 1:3a8297ad8cd9 206 return NVP_NO_STORE;
Helmut Tschemernjak 1:3a8297ad8cd9 207 }
Helmut Tschemernjak 1:3a8297ad8cd9 208 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 209 }
Helmut Tschemernjak 1:3a8297ad8cd9 210
Helmut Tschemernjak 1:3a8297ad8cd9 211
Helmut Tschemernjak 1:3a8297ad8cd9 212 int
Helmut Tschemernjak 1:3a8297ad8cd9 213 NVProperty::SetProperty(int key, NVPType ptype, const char *value, NVPStore store)
Helmut Tschemernjak 1:3a8297ad8cd9 214 {
Helmut Tschemernjak 1:3a8297ad8cd9 215 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 216
Helmut Tschemernjak 1:3a8297ad8cd9 217 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 218 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 219
Helmut Tschemernjak 1:3a8297ad8cd9 220 if (!_allowWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 221 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 222
Helmut Tschemernjak 1:3a8297ad8cd9 223 if (store == S_RAM && _ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 224 res = _ram->SetPropertyStr(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 225 } else if (store == S_FLASH && _flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 226 res = _flash->SetPropertyStr(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 227 } else if (store == S_OTP && _otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 228 res = _otp->SetPropertyStr(key, value, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 229 } else {
Helmut Tschemernjak 1:3a8297ad8cd9 230 return NVP_NO_STORE;
Helmut Tschemernjak 1:3a8297ad8cd9 231 }
Helmut Tschemernjak 1:3a8297ad8cd9 232
Helmut Tschemernjak 1:3a8297ad8cd9 233 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 234 }
Helmut Tschemernjak 1:3a8297ad8cd9 235
Helmut Tschemernjak 1:3a8297ad8cd9 236 // NVProperty_SRAM::SetPropertyBlob(int key, const void *blob, int size, int type)
Helmut Tschemernjak 1:3a8297ad8cd9 237
Helmut Tschemernjak 1:3a8297ad8cd9 238
Helmut Tschemernjak 1:3a8297ad8cd9 239 int
Helmut Tschemernjak 1:3a8297ad8cd9 240 NVProperty::SetProperty(int key, NVPType ptype, const void *blob, int length, NVPStore store)
Helmut Tschemernjak 1:3a8297ad8cd9 241 {
Helmut Tschemernjak 1:3a8297ad8cd9 242 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 243
Helmut Tschemernjak 1:3a8297ad8cd9 244 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 245 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 246
Helmut Tschemernjak 1:3a8297ad8cd9 247 if (!_allowWrite) {
Helmut Tschemernjak 1:3a8297ad8cd9 248 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 249 }
Helmut Tschemernjak 1:3a8297ad8cd9 250
Helmut Tschemernjak 1:3a8297ad8cd9 251 if (store == S_RAM && _ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 252 res = _ram->SetPropertyBlob(key, blob, length, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 253 } else if (store == S_FLASH && _flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 254 res = _flash->SetPropertyBlob(key, blob, length, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 255 } else if (store == S_OTP && _otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 256 res = _otp->SetPropertyBlob(key, blob, length, ptype);
Helmut Tschemernjak 1:3a8297ad8cd9 257 } else {
Helmut Tschemernjak 1:3a8297ad8cd9 258 return NVP_NO_STORE;
Helmut Tschemernjak 1:3a8297ad8cd9 259 }
Helmut Tschemernjak 1:3a8297ad8cd9 260
Helmut Tschemernjak 1:3a8297ad8cd9 261 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 262 }
Helmut Tschemernjak 1:3a8297ad8cd9 263
Helmut Tschemernjak 1:3a8297ad8cd9 264 int
Helmut Tschemernjak 1:3a8297ad8cd9 265 NVProperty::EraseProperty(int key, NVPStore store)
Helmut Tschemernjak 1:3a8297ad8cd9 266 {
Helmut Tschemernjak 1:3a8297ad8cd9 267 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 268 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 269
Helmut Tschemernjak 1:3a8297ad8cd9 270 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 271
Helmut Tschemernjak 1:3a8297ad8cd9 272 if (!_allowWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 273 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 274
Helmut Tschemernjak 1:3a8297ad8cd9 275 if (store == S_RAM && _ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 276 res = _ram->EraseProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 277 } else if (store == S_FLASH && _flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 278 res = _flash->EraseProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 279 } else if (store == S_OTP && _otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 280 res = _otp->EraseProperty(key);
Helmut Tschemernjak 1:3a8297ad8cd9 281 } else {
Helmut Tschemernjak 1:3a8297ad8cd9 282 return NVP_NO_STORE;
Helmut Tschemernjak 1:3a8297ad8cd9 283 }
Helmut Tschemernjak 1:3a8297ad8cd9 284
Helmut Tschemernjak 1:3a8297ad8cd9 285 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 286 }
Helmut Tschemernjak 1:3a8297ad8cd9 287
Helmut Tschemernjak 1:3a8297ad8cd9 288 int
Helmut Tschemernjak 1:3a8297ad8cd9 289 NVProperty::ReorgProperties(NVPStore store)
Helmut Tschemernjak 1:3a8297ad8cd9 290 {
Helmut Tschemernjak 1:3a8297ad8cd9 291 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 292
Helmut Tschemernjak 1:3a8297ad8cd9 293 if (!_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 294 OpenPropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 295
Helmut Tschemernjak 1:3a8297ad8cd9 296 if (!_allowWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 297 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 298
Helmut Tschemernjak 1:3a8297ad8cd9 299 if (store == S_RAM && _ram) {
Helmut Tschemernjak 1:3a8297ad8cd9 300 res = _ram->ReorgProperties();
Helmut Tschemernjak 1:3a8297ad8cd9 301 } else if (store == S_FLASH && _flash) {
Helmut Tschemernjak 1:3a8297ad8cd9 302 res = _flash->ReorgProperties();
Helmut Tschemernjak 1:3a8297ad8cd9 303 } else if (store == S_OTP && _otp) {
Helmut Tschemernjak 1:3a8297ad8cd9 304 res = _otp->ReorgProperties();
Helmut Tschemernjak 1:3a8297ad8cd9 305 } else {
Helmut Tschemernjak 1:3a8297ad8cd9 306 return NVP_NO_STORE;
Helmut Tschemernjak 1:3a8297ad8cd9 307 }
Helmut Tschemernjak 1:3a8297ad8cd9 308
Helmut Tschemernjak 1:3a8297ad8cd9 309 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 310 }
Helmut Tschemernjak 1:3a8297ad8cd9 311
Helmut Tschemernjak 1:3a8297ad8cd9 312 int
Helmut Tschemernjak 1:3a8297ad8cd9 313 NVProperty::OpenPropertyStore(bool forWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 314 {
Helmut Tschemernjak 1:3a8297ad8cd9 315 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 316
Helmut Tschemernjak 1:3a8297ad8cd9 317 if (_didOpen) {
Helmut Tschemernjak 1:3a8297ad8cd9 318 if (_ram)
Helmut Tschemernjak 1:3a8297ad8cd9 319 _ram->ClosePropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 320 if (_flash)
Helmut Tschemernjak 1:3a8297ad8cd9 321 _flash->ClosePropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 322 if (_otp)
Helmut Tschemernjak 1:3a8297ad8cd9 323 _otp->ClosePropertyStore();
Helmut Tschemernjak 1:3a8297ad8cd9 324 }
Helmut Tschemernjak 1:3a8297ad8cd9 325
Helmut Tschemernjak 1:3a8297ad8cd9 326 if (_ram)
Helmut Tschemernjak 1:3a8297ad8cd9 327 _ram->OpenPropertyStore(forWrite);
Helmut Tschemernjak 1:3a8297ad8cd9 328 if (_flash)
Helmut Tschemernjak 1:3a8297ad8cd9 329 res = _flash->OpenPropertyStore(forWrite);
Helmut Tschemernjak 1:3a8297ad8cd9 330 if (_otp)
Helmut Tschemernjak 1:3a8297ad8cd9 331 _otp->OpenPropertyStore(forWrite);
Helmut Tschemernjak 1:3a8297ad8cd9 332 _didOpen = true;
Helmut Tschemernjak 1:3a8297ad8cd9 333 if(forWrite)
Helmut Tschemernjak 1:3a8297ad8cd9 334 _allowWrite = true;
Helmut Tschemernjak 1:3a8297ad8cd9 335
Helmut Tschemernjak 1:3a8297ad8cd9 336
Helmut Tschemernjak 1:3a8297ad8cd9 337 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 338 }
Helmut Tschemernjak 1:3a8297ad8cd9 339
Helmut Tschemernjak 1:3a8297ad8cd9 340 int
Helmut Tschemernjak 1:3a8297ad8cd9 341 NVProperty::ClosePropertyStore(bool flush)
Helmut Tschemernjak 1:3a8297ad8cd9 342 {
Helmut Tschemernjak 1:3a8297ad8cd9 343 int res = NVP_OK;
Helmut Tschemernjak 1:3a8297ad8cd9 344
Helmut Tschemernjak 1:3a8297ad8cd9 345 if (_didOpen)
Helmut Tschemernjak 1:3a8297ad8cd9 346 return NVP_NO_PERM;
Helmut Tschemernjak 1:3a8297ad8cd9 347
Helmut Tschemernjak 1:3a8297ad8cd9 348 if (_ram)
Helmut Tschemernjak 1:3a8297ad8cd9 349 _ram->ClosePropertyStore(flush);
Helmut Tschemernjak 1:3a8297ad8cd9 350 if (_flash)
Helmut Tschemernjak 1:3a8297ad8cd9 351 res = _flash->ClosePropertyStore(flush);
Helmut Tschemernjak 1:3a8297ad8cd9 352 if (_otp)
Helmut Tschemernjak 1:3a8297ad8cd9 353 _otp->ClosePropertyStore(flush);
Helmut Tschemernjak 1:3a8297ad8cd9 354 return res;
Helmut Tschemernjak 1:3a8297ad8cd9 355 }
Helmut Tschemernjak 1:3a8297ad8cd9 356
Helmut Tschemernjak 1:3a8297ad8cd9 357