我正在使用无编码示例进行开发。我在User_cmd_interpreter中具有一个函数,该函数可以为'sn'解析uart,并将本地名称更改为sn123456中的某些内容。我遇到的问题是我必须连接,断开和重新连接要更新的名称。我尝试调用user_advertise(),但这不起作用。我已经读到需要调用App_easy_gap_update_adv_data()。我已经搜索了该功能,但在BLE_APP_BAREBONE文件中找不到它。我的两个问题是呼叫app_easy_gap_update_adv_data()解决我遇到的问题,以及app_easy_gap_update_adv_data()的代码是什么。
设备:
HI ANT777222,
感谢您在线的问题。只是为了确保无编码版本:DA14580您使用的版本的Codeless_V_5.380.5.4.0是否?
>>>“例如,将本地名称更改为sn123456表格中的某些东西”
您是说BLE设备名称吗?如果是的,则将设备名称定义为user_device_name macro(ser_config_580.h头文件),然后将其存储到NVDS_TAG_DEVICE_NAME项目NVDS_DATA_STORAGE结构中。
因此,设备的名称是通过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-spoomendonductor.c亚博电竞菠菜om/products/connectivity/bluetooth-low-energy/products/da14531
有更多完整的教程用于开发自定义配置文件 - 在DA14531和DA14585/DA14586设备上创建自定义GATT配置文件。
我们还有一个DA14531模块,即DA14531 SmartBond Tiny™模块!它的尺寸很小,功率非常低。请按照下面的链接查找模块的数据表,文档和HW侧支:
https://www.dialog-spoomendonductor.c亚博电竞菠菜om/products/bluetooth-module-da14531-smartbond-inin
还有参考设计,您将帮助您减少开发阶段,因为您无需花费太多时间来开发应用程序代码。
无编码
无编码使您可以快速使用一组AT命令开始使用无线IoT应用程序。亚博国际官网平台网址命令平台的无编码允许通过BLE控制本地UART连接的设备以及远程设备。您可以在没有任何代码开发的情况下创建简单的演示 /应用程序 亚博国际官网平台网址/概念证明,也可以在顶部构建自己的应用程序!
https://www.dialog-spoomendonductor.c亚博电竞菠菜om/products/smartbond-codeless-commands
对话框串行端口服务(DSP)
DSP模拟串行电缆通信。它为RS-232连接提供了简单的替代品,包括通过蓝牙低能的熟悉的软件流控制逻辑。SPS软件分布包括应用程序和配置文件源代码,并支持GAP中央/外围角色。
https://www.dialog-spoomendonductor.c亚博电竞菠菜om/products/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 ++){
if(((cmd_rx_buffer [i] =='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,0x00,0x00,0x00,
//蓝牙设备名称
9,gap_ad_type_complete_name,cmd_rx_buffer [i],cmd_rx_buffer [i+1],cmd_rx_buffer [i+2],cmd_rx_buffer [i+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);
休息;
}
}
}
这起作用,但是我需要连接A并断开连接以进行名称更改。我需要更改的名称而无需连接。
HI ANT777222,
可以澄清以下声明吗?
>>>“这起作用,但是我需要连接A并断开连接以进行更改。我需要更改的名称而无需连接。”
谢谢,pm_dialog
该命令带来了更改gap_ad_type_complete_name和gap_ad_type_manu_specific_data。我使用LightBlue使用手机连接到BLE设备。这些领域没有变化。我从BLE设备断开连接,然后重新连接,然后将字段更改为指定的命令。我需要立即更改字段,而无需连接,断开和重新连接。
HI ANT777222,
您应该设置一个计时器以更新广告数据。请查看SDK的BLE_APP_SLEEPMODE示例,并检查App_Adv_Data_update_timer_used Timer。到期后,ADV_DATA_UPDATE_TIMER_CB()将被触发并更新广告数据。
谢谢,pm_dialog