4 posts / 0 new
Last post
huzhongyi
Offline
Last seen:2 years 4 months ago
加入:2018-08-25 06:57
动态修改蓝牙设备名称

我参考“https://support.dialog-semiconductor.com/increase-length-name-during-adv...”动态修改蓝牙设备名称,
在app_task.c中增加函数
void set_device_name(void)
{
struct gapm_set_dev_name_cmd *req = KE_MSG_ALLOC(
GAPM_SET_DEV_NAME_CMD,
TASK_GAPM,
TASK_APP,
gapm_set_dev_name_cmd
);
req->operation = GAPM_SET_DEV_NAME;
req->length = 6;
memcpy(req->name, "cylzrh", 6);
ke_msg_send(req);
}
在app_task.c的Handles GAP manager command complete events中调用修改蓝牙设备名称的函数。
static int gapm_cmp_evt_handler(ke_msg_id_t const msgid,
struct gapm_cmp_evt const *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
switch(param->operation)
{
// 省略原代码……
// 增加处理的代码
case GAPM_SET_DEV_NAME:
{
set_device_name();
}
break;
// 省略原代码……
}
return (KE_MSG_CONSUMED);
}

Debug运行时,蓝牙设备的名称没有修改掉,请问哪里错了。应该怎么实现,谢谢!如果能直接给出代码更感激。

Device:
CYibin
Offline
Last seen:3 months 3 weeks ago
Staff
加入:2017-12-14 02:48
你好,

你好,

从你的代码来看。在 set_device_name 函数中,把消息 GAPM_SET_DEV_NAME_CMD 从应用层(TASK_APP)发送到了 TASK_GAPM。而在 GAPM 的事件处理函数中,你又调用了 set_device_name。

这样不是一直在发消息循环而没做任何事情吗?

huzhongyi
Offline
Last seen:2 years 4 months ago
加入:2018-08-25 06:57
请问如何动态修改蓝牙设备名。

请问如何动态修改蓝牙设备名。
以官方DA1458x_SDK_5.0.4\...\ble_examples中的ble_app_profile为例,应该在哪个文件中,哪个函数里修改。谢谢!

CYibin
Offline
Last seen:3 months 3 weeks ago
Staff
加入:2017-12-14 02:48
你好,

你好,

你原来的代码里,去掉在 gapm_cmp_evt_handler 中对 set_device_name 的调用,然后可以通过 status 参数判断其设置的有效性;是可以设置成功的。

手机一般会对外设的名称做缓存,你从机端修改名字后,手机需要关、开下蓝牙才能刷新对该名字的更新显示