CC2541之连接时广播
来源:互联网 发布:json获取key值 编辑:程序博客网 时间:2024/06/10 04:08
一、简介
本篇以SimpleBLEPeripheral工程为例,介绍实现连接时广播的方法。
二、实验平台
协议栈版本:BLE-CC254x-1.4.0
编译软件:IAR 8.20.2
硬件平台:Smart RF开发板
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/feilusia
联系方式:897503845@qq.com
技术交流QQ群:127442605
四、连接时广播有什么用?
答:自己想了两个理论上可行的功能,能不能实现还是要实践才知道,欢迎大家给我留言、私信补充:
用途一:广播出连接状态
主机1连上从机后,从机可通过改变广播数据,来告知主机2“本从机已经被连接”。
用途二:手机修改广播内容
主机1连上从机后,主机1给从机发送广播数据,从机再把广播数据广播出去。(需要配对加密,否则大家都可连接)
五、修改步骤
1、修改IAR设置中的宏
将xPLUS_BROADCASTER改为PLUS_BROADCASTER。
注:只修改这一句,手机连接时CC2541就仍能广播。但是手机断开后会出现两个问题:
1)CC2541的显示屏会显示“disconnected”。
2)CC2541的广播停了。
2、解决上面两个问题
修改peripheralStateNotificationCB函数的GAPROLE_WAITING代码(simpleBLEPeripheral.c中)
上述俩问题的原因是:当手机断开连接后,由于此时广播的相关变量仍显示从机在广播,所以协议栈的判断开广播的代码会开启不起来。
所以在这里从机超时后不进行当前广播状态的判断,直接紧接着开广播。
注:此时又出现了新的问题,也就是只有手机连接CC2541第一次时能“连接时广播”,第二次连接就没有广播数据了。
3、解决上述的“只在第一次连接时能广播”问题
修改peripheralStateNotificationCB函数的GAPROLE_CONNECTED代码(simpleBLEPeripheral.c中)
默认是只会在第一次连接时默认开广播,把红框中的语句注释掉以后每次连接时都能自动开广播。
注:用packet sniffer抓包。
1、CC2541上电广播时:广播包的间隔约为103127us(100ms),LCD显示“Adverting”。
2、手机连接CC2541时:有时候packet sniffer会看不到连接中的广播包,需要packet sniffer软件“停止-开始”地重开一下。此时广播包间隔约为1290036us(1.2S),LCD显示“Connected Adverting”,手机仍可正常与CC2541通信数据。
3、手机断开CC2541时:CC2541重新开始广播,间隔约为105628us(100ms),LCD显示“Aderting”。
所以,实现了连接时广播。
- CC2541之连接时广播
- 【BLE】CC2541之连接时广播
- 【BLE】CC2541之广播MAC
- 【BLE】CC2541之动态广播
- 【BLE】CC2541之开启广播过程
- 【BLE】CC2541之修改广播时间
- 【BLE】CC2541之修改广播通道
- 【BLE】CC2541之连接参数
- 【BLE】CC2541之主机端获取广播包数据
- 【BLE】CC2541之通过广播发送自定义数据
- cc2541 低功耗广播
- CC2541广播MAC地址
- 【BLE-CC2640】CC2640之连接时广播
- BLE CC2541修改广播时间
- 【BLE】CC2541之主从机端主动断开连接
- 【BLE】CC2541连接之配对与绑定实验
- [BLE] CC2541的开启广播过程
- CC2541解析广播数据及扫描响应
- 是时候 UWP 了
- 如何打出j间隔符号‘·’
- 绘制带颜色的几何体
- Cocosd2d-js 类型转换
- css style
- CC2541之连接时广播
- 运维需要的技能
- 234. Palindrome Linked List
- UIView-iOS初学
- ec:table的学习和总结
- CXF SOAP WebService服务端遇到的一些报错
- Hive的存储结构学习
- Cocosd2d-js 异常处理
- mvc 与 favicon.ico