Skip to content

Commit 9846932

Browse files
authored
Merge pull request #3276 from xiongyihui/main
support to change ble mac address
2 parents a28d0f6 + e81fa3d commit 9846932

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

locale/circuitpython.pot

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PACKAGE VERSION\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2020-08-11 15:37-0500\n"
11+
"POT-Creation-Date: 2020-08-14 09:36-0400\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -641,6 +641,10 @@ msgstr ""
641641
msgid "Could not restart PWM"
642642
msgstr ""
643643

644+
#: shared-bindings/_bleio/Adapter.c
645+
msgid "Could not set address"
646+
msgstr ""
647+
644648
#: ports/stm/common-hal/pulseio/PWMOut.c
645649
msgid "Could not start PWM"
646650
msgstr ""

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

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

389+
bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address) {
390+
ble_gap_addr_t local_address;
391+
mp_buffer_info_t bufinfo;
392+
if (!mp_get_buffer(address->bytes, &bufinfo, MP_BUFFER_READ)) {
393+
return false;
394+
}
395+
local_address.addr_type = address->type;
396+
memcpy(local_address.addr, bufinfo.buf, NUM_BLEIO_ADDRESS_BYTES);
397+
return sd_ble_gap_addr_set(&local_address) == NRF_SUCCESS;
398+
}
399+
389400
mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) {
390401
uint16_t len = 0;
391402
sd_ble_gap_device_name_get(NULL, &len);

shared-bindings/_bleio/Adapter.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,18 +96,26 @@ 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+
if (!common_hal_bleio_adapter_set_address(self, new_address)) {
109+
mp_raise_bleio_BluetoothError(translate("Could not set address"));
110+
}
111+
return mp_const_none;
112+
}
113+
MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_address_obj, bleio_adapter_set_address);
114+
107115
const mp_obj_property_t bleio_adapter_address_obj = {
108116
.base.type = &mp_type_property,
109117
.proxy = { (mp_obj_t)&bleio_adapter_get_address_obj,
110-
(mp_obj_t)&mp_const_none_obj,
118+
(mp_obj_t)&bleio_adapter_set_address_obj,
111119
(mp_obj_t)&mp_const_none_obj },
112120
};
113121

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 bool 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)