ref: 9196c18d376d4f18c686bcfec8550f9c8659d5ea
src/libs/mynewt-nimble/docs/ble_hs/ble_hs_id.rst
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
NimBLE Host Identity Reference ------------------------------ Introduction ~~~~~~~~~~~~ The identity API provides facilities for querying and configuring your device's addresses. BLE's addressing scheme is quite involved; the summary that follows is only a brief introduction. BLE defines four address types: +---------------------------------+---------------------------------------------------------------------------------------------------+-------------+----------------------------------------------+ | Type | Description | Identity? | Configured with | +=================================+===================================================================================================+=============+==============================================+ | Public | Address assigned by manufacturer; the three most significant bytes form the manufacturer's OUI. | Yes | N/A; read from controller at startup. | +---------------------------------+---------------------------------------------------------------------------------------------------+-------------+----------------------------------------------+ | Static random | Randomly generated address. | Yes | *ble_hs_id_set_rnd()* | +---------------------------------+---------------------------------------------------------------------------------------------------+-------------+----------------------------------------------+ | Resolvable private (RPA) | Address randomly generated from an identity address and an identity resolving key (IRK). | No | N/A; generated by controller periodically. | +---------------------------------+---------------------------------------------------------------------------------------------------+-------------+----------------------------------------------+ | Non-resolvable private (NRPA) | Randomly generated address. | No | *ble_hs_id_set_rnd()* | +---------------------------------+---------------------------------------------------------------------------------------------------+-------------+----------------------------------------------+ Identity Addresses ^^^^^^^^^^^^^^^^^^ The third column in the above table indicates the *identity* property of each address type. An identity address never changes, and a device can be identified by one of its unique identity addresses. Non-identity addresses are used by devices supporting BLE privacy. A device using the privacy feature frequently changes its own address to a newly-generated non-identity address. By cycling its address, the device makes it impossible for eavesdroppers to track its location. A device can have up to two identity addresses at once: one public and one static random. As indicated in the above table, the public identity address cannot be configured; the static random identity address can be set by calling *ble_hs_id_set_rnd()*. The address type is selected on a per-GAP-procedure basis. Each time you initiate a GAP procedure, you indicate which address type the device should use for the duration of the procedure. Header ~~~~~~ .. code-block:: cpp #include "host/ble_hs.h" |