SDK3.0.6
使用GAPM_SET_DEV_NAME_CMD时,
///设置本地设备名称命令
struct gapm_set_dev_name_cmd
{
// GAPM请求的操作:
/// - GAPM_SET_DEV_NAME:设置本地设备名称
uint8_t操作;
/ / /名称长度
uint8_t长度;
/ / /名称的值
uint8_t (__ARRAY_EMPTY)名称;
};
#定义__ARRAY_EMPTY
该结构体中的名字如何填充呢?(是否可以使用该命令动态修改设备名称?)
谢谢。
设备:
目前的代码好像没有调用的例程。结构体的名字应该就是名字的字符串表示。如果需要动态修改名称,建议先直接更新属性里面的设置,再更新广播包的名字。如果用的SDK3
Void app_adv_func(struct gapm_start_advertise_cmd *cmd)
{
.......
//检查数据是否可以添加到Advertising数据中
If (device_name_avail_space > 0)
{
//获取要添加到广告数据中的设备名称(默认或NVDS)
#如果(NVDS_SUPPORT)
device_name_length = NVDS_LEN_DEVICE_NAME;
if (nvds_get(NVDS_TAG_DEVICE_NAME, &device_name_length, &device_name_temp_buf[0])) != NVDS_OK
# endif / / (NVDS_SUPPORT)
{
//获取默认设备名(如果空间不足则没有名称)
device_name_length = strlen (APP_DFLT_DEVICE_NAME);
memcpy (&device_name_temp_buf [0], APP_DFLT_DEVICE_NAME device_name_length);
}
If (new_name_len) //新添加的
{ //覆盖名字
device_name_length = new_name_len;
memcpy (&device_name_temp_buf [0], new_name new_name_len);
attmdb_att_set_value (3 new_name_len new_name);/ /更新数据库里存的名字
}
请问有相关的代码吗,我用GAPM_SET_DEV_NAME_CMD命令修改了名字,通过GAPM_GET_DEV_NAME_CMD获取出来的名字和修改的是一样的,但是广播名字还是没有被修改。
广播的名字只有先调用断开广播的操作,然后再重启广播才会生效。你可以参照上文我贴的代码。
请问上面的new_name和new_name_len是什么内容,怎么定义的,可以发上来看看吗
uint8_t new_name_len __attribute__(((“retention_mem_area0”)部分,zero_init));/ / @RETENTION记忆
uint8_t new_name [27] __attribute__(((“retention_mem_area0”)部分,zero_init));/ / @RETENTION记忆
放到了保留内存里。存储的就是你设的新名字和名字内容。