8000 extmod/nimble: When getting BLE MAC try public address if random fails. · yazici/micropython@7bf6256 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7bf6256

Browse files
committed
extmod/nimble: When getting BLE MAC try public address if random fails.
This is needed for BLE.config('mac') to work on esp32.
1 parent dd0bc26 commit 7bf6256

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

extmod/nimble/modbluetooth_nimble.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,14 @@ bool mp_bluetooth_is_active(void) {
339339

340340
void mp_bluetooth_get_device_addr(uint8_t *addr) {
341341
#if MICROPY_PY_BLUETOOTH_RANDOM_ADDR
342-
ble_hs_id_copy_addr(BLE_ADDR_RANDOM, addr, NULL);
342+
uint8_t addr_le[6];
343+
int rc = ble_hs_id_copy_addr(BLE_ADDR_RANDOM, addr_le, NULL);
344+
if (rc != 0) {
345+
// Even with MICROPY_PY_BLUETOOTH_RANDOM_ADDR enabled the public address may
346+
// be used instead, in which case there is no random address.
347+
ble_hs_id_copy_addr(BLE_ADDR_PUBLIC, addr_le, NULL);
348+
}
349+
reverse_addr_byte_order(addr, addr_le);
343350
#else
344351
mp_hal_get_mac(MP_HAL_MAC_BDADDR, addr);
345352
#endif

0 commit comments

Comments
 (0)
0