extmod/modbluetooth: Implement configuration of address modes.

Changes `BLE.config('mac')` to return a tuple (addr_mode, addr).

Adds `BLE.config(addr_mode=...)` to set the addressing mode.
This commit is contained in:
Jim Mussared
2020-08-14 15:47:21 +10:00
committed by Damien George
parent 1b1b22905e
commit c4af714d58
5 changed files with 222 additions and 62 deletions

View File

@@ -308,9 +308,11 @@ STATIC mp_obj_t bluetooth_ble_config(size_t n_args, const mp_obj_t *args, mp_map
return mp_obj_new_bytes(buf, len);
}
case MP_QSTR_mac: {
uint8_t addr_type;
uint8_t addr[6];
mp_bluetooth_get_device_addr(addr);
return mp_obj_new_bytes(addr, MP_ARRAY_SIZE(addr));
mp_bluetooth_get_current_address(&addr_type, addr);
mp_obj_t items[] = { MP_OBJ_NEW_SMALL_INT(addr_type), mp_obj_new_bytes(addr, MP_ARRAY_SIZE(addr)) };
return mp_obj_new_tuple(2, items);
}
case MP_QSTR_rxbuf:
return mp_obj_new_int(self->ringbuf.size);
@@ -366,6 +368,11 @@ STATIC mp_obj_t bluetooth_ble_config(size_t n_args, const mp_obj_t *args, mp_map
m_del(uint8_t, old_irq_data_buf, old_irq_data_alloc);
break;
}
case MP_QSTR_addr_mode: {
mp_int_t addr_mode = mp_obj_get_int(e->value);
mp_bluetooth_set_address_mode(addr_mode);
break;
}
default:
mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
}