Skip to content

Commit 456e897

Browse files
authored
Merge pull request #9041 from dhalbert/fix-bleio-hci-name-setting
devices/ble_hci/common-hal/_bleio/Adapter.c: fix name setting
2 parents 7c54fac + 8e132df commit 456e897

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

devices/ble_hci/common-hal/_bleio/Adapter.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,14 @@ STATIC void check_enabled(bleio_adapter_obj_t *adapter) {
267267
// return true;
268268
// }
269269

270-
char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0};
270+
// Includes trailing null.
271+
char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0, 0};
272+
273+
static void _adapter_set_name(bleio_adapter_obj_t *self, mp_obj_str_t *name_obj) {
274+
mp_buffer_info_t bufinfo;
275+
mp_get_buffer_raise(name_obj, &bufinfo, MP_BUFFER_READ);
276+
bleio_characteristic_set_local_value(self->device_name_characteristic, &bufinfo);
277+
}
271278

272279
// Get various values and limits set by the adapter.
273280
// Set event mask.
@@ -283,16 +290,18 @@ STATIC void bleio_adapter_hci_init(bleio_adapter_obj_t *self) {
283290
#endif
284291

285292
if (!self->name) {
286-
name_len = sizeof(default_ble_name);
293+
name_len = sizeof(default_ble_name) - 1;
287294
bt_addr_t addr;
288295
hci_check_error(hci_read_bd_addr(&addr));
289296

290297
default_ble_name[name_len - 4] = nibble_to_hex_lower[addr.val[1] >> 4 & 0xf];
291298
default_ble_name[name_len - 3] = nibble_to_hex_lower[addr.val[1] & 0xf];
292299
default_ble_name[name_len - 2] = nibble_to_hex_lower[addr.val[0] >> 4 & 0xf];
293300
default_ble_name[name_len - 1] = nibble_to_hex_lower[addr.val[0] & 0xf];
301+
// default_ble_name[name_len] will be zero.
294302
self->name = mp_obj_new_str(default_ble_name, (uint8_t)name_len);
295303
}
304+
_adapter_set_name(self, self->name);
296305

297306
// Get version information.
298307
if (hci_read_local_version(&self->hci_version, &self->hci_revision, &self->lmp_version,
@@ -358,7 +367,6 @@ void common_hal_bleio_adapter_construct_hci_uart(bleio_adapter_obj_t *self, busi
358367

359368
common_hal_bleio_adapter_set_enabled(self, true);
360369
bleio_adapter_hci_init(self);
361-
common_hal_bleio_adapter_set_name(self, default_ble_name);
362370
}
363371

364372
void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled) {
@@ -426,9 +434,7 @@ mp_obj_str_t *common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) {
426434

427435
void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char *name) {
428436
self->name = mp_obj_new_str(name, strlen(name));
429-
mp_buffer_info_t bufinfo;
430-
mp_get_buffer_raise(self->name, &bufinfo, MP_BUFFER_READ);
431-
bleio_characteristic_set_local_value(self->device_name_characteristic, &bufinfo);
437+
_adapter_set_name(self, self->name);
432438
}
433439

434440

0 commit comments

Comments
 (0)