跳过主要内容

动态更改广告数据

6个月前

动态更改广告数据

发布的ant7772220点 5回复
0的问题

我使用无代码的例子进行开发。我在user_cmd_interpreter中有一个函数,它解析UART的'SN',并将本地名称更改为某种形式的SN123456。我的问题是,我必须连接,断开和重新连接的名称更新。我尝试过调用user_advertise(),但它不起作用。我已经了解到需要调用app_easy_gap_update_adv_data()。我已经搜索了那个函数,我不能在ble_app_barebone文件中找到它。我的两个问题是调用app_easy_gap_update_adv_data()会解决我的问题,以及app_easy_gap_update_adv_data()的代码是什么。

6个月前

PM_Dialog

嗨ant777222,

谢谢你的在线问题。只是为了确认一下无代码版本:DA14580的CodeLess_v_5.380.5.4.0是您正在使用的版本吗?

>>> "将本地名称更改为SN123456的形式,例如"

你指的是BLE设备名吗?如果是,设备名被定义到USER_DEVICE_NAME宏(ser_config_580.h头文件)中,然后存储到nvds_data_storage结构的NVDS_TAG_DEVICE_NAME项中。

设备的名称是通过NVDS_TAG_DEVICE_NAME提供的这就是进入广告字符串的内容。为了改变它,你必须定制广告功能。undirected_advertise_start_create_msg()是填充消息参数的函数,默认情况下接受来自NVDS_TAG_DEVICE_NAME的名称。您可以在SDK中保留该值为空,使用app_easy_gap_undirected_advertise_get_active()来使用所有适当的值分配消息,然后针对持有广告字符串的成员并应用您想要的名称。此外,为了让其他设备知道这是设备的名称,您必须使用0x09 flash标记该名称。

如果您正在开始一个新的设计/项目,我们强烈建议您从DA14531或DA14585/586产品和我们最新的SDK6.0.14开始,因为它有更多的改进。亚博电竞菠菜我们有很多代码示例和改进的文档,也有软件路线图支持。DA14580产品族和SDK5没有软件路线图支持。

请查看DA14531:

//www.xmece.com/亚博电竞菠菜products/connectivity/bluetooth-low-energy/products/da14531

在DA14531和DA14585/DA14586设备上创建自定义GATT配置文件特征有一个更完整的教程。

我们还有一个DA14531模块,即DA14531 SmartBond TINY™模块!它有非常小的尺寸和非常低的功率。按照以下链接查找模块的数据表、文档和HW附带资料:

//www.xmece.com/亚博电竞菠菜products/bluetooth-module-da14531-smartbond-tiny

还有一些参考设计可以帮助您减少开发阶段,因为您不需要在开发应用程序代码上花费太多时间。

无代码

CodeLess允许您使用一组AT命令快速入门无线物联网应用程序。亚博国际官网平台网址无代码AT命令平台允许通过BLE控制本地UART连接的设备以及远程设备。您可以创建简单的演示/应用程序/概念证明,而无需任何代码开发亚博国际官网平台网址或构建自己的应用程序!

//www.xmece.com/亚博电竞菠菜products/smartbond-codeless-commands

对话串行端口服务

dsp模拟串行电缆通信。它提供了一个简单的替代RS-232连接,包括熟悉的软件流量控制逻辑通过蓝牙低能量。SPS软件分发版包括应用程序和概要文件源代码,并支持GAP中心/外设角色。

//www.xmece.com/亚博电竞菠菜products/dialog-serial-port-service-dsps

谢谢,PM_Dialog

6个月前

ant777222 0点

这是我用的版本。我正在修改GAP_AD_TYPE_COMPLETE_NAME和GAP_AD_TYPE_MANU_SPECIFIC_DATA,我有以下代码在usr_cmd_interpreter

else if ((input_cmd_type == AT_CMD_SN)&&(cmd_source == CMD_SRC_LOCAL)){

For (uint8_t I = 0;我< = 40;我+ +){

如果((cmd_rx_buffer[我]= = ' S ') & & (cmd_rx_buffer (i + 1) = = ' N ')) {

uint8_t advertisement_data []
= {
17、GAP_AD_TYPE_MANU_SPECIFIC_DATA, 0x07, 0x4d, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//蓝牙设备名称
9 GAP_AD_TYPE_COMPLETE_NAME cmd_rx_buffer[我],cmd_rx_buffer (i + 1), cmd_rx_buffer [i + 2], cmd_rx_buffer (+ 3)
cmd_rx_buffer (+ 4), cmd_rx_buffer (+ 5) cmd_rx_buffer (+ 6) cmd_rx_buffer[我+ 7]};


For (uint8_t a = 3;< 8;+ +) {
Advertisement_data [2 + a] = 0x00;

For (uint8_t a = 8;< 16;+ +) {
Advertisement_data [2 + a] = cmd_rx_buffer[a+i-8];



memcpy (&codeless_env。service_uuid, &advertisement_data [2], 16);
memcpy (&codeless_env。adv_data &advertisement_data, sizeof (advertisement_data));
codeless_env。adv_data_len = sizeof (advertisement_data);
//没有扫描响应数据
codeless_env。resp_data_len = 0;
//设置无代码为可连接。
codeless_env。is_connectable = true;
//初始化输入命令索引为0。
console_env。input_cmd_char_index = 0;
//初始化解析器标志
console_env。parser_flag = CHAR_PARSER_NOT_ACTIVE;


user_advertise ();
send_to_local (cmd_arguments.cmd_buffer);

打破;


这工作,但我需要连接和断开名称更改发生。我需要在不连接的情况下更改名字。

6个月前

PM_Dialog

嗨ant777222,

下面这句话有可能解释清楚吗?

>>> "这工作,但我需要连接和断开名称更改发生。我需要改变名字,而不需要连接。”

谢谢,PM_Dialog

6个月前

ant777222 0点

该命令更改GAP_AD_TYPE_COMPLETE_NAME和GAP_AD_TYPE_MANU_SPECIFIC_DATA。我用浅蓝色的手机连接BLE设备。这些字段没有变化。我断开了BLE设备的连接,然后重新连接,字段被更改为命令指定的字段。我需要字段立即更改,而不必连接,断开,并重新连接。

6个月前

PM_Dialog

嗨ant777222,

你应该设置一个TIMER来更新广告数据。请查看SDK的ble_app_sleepmode示例,并检查app_adv_data_update_timer_used定时器。在其到期时,adv_data_update_timer_cb()将被触发并更新广告数据。

谢谢,PM_Dialog