William San Filippo created MYNEWT-707:
------------------------------------------
Summary: Add API to retrieve public and static random addresses
from chip specific locations
Key: MYNEWT-707
URL: https://issues.apache.org/jira/browse/MYNEWT-707
Project: Mynewt
Issue Type: New Feature
Components: Nimble
Affects Versions: v1_0_0_rel
Reporter: William San Filippo
Assignee: William San Filippo
Fix For: v1_1_0_rel
This ticket will add API to retrieve a public address and random static address
from "chip specific" locations. Here are the API and how they will work for the
nordic chips, which are currently the only supported BLE chips. This ticket
does not address storing/retrieving these values from flash or configuration
areas.
1) The ble_hw_get_public_addr function will do the following:
* If the user has overridden the default public address (the syscfg variable)
with a non-zero public address, that address will be returned by this function.
* If the default public address in the syscfg is all zero, the code will read
FICR and check if the device address type in the FICR is public. If so, it
means the nordic chip was factory programmed with a public address and this
will be used.
* If both of the above checks fail, the code will read UICR[0] and UICR[1] to
see if a public address has been programmed into the UICR. We are doing this to
make it easy for folks to program their development kits with public addresses
so they do not have to hardcode them. UICR[0] will contain the least
significant 4 bytes of the device address. UICR[1] will contain the most
significant two bytes. The upper 16 bits of this word should be set to 0. The
API will presume that this is a valid public device address as long as the
upper 16-bits of this 32-bit word are all zero. We will also check to see if
this is a valid public address (see below). If both UICR[0] and UICR[1] are
zero, this will not be considered a valid public address.
2) The ble_hw_get_static_addr() will do the following:
* Read the FICR to see if there is a random address in the FICR. This is the
default programming of the nrf51dk and nrf52dk. Unless you have them program a
public device address in the FICR, it will have a random address.
* If the chip does not have a random address the API returns -1.
* If the chip has a random address the upper two bits will be set to 1 (which
denotes random static address).
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)