NVProperty generic key value store using the MCU flash area.

Dependents:   Turtle_RadioShuttle

Committer:
Helmut Tschemernjak
Date:
Thu Jan 24 14:28:11 2019 +0100
Revision:
1:3a8297ad8cd9
Child:
4:eb6850e3bc21
Added new files

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