亲爱的对话支持,
我正在尝试根据Prox_Reporter修改广告数据(User_Config.h),如下所示:
///广告服务数据
///广告广告类型标志,不得在广告数据中设置
#define user_advertise_data“\ x02”\
adv_type_flags \
“\ x05”
//其中0x5 = 0x1 |0x4-
// adv_flag_le_limited_discoverable |adv_flag_bredr_not_supported.
///广告数据长度 - 最多28个字节,保留3个字节以设置
#define user_advertise_data_len(sizeof(user_advertise_data)-1)
///广告名称
#define user_device_name“devname”
///广告名称长度
#define user_device_name_len(sizeof(user_device_name)-1)
///扫描响应数据
#define user_advertise_scan_response_data“\ x04”\
adv_type_manufacturer_specific_data \
“co”\
“\ x1”
///扫描响应数据长度 - 最多31个字节
#define user_advertise_scan_response_data_len(sizeof(user_advertise_scan_response_data)-1)
但我无法使用上述配置看到节点广告。
切换到原始广告数据配置时效果很好。我做错了什么吗?有人可以在对话时请尝试adv_type_flags吗?通过简单地替换user_config.h中的上述部分,尝试几分钟 - 只需替换上述部分即可。
请注意,我已将上面的0x5更改为0x1或0x4,但既不工作。
此致,
Uta_lc.
FYI - 我们想要使用的原因是我们希望将ADV数据保存最小以节省电量。
嗨Uta_lc,
您无法明确更改广告标志,这些标志由堆栈填充。在这些标志被堆栈填充之后,您可以将广告字符串保留为空,并且广告事件中没有数据(将Yoru设备的名称ADV数据的长度设置为0)。如果要将0x05放在广告字符串中(有限的可发现和不支持BR / EDR),请刚刚将User_Undirected_Adverting_Mode设置为Gap_lim_discoverable,并且堆栈将处理其余部分。关于将广告字符串保留到最小值较少的功耗,它不会产生任何区别。
谢谢mt_dialog.
谢谢mt,问题得到解决。
嗨,一个相关问题:
在上面的定义中:
#define user_advertise_scan_response_data“\ x04”\
adv_type_manufacturer_specific_data \
“co”\
“\ x1”
如何根据系统状态动态地改变最后一次再见,例如,将“\ x1”更改为“\ x2”?
我可以看到user_advertise_scan_response_data仅在nvds.c中引用:
const struct nvds_data_struct nvds_data_storage __attribute __((部分(第(“nvds_data_storage_area))))))
................
.nvds_tag_app_ble_scan_resp_data = user_advertise_scan_response_data,
...................
你能告诉我如何在飞行中更新该字段吗?
谢谢,
Uta_lc.
嗨Uta_lc,
扫描响应数据具有与广告数据相同的功能,您必须在再次启动广告之前停止广告过程并更改扫描响应数据字符串,并使用更改的扫描响应数据馈送堆栈。在SDK的默认功能空间中,扫描响应数据从NVDS结构提供。为了更改扫描响应数据,您可以使用app_easy_gap_undircated_advertise_get_active()函数,然后创建一个将附加函数附加到默认的NVDS数据。请确保在广告和扫描响应数据字符串中的长度是合适的,否则堆栈将拒绝启动广告程序。您可以检查广告字符串更改的App_ble_barebone项目,该过程也是相同的扫描响应数据。
谢谢mt_dialog.
谢谢mt,解决了。