本文主要讲解如何将普通的可连接角色改为广播角色,只广播数据但不进行连接。
在一般情况下的BLE 一对一连接时,是需要与主机连接的,并且要设定服务,而Broadcaster角色适合用于不需要连接的场合,比如空间环境温度检测,多传感器布局的情况。
一、如何实现
第一处修改:
第二处修改:
第三处修改:
在修改发送广播的数据包类型为non_connectable。
这里需要注意的是app_add_ad_struct里,需要判断添加的数据是在广播数据里还是扫描响应数据里,根据实际情况修改。
第四处修改:
新增user_app_on_adv_nonconn_complete函数接口,与app_on_adv_nonconn_complete对应。
在user_app_on_adv_nonconn_complete中写入应用层算法,比如这里是广播停止后继续广播。
之后我们的广播类型就是不可链接的广播角色数据了。
二、数据传送
那么,我们如何在广播数据中发送有效数据呢。这里只需要按照特定格式追加在广播信息中就好了
在DA14585的SDK中有提供专门的函数接口static void app_add_ad_struct(struct gapm_start_advertise_cmd *cmd, void *ad_struct_data, uint8_t ad_struct_len, uint8_t adv_connectable);
通过以上接口,我们定时更新ad_struct_data对应的数据参数就可以了。
结果如下:
数据类型为0xFF是厂商自定义数据段,后面的数据是需要广播的数据。