Skip to content

Commit 52990a3

Browse files
committed
fix
1 parent e7da652 commit 52990a3

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -386,13 +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-
{
389+
bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address) {
391390
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+
}
392395
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+
memcpy(local_address.addr, bufinfo.buf, NUM_BLEIO_ADDRESS_BYTES);
397+
return sd_ble_gap_addr_set(&local_address) == NRF_SUCCESS;
396398
}
397399

398400
mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) {

shared-bindings/_bleio/Adapter.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ STATIC mp_obj_t bleio_adapter_get_address(mp_obj_t self) {
105105
MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_address_obj, bleio_adapter_get_address);
106106

107107
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);
108+
if (!common_hal_bleio_adapter_set_address(self, new_address)) {
109+
mp_raise_bleio_BluetoothError(translate("Could not set address"));
110+
}
109111
return mp_const_none;
110112
}
111113
MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_address_obj, bleio_adapter_set_address);

shared-bindings/_bleio/Adapter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +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);
45+
extern bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address);
4646

4747
extern mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self);
4848
extern void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char* name);

0 commit comments

Comments
 (0)