Skip to content

Commit e7da652

Browse files
committed
able to change ble mac address
1 parent 7ffa2a1 commit e7da652

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

ports/nrf/common-hal/_bleio/Adapter.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,15 @@ bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *s
386386
return address;
387387
}
388388

389+
uint32_t common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address)
390+
{
391+
ble_gap_addr_t local_address;
392+
local_address.addr_type = address->type;
393+
const char *data = mp_obj_str_get_str(address->bytes);
394+
memcpy(local_address.addr, data, NUM_BLEIO_ADDRESS_BYTES);
395+
return sd_ble_gap_addr_set(&local_address);
396+
}
397+
389398
mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) {
390399
uint16_t len = 0;
391400
sd_ble_gap_device_name_get(NULL, &len);

shared-bindings/_bleio/Adapter.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,18 +96,24 @@ const mp_obj_property_t bleio_adapter_enabled_obj = {
9696
};
9797

9898
//| address: Address
99-
//| """MAC address of the BLE adapter. (read-only)"""
99+
//| """MAC address of the BLE adapter."""
100100
//|
101101
STATIC mp_obj_t bleio_adapter_get_address(mp_obj_t self) {
102102
return MP_OBJ_FROM_PTR(common_hal_bleio_adapter_get_address(self));
103103

104104
}
105105
MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_address_obj, bleio_adapter_get_address);
106106

107+
STATIC mp_obj_t bleio_adapter_set_address(mp_obj_t self, mp_obj_t new_address) {
108+
common_hal_bleio_adapter_set_address(self, new_address);
109+
return mp_const_none;
110+
}
111+
MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_address_obj, bleio_adapter_set_address);
112+
107113
const mp_obj_property_t bleio_adapter_address_obj = {
108114
.base.type = &mp_type_property,
109115
.proxy = { (mp_obj_t)&bleio_adapter_get_address_obj,
110-
(mp_obj_t)&mp_const_none_obj,
116+
(mp_obj_t)&bleio_adapter_set_address_obj,
111117
(mp_obj_t)&mp_const_none_obj },
112118
};
113119

shared-bindings/_bleio/Adapter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ extern bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self);
4242
extern void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled);
4343
extern bool common_hal_bleio_adapter_get_connected(bleio_adapter_obj_t *self);
4444
extern bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *self);
45+
extern uint32_t common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address);
4546

4647
extern mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self);
4748
extern void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char* name);

0 commit comments

Comments
 (0)