mirror of https://github.com/ARMmbed/mbed-os.git
BLE: Inject random static address during reset sequence.
parent
a36b04fde5
commit
20e0cd1b0e
|
|
@ -297,6 +297,21 @@ void NRFCordioHCIDriver::start_reset_sequence()
|
|||
CordioHCIDriver::start_reset_sequence();
|
||||
}
|
||||
|
||||
bool NRFCordioHCIDriver::get_random_static_address(ble::address_t& address)
|
||||
{
|
||||
/* Load address from nRF configuration. */
|
||||
uint64_t devAddr = (((uint64_t)NRF_FICR->DEVICEADDR[0]) << 0) |
|
||||
(((uint64_t)NRF_FICR->DEVICEADDR[1]) << 32);
|
||||
|
||||
for (size_t i = 0; i < address.size(); ++i) {
|
||||
address[i] = devAddr >> (i * 8);
|
||||
}
|
||||
|
||||
address[5] |= 0xC0; /* cf. "Static Address" (Vol C, Part 3, section 10.8.1) */
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver() {
|
||||
static NRFCordioHCITransportDriver transport_driver;
|
||||
|
||||
|
|
@ -328,6 +343,4 @@ void PlatformLoadBdAddress(uint8_t *pDevAddr)
|
|||
pDevAddr[i] = devAddr >> (i * 8);
|
||||
i++;
|
||||
}
|
||||
|
||||
pDevAddr[5] |= 0xC0; /* cf. "Static Address" (Vol C, Part 3, section 10.8.1) */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,11 @@ public:
|
|||
*/
|
||||
//virtual void handle_reset_sequence(uint8_t *msg);
|
||||
|
||||
/**
|
||||
* @copydoc cordio::CordioHCIDriver::get_random_static_address
|
||||
*/
|
||||
virtual bool get_random_static_address(ble::address_t& address);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Initialize the chip.
|
||||
|
|
|
|||
Loading…
Reference in New Issue