17 #ifndef MBED_TDBSTORE_H    18 #define MBED_TDBSTORE_H    22 #include "kvstore/KVStore.h"    23 #include "blockdevice/BlockDevice.h"    24 #include "blockdevice/BufferedBlockDevice.h"    25 #include "PlatformMutex.h"    26 #include "mbed_error.h"    38     static const uint32_t RESERVED_AREA_SIZE = 64;
   101     virtual int set(
const char *key, 
const void *buffer, 
size_t size, uint32_t create_flags);
   120     virtual int get(
const char *key, 
void *buffer, 
size_t buffer_size, 
size_t *actual_size = NULL,
   152     virtual int remove(
const char *key);
   173     virtual int set_start(set_handle_t *handle, 
const char *key, 
size_t final_data_size, uint32_t create_flags);
   189     virtual int set_add_data(set_handle_t handle, 
const void *value_data, 
size_t data_size);
   214     virtual int iterator_open(iterator_t *it, 
const char *prefix = NULL);
   232     virtual int iterator_next(iterator_t it, 
char *key, 
size_t key_size);
   260     virtual int reserved_data_set(
const void *reserved_data, 
size_t reserved_data_buf_size);
   277     virtual int reserved_data_get(
void *reserved_data, 
size_t reserved_data_buf_size,
   278                                   size_t *actual_data_size = 0);
   280 #if !defined(DOXYGEN_ONLY)   286     } tdbstore_area_data_t;
   288     static const int _num_areas = 2;
   289     static const int _max_open_iterators = 16;
   298     uint32_t _free_space_offset;
   299     uint32_t _master_record_offset;
   300     uint32_t _master_record_size;
   301     bool _is_initialized;
   303     uint16_t _active_area_version;
   305     tdbstore_area_data_t _area_params[_num_areas];
   308     size_t _work_buf_size;
   310     void *_inc_set_handle;
   311     void *_iterator_table[_max_open_iterators];
   323     int read_area(uint8_t area, uint32_t offset, uint32_t size, 
void *buf);
   335     int write_area(uint8_t area, uint32_t offset, uint32_t size, 
const void *buf);
   346     int reset_area(uint8_t area);
   357     int erase_area(uint8_t area, uint32_t offset, uint32_t size);
   362     void calc_area_params();
   384     int read_record(uint8_t area, uint32_t offset, 
char *key,
   385                     void *data_buf, uint32_t data_buf_size,
   386                     uint32_t &actual_data_size, 
size_t data_offset, 
bool copy_key,
   387                     bool copy_data, 
bool check_expected_key, 
bool calc_hash,
   388                     uint32_t &hash, uint32_t &flags, uint32_t &next_offset);
   399     int write_master_record(uint8_t area, uint16_t version, uint32_t &next_offset);
   411     int copy_record(uint8_t from_area, uint32_t from_offset, uint32_t to_offset,
   412                     uint32_t &to_next_offset);
   419     int garbage_collection();
   429     uint32_t record_size(
const char *key, uint32_t data_size);
   442     int find_record(uint8_t area, 
const char *key, uint32_t &offset,
   443                     uint32_t &ram_table_ind, uint32_t &hash);
   456     int do_get(
const char *key, 
bool copy_data,
   457                void *data_buf, uint32_t data_buf_size, uint32_t &actual_data_size,
   470     int do_set(
const char *key, 
const void *data_buf, uint32_t data_buf_size, uint32_t flags);
   477     int build_ram_table();
   486     int increment_max_keys(
void **ram_table = 0);
   498     void offset_in_erase_unit(uint8_t area, uint32_t offset, uint32_t &offset_from_start,
   499                               uint32_t &dist_to_end);
   512     int check_erase_before_write(uint8_t area, uint32_t offset, uint32_t size,
   513                                  bool force_check = 
false);
   531     int do_reserved_data_get(
void *reserved_data, 
size_t reserved_data_buf_size,
   532                              size_t *actual_data_size = 0, 
void *copy_trailer = 0);
   542     void update_all_iterators(
bool added, uint32_t ram_table_ind);
 virtual int set_finalize(set_handle_t handle)
Finalize an incremental KVStore set sequence. 
virtual ~TDBStore()
Class destructor. 
A hardware device capable of writing and reading blocks. 
TDBStore(BlockDevice *bd)
Class constructor. 
virtual int set_start(set_handle_t *handle, const char *key, size_t final_data_size, uint32_t create_flags)
Start an incremental TDBStore set sequence. 
virtual int init()
Initialize TDBStore. 
virtual int iterator_next(iterator_t it, char *key, size_t key_size)
Get next key in iteration. 
virtual int iterator_open(iterator_t *it, const char *prefix=NULL)
Start an iteration over KVStore keys. 
virtual int set_add_data(set_handle_t handle, const void *value_data, size_t data_size)
Add data to incremental TDBStore set sequence. 
Block device for allowing minimal read and program sizes (of 1) for the underlying BD...
virtual int deinit()
Deinitialize TDBStore, release and free resources. 
virtual int get_info(const char *key, info_t *info)
Get information of a given key. 
virtual int reset()
Reset TDBStore contents (clear all keys) and reserved data. 
virtual int reserved_data_set(const void *reserved_data, size_t reserved_data_buf_size)
Set data in reserved area, which is a special location for special data, such as ROT. 
virtual int iterator_close(iterator_t it)
Close iteration. 
virtual int reserved_data_get(void *reserved_data, size_t reserved_data_buf_size, size_t *actual_data_size=0)
Get data from reserved area, which is a special location for special data, such as ROT...