17 #ifndef MBED_NVSTORE_H    18 #define MBED_NVSTORE_H    22 #undef NVSTORE_ENABLED    23 #define NVSTORE_ENABLED 0    26 #if (NVSTORE_ENABLED) || defined(DOXYGEN_ONLY)    29 #include "platform/NonCopyable.h"    30 #include "PlatformMutex.h"    35     NVSTORE_READ_ERROR             = -1,
    36     NVSTORE_WRITE_ERROR            = -2,
    37     NVSTORE_NOT_FOUND              = -3,
    38     NVSTORE_DATA_CORRUPT           = -4,
    39     NVSTORE_BAD_VALUE              = -5,
    40     NVSTORE_BUFF_TOO_SMALL         = -6,
    41     NVSTORE_FLASH_AREA_TOO_SMALL   = -7,
    42     NVSTORE_OS_ERROR               = -8,
    43     NVSTORE_ALREADY_EXISTS         = -9,
    44     NVSTORE_NO_FREE_KEY            = -10,
    48     NVSTORE_FIRST_PREDEFINED_KEY        = 0,
    52     NVSTORE_DEVICEKEY_KEY               = 4,
    54     NVSTORE_LAST_PREDEFINED_KEY         = 15,
    55     NVSTORE_NUM_PREDEFINED_KEYS
    56 } nvstore_predefined_keys_e;
    59     NVSTORE_UNSPECIFIED_OWNER           = 0,
    61     NVSTORE_MAX_OWNERS                  = 16
    64 #ifndef NVSTORE_MAX_KEYS    65 #define NVSTORE_MAX_KEYS ((uint16_t)NVSTORE_NUM_PREDEFINED_KEYS)    69 #define NVSTORE_NUM_AREAS        2   135     int get(uint16_t key, uint16_t buf_size, 
void *buf, uint16_t &actual_size);
   167     int set(uint16_t key, uint16_t buf_size, 
const void *buf);
   179     int allocate_key(uint16_t &key, uint8_t owner = NVSTORE_UNSPECIFIED_OWNER);
   208     int set_once(uint16_t key, uint16_t buf_size, 
const void *buf);
   223     int remove(uint16_t key);
   279     } nvstore_area_data_t;
   282     uint32_t _init_attempts;
   283     uint8_t _active_area;
   285     uint16_t _active_area_version;
   286     uint32_t _free_space_offset;
   289     uint32_t *_offset_by_key;
   290     nvstore_area_data_t _flash_area_params[NVSTORE_NUM_AREAS];
   291     static nvstore_area_data_t initial_area_params[NVSTORE_NUM_AREAS];
   293     uint32_t _min_prog_size;
   309     int flash_read_area(uint8_t area, uint32_t offset, uint32_t size, 
void *buf);
   321     int flash_write_area(uint8_t area, uint32_t offset, uint32_t size, 
const void *buf);
   330     int flash_erase_area(uint8_t area);
   336     void calc_validate_area_params();
   346     int calc_empty_space(uint8_t area, uint32_t &offset);
   365     int read_record(uint8_t area, uint32_t offset, uint16_t buf_size, 
void *buf,
   366                     uint16_t &actual_size, 
int validate_only, 
int &valid,
   367                     uint16_t &key, uint16_t &flags, uint8_t &owner, uint32_t &next_offset);
   383     int write_record(uint8_t area, uint32_t offset, uint16_t key, uint16_t flags, uint8_t owner,
   384                      uint32_t data_size, 
const void *data_buf, uint32_t &next_offset);
   395     int write_master_record(uint8_t area, uint16_t version, uint32_t &next_offset);
   407     int copy_record(uint8_t from_area, uint32_t from_offset, uint32_t to_offset,
   408                     uint32_t &next_offset);
   423     int garbage_collection(uint16_t key, uint16_t flags, uint8_t owner, uint16_t buf_size, 
const void *buf, uint16_t num_keys);
   436     int do_get(uint16_t key, uint16_t buf_size, 
void *buf, uint16_t &actual_size,
   449     int do_set(uint16_t key, uint16_t buf_size, 
const void *buf, uint16_t flags);
   454 #endif // NVSTORE_ENABLED int set_once(uint16_t key, uint16_t buf_size, const void *buf)
Programs one item of data on Flash, given key, allowing no consequent sets to this key...
uint16_t get_max_keys() const 
Returns number of keys. 
void set_max_keys(uint16_t num_keys)
Set number of keys. 
int allocate_key(uint16_t &key, uint8_t owner=NVSTORE_UNSPECIFIED_OWNER)
Allocate a free key (to be used later in a set operation). 
int free_all_keys_by_owner(uint8_t owner)
Free all allocated keys that belong to a specific owner. 
uint16_t get_max_possible_keys()
Return maximal possible number of keys (in this flash configuration). 
int get_area_params(uint8_t area, uint32_t &address, size_t &size)
Return address and size of an NVStore area. 
Prevents generation of copy constructor and copy assignment operator in derived classes. 
size_t size()
Return NVStore size (area size). 
int deinit()
Deinitializes NVStore component. 
int reset()
Reset Flash NVStore areas. 
int get_item_size(uint16_t key, uint16_t &actual_size)
Returns size of the data programmed on Flash, given key. 
static NVStore & get_instance()
As a singleton, return the single instance of the class. 
int init()
Initializes NVStore component.