Hi all:
I want to dynamically change device_name at peripheral_hids_mouse,
I perform two tests, but they are all not successful.
(1)
add below command into prj.conf
CONFIG_BT_DEVICE_NAME_DYNAMIC=y
add below code before bt_le_adv_start()
adv_param.options |= BT_LE_ADV_OPT_USE_NAME;
bt_set_name("test_name");
static void advertising_continue(void)
{
struct bt_le_adv_param adv_param;
#if CONFIG_BT_DIRECTED_ADVERTISING
bt_addr_le_t addr;
if (!k_msgq_get(&bonds_queue, &addr, K_NO_WAIT)) {
char addr_buf[BT_ADDR_LE_STR_LEN];
adv_param = *BT_LE_ADV_CONN_DIR(&addr);
adv_param.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA;
int err = bt_le_adv_start(&adv_param, NULL, 0, NULL, 0);
if (err) {
printk("Directed advertising failed to start\n");
return;
}
bt_addr_le_to_str(&addr, addr_buf, BT_ADDR_LE_STR_LEN);
printk("Direct advertising to %s started\n", addr_buf);
} else
#endif
{
int err;
adv_param = *BT_LE_ADV_CONN;
adv_param.options |= BT_LE_ADV_OPT_ONE_TIME;
adv_param.options |= BT_LE_ADV_OPT_USE_NAME; //modify
bt_set_name("test_name"); //modify
err = bt_le_adv_start(&adv_param, ad, ARRAY_SIZE(ad),
sd, ARRAY_SIZE(sd));
if (err) {
printk("Advertising failed to start (err %d)\n", err);
return;
}
printk("Regular advertising started\n");
}
}
the log shows "Advertising failed to start (err -22)"
(2)
use BT_LE_ADV_CONN_NAME instead of BT_LE_ADV_CONN
adv_param = *BT_LE_ADV_CONN_NAME;
it still show "Advertising failed to start (err -22)"
best regards,
Joe
