[BLE] CC2541的开启广播过程
来源:互联网 发布:sql查询语句实例 编辑:程序博客网 时间:2024/05/18 23:13
在应用层开启广播功能其实非常简单,只要把TRUE传给GAPRole_SetParameter函数中的GAPROLE_ADVERT_ENABLED就可以了。
进到GAPRole_SetParameter函数里看看GAP层到底做了什么事情才开关广播。
其中gapRole_AdvEnabled默认是TRUE
每次进到这个函数里,就会先把gapRole_AdvEnabled的值保存到oldAdvEnabled,再把新的状态写到gapRole_AdvEnabled。也就是这两句
而后它实际上是对oldAdvEnabled(旧的广播开关状态)和gapRole_AdvEnabled(新传入的广播开关状态)这两个变量进行了判断,
1)在广播状态下,想关闭广播----->关闭广播
2)在不广播的状态下,想开启广播--->开启广播
代码中并没有将另外两种情况编写进来,也就是
3)在广播状态下,还想开启广播
4)在不广播的状态下,还想关闭广播
协议栈把这两种情况划入了else的bleInvalidRange。
第2)种情况的开广播,调用了gapRole_TaskID任务中的START_ADVERTISING_EVT事件:
事件中调用GAP_MakeDiscoverableGAP_MakeDiscoverable即可开启广播,如果广播不成功,则会调用函数指针pGapRoles_AppCGs指向的回调函数,并且传入参数GAPROLE_ERROR,以此来通知应用层广播不成功。
那么调用的又是哪个回调函数呢?
追踪一下pGapRoles_AppCGs发现有个注册回调函数的函数
再追踪一下这个注册函数,发现在应用层的SBP_START_DEVICE_EVT事件中对此进行了注册
所以当广播开启不成功之后,会调用simpleBLEPeripheral_PeripheralCBs的回调函数
到此,广播过程就结束了。
- [BLE] CC2541的开启广播过程
- 【BLE】CC2541之开启广播过程
- <蓝牙BLE>BLEcc2540开启广播的过程
- 【BLE】CC2541之广播MAC
- 【BLE】CC2541之动态广播
- BLE CC2541修改广播时间
- 【BLE】CC2541之修改广播时间
- 【BLE】CC2541之修改广播通道
- 【BLE】CC2541之连接时广播
- [BLE] CC2541 BLE Peripheral工程的建立
- 【BLE】CC2541之主机端获取广播包数据
- 【BLE】CC2541之通过广播发送自定义数据
- 【BLE】CC2541实时更新广播包advertData内容
- 【BLE】CC2541之解析协议栈的晶振初始化过程
- 【BLE】CC2541与CC2540的区别
- 【BLE】CC2541之配对密码的重置
- BLE-CC2541项目的一点经验记录
- CC2541 BLE Peripheral工程的建立
- GCC参数详解
- appium python 获取手机页面信息
- 【特征检测】BRISK特征提取算法
- new malloc(待更新)
- tmux
- [BLE] CC2541的开启广播过程
- 【系统性能优化】Hibernate调优
- 获得一个2n数组中的N个元素,使得该N个元素与剩余元素和最小
- ZOJ3436 July Number
- 关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)
- Liv555简单移植
- STM32F429 Discovery 开发板USART乱码问题,解决过程
- Linux 下stat和access函数
- 与大家讨论如何用opencore amr在iOS上decode(已解决)