document central_device_db interface

This commit is contained in:
matthias.ringwald@gmail.com 2014-01-08 15:23:52 +00:00
parent 966ef2170d
commit 284ffa8374

View File

@ -38,26 +38,73 @@
#include <btstack/utils.h>
/**
A Central Device DB is only required for signed writes
Per bonded device, it stores the Identity Resolving Key (IRK), the Connection Signature Resolving Key (CSRK)
and the last used counter
The IRK is necessary to identify a device that uses private addresses
The CSRK is used to generate the signatur on the remote device and is needed to verify the signature itself
The Counter is necessary to prevent reply attacks
*/
// Central Device db interface
/**
* @brief init
*/
void central_device_db_init();
// @returns index if successful, -1 otherwise
/**
* @brief add device to db
* @param addr_type, address of the device
* @param irk and csrk of the device
* @returns index if successful, -1 otherwise
*/
int central_device_db_add(int addr_type, bd_addr_t addr, sm_key_t irk, sm_key_t csrk);
// @returns number of device in db
/**
* @brief get number of devices in db for enumeration
* @returns number of device in db
*/
int central_device_db_count(void);
// get device information: addr type and address
void central_device_db_info(int index, int * addr_type, bd_addr_t addr, sm_key_t csrk);
/**
* @brief get device information: addr type and address needed to identify device
* @param index
* @param addr_type, address of the device as output
* @param irk of the device
*/
void central_device_db_info(int index, int * addr_type, bd_addr_t addr, sm_key_t irk);
// get signature key
/**
* @brief get signing key for this device
* @param index
* @param signing key as output
*/
void central_device_db_csrk(int index, sm_key_t csrk);
// query last used/seen signing counter
/**
* @brief query last used/seen signing counter
* @param index
* @returns next expected counter, 0 after devices was added
*/
uint32_t central_device_db_counter_get(int index);
// update signing counter
/**
* @brief update signing counter
* @param index
* @param counter to store
*/
void central_device_db_counter_set(int index, uint32_t counter);
// free device
void central_device_db_remove(int index);
/**
* @brief free device
* @param index
*/
void central_device_db_remove(int index);