我正在使用无附带的榜样进行开发。我在user_cmd_interpreter中有一个函数,解析为'sn'的UART,并将本地名称更改为SN123456中的内容。我拥有的问题是我必须连接,断开和重新连接要更新的名称。我尝试过调用user_advertise(),但这不起作用。我已阅读App_easy_gap_update_add_data()需要调用。我已经搜索了该函数,我找不到BLE_APP_BAREBONE文件中的功能。我的两个问题都是调用app_easy_gap_update_add_data()解决我拥有的问题,以及app_easy_gap_update_add_data()的代码是什么。
设备:
嗨Ant777222,
谢谢你在网上提出的问题。只是为了确认CodeLess版本: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闪存标记该名称,以便其他设备知道这是该设备的名称。
如果您正在开始一个新的设计/项目,我们强烈建议您从DA14531或DA14585/586产品和我们最新的SDK6.0.14开始,因为它有了更多的改进。雷电竞官网登录我们有很多代码示例和改进的文档,也有软件路线图的支持。没有对DA14580产品族和SDK5的软件路线图支持。
请查看DA14531:
https://www.dialog-seminile.com/produ雷电竞官网登录cts/connectivity/bluetooth-low-energy/products/da14531.
在DA14531和DA14585/DA14586设备上创建自定义GATT配置文件特性有一个更完整的教程。
我们还有一个DA14531模块,即DA14531 SmartBond Tiny™模块!它具有很小的尺寸,功率非常低。按照下面的链接查找模块的数据表,文档和HW抵消:
https://www.dialog-seminile.com/produ雷电竞官网登录cts/bluetooth-module-da14531-smartbond-tiny.
这里还有一些参考设计,可以帮助您减少开发阶段,因为您不需要在开发应用程序代码上花费太多时间。
无代码
CodeLess允许您通过一组AT命令快速开始无线物联网应用程序。雷竞技安卓下载该CodeLess AT命令平台允许控制本地UART连接的设备,以及通过BLE远程设备。您可以创建简单的演示/应用程序/概念证明,而无需任何代码开发雷竞技安卓下载或在上面构建自己的应用程序!
//www.wsdof.com/雷电竞官网登录products/smartbond-codeless-commands
对话串口服务
DSPS模拟串行电缆通信。它提供了一个简单的替代RS-232连接,包括熟悉的软件流控制逻辑通过蓝牙低能量。SPS软件分发包括应用程序和概要文件源代码,并支持GAP中心/外设角色。
https://www.dialog-seminile.com/produ雷电竞官网登录cts/dialog-serial-port-service-dsps.
谢谢,PM_Dialog
我用的就是这个版本。我正在更改GAP_AD_TYPE_COMPLETE_NAME和GAP_AD_TYPE_MANU_SPECIFIC_DATA,我在usr_cmd_interpreter中有以下代码
否则if((input_cmd_type == at_cmd_sn)&&(cmd_source == cmd_src_local)){
for(Uint8_t i = 0; i <= 40; i ++){
如果((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,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 [i + 4],cmd_rx_buffer [i + 5],cmd_rx_buffer [i + 6],cmd_rx_buffer [i + 7]};
for(Uint8_t a = 3; a <8; a ++){
Advertisement_data [2 + a] = 0x00;
}
for(Uint8_t a = 8; a <16; a ++){
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;
//初始化输入命令索引为零。
console_env.input_cmd_char_index = 0;
//初始化解析器标志
console_env。parser_flag = CHAR_PARSER_NOT_ACTIVE;
user_advertise ();
send_to_local (cmd_arguments.cmd_buffer);
休息;
}
}
}
这是可行的,但我需要连接和断开,以发生名称更改。我需要在不联系的情况下改变名字。
嗨Ant777222,
有可能澄清下面的说法吗?
>>>“这是有效的,但我需要连接一个并断开名称更改的连接。我需要名称无需连接而更改。“
谢谢,PM_Dialog
该命令进入该更改Gap_ad_type_complete_name和Gap_ad_type_manu_specific_data。我使用LightBlue与手机连接到BLE设备。这些字段不变。我断开与BLE设备的连接,然后重新连接并将字段更改为指定的命令。我需要将立即更改的字段,而无需连接,断开和重新连接。
嗨Ant777222,
您应该设置一个计时器,以便更新广告数据。请查看SDK的BLE_APP_SLEEPMODE示例并检查APP_ADC_DATA_UPDATE_TIMER_USED TIMER。到期后,ADV_DATA_UPDATE_TIMER_CB()正在触发并更新广告数据。
谢谢,PM_Dialog