@@ -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
364372void 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
427435void 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