CC2640R2F BLE5.0 蓝牙协议栈信道选择算法#2(CSA#2)
概要
信道选择算法#2(CSA#2)是更复杂和更难跟踪用于获得下一个连接事件的信道索引的算法。特别是在高通量使用情况下,避免干扰和多路径衰落效应比通道选择算法#1更有效。
有关算法的详细说明,请参见蓝牙核心规范版本5.0的第6卷B部分4.5.8.2节。
以下是37和9个使用频道的算法对100多个事件的样本:
默认配置
该堆栈默认情况下支持CSA#2,默认情况下也启用。也就是说,作为主设备,设备将尝试使用CSA#2建立连接,作为从设备,设备将接受CSA#2连接请求。在较低级别,这意味着,作为主设备,设备将发送ChSel字段设置为1的连接请求,作为从设备,设备将通过ChSel字段设置为1进行通告。
CSA#2是否用于连接取决于对等设备支持的内容。该蓝牙核心规范版本5.0规定,
“如果发起者响应于ADV_IND或AD_DIRECT_IND PDU发送了一个CONNECT_IND PDU,并且一个或两个设备的PDU都将ChSel字段设置为0,则在连接上应使用信道选择算法#1。否则,应使用信道选择算法#2。
有关更多详细信息,请参阅蓝牙核心规范版本5.0的第6卷B部分4.5节。
禁用CSA#2
可以通过清除相应的支持的功能位来禁用CSA#2。
首先,使用HCI_LE_ReadLocalSupportedFeaturesCmd()获取当前设置的本地支持的LE功能。
然后,在收集相应的HCI_LE_READ_LOCAL_SUPPORTED_FEATURES事件后(请参阅主机控制器接口(HCI)以了解有关如何接收事件的更多详细信息),清除LL_FEATURE_CHAN_ALGO_2位(字节1的位6),并使用HCI_EXT_SetLocalSupportedFeaturesCmd()更新修改的功能:
case HCI_LE_READ_LOCAL_SUPPORTED_FEATURES :{ uint8_t featSet [ 8 ];//从接收到的事件(返回的数据memcpy ( featSet , &pMsg - > pReturnParam [ 1 ], 8 ))的第1-9行获取当前的特征集;//清除CSA#2功能位CLR_FEATURE_FLAG ( featSet [ 1 ], LL_FEATURE_CHAN_ALGO_2 );//更新具有修改功能的控制器HCI_EXT_SetLocalSupportedFeaturesCmd ( featSet ); }
注意:对于slave广播之前必须这样做,对于master initiating 之前必须这样做。
加入我们
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。
© Copyright 2017, 成都乐控畅联科技有限公司.
CC2640R2F BLE5.0 蓝牙协议栈信道选择算法#2(CSA#2)相关推荐
- CC2640R2F BLE5.0 蓝牙协议栈GAP Bond管理和LE安全连接
GAP Bond管理和LE安全连接 GAP Bond Manager是一个可配置的模块,使用Bond manager后应用程序可以减少大部分安全机制.下表列出了术语. 术语 描述 配对(Pairing ...
- CC2640R2F BLE5.0 蓝牙协议栈Off-Chip OAD功能
Off-Chip OAD 本节描述了分离镜像的片外OAD(Split Image Off-Chip OAD)和片外OAD库(Library off-chip OAD)之间的差异.片外OAD利用一个外部 ...
- CC2640R2F BLE5.0 蓝牙协议栈OAD功能概述
OAD 概述 本章节旨在从更高层次解释OAD主要概念,这些概念将在下一章节进一步扩展.一些概念,例如Boot镜像管理(BIM)在具体实现细节上可能有所不同.但是本章尽可能的覆盖这些概念,下一章节解释它 ...
- CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)
GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...
- CC2640R2F BLE5.0 蓝牙协议栈GATTServApp模块
GATTServApp模块 GATT服务器应用程序(GATTServApp)存储和管理应用程序范围的属性表.各种配置文件使用此模块将其特性添加到属性表.蓝牙低功耗协议栈使用此模块来响应GATT客户端的 ...
- CC2640R2F BLE5.0 CC2640R2F软件架构
软件架构 开发模型 下图展示CC2640R2F支持的两种开发模型,本文讲解都集中在图一,也就是整个ble协议栈和应用都工作在一个CC2640R2F的单SOC解决方案. 单一设备:Controller. ...
- CC2640R2F BLE5.0 CC2640R2F UART驱动
UART驱动 这一节我们讲一下UART驱动的分层实现,UART APIs以及如何调用UART APIs来实现基本的串口打印. 概述 UART用于芯片和串行端口之间的数据传输,UART驱动程序经过多层的 ...
- CC2640R2F BLE5.0 TI-RTOS概述
TI-RTOS概述 TI-RTOS是CC2640R2F设备上低功耗蓝牙项目的运行环境.TI-RTOS内核是传统SYS/BIOS内核的定制版本,是一个具有驱动程序,同步和调度工具的实时抢占式多线程操作系 ...
- CC2640R2F BLE5.0 PacketSniffer BLE 抓包
PacketSniffer BLE 抓包 对于任何复杂协议的深入学习,我们都建议一个通用的学习方法,从规范->实现->抓包,规范是无关编程语言.语法文档表达,实现是各家SDK.API.源码 ...
最新文章
- SpringBoot集成jsp(附源码)+遇到的坑
- setTimeout 的定时器的妙用
- fun(n) Java_java程序员的kotlin课(N+2):suspending函数执行编排
- linux软链接上传svn,svn 软链接问题
- 挖掘频繁模式、关联和相关性:基本概念和方法
- 当你没有能力的时候,所有的友善都是廉价的
- Kibana图形、报表分析
- HAOI2018 简要题解
- 企业高层对IT部门的需求
- 透過 OpenNI / NITE 分析人體骨架(下)
- 实时操作系统分类、特点及实现原理
- 计算机二级vfp程序语言,2012年计算机二级VFP语言基础学习教程
- VOLATILE和队列
- java批量图片下载+打包成zip格式
- matlab数值微分与数值积分
- 四、spring源码解读初始化
- 【Ceph】Ceph错误记录 Ceph 运维手册
- 一种在Houdini中让顶点动画循环的简单方法
- 英国Hostinger免费空间申请和使用教程
- 皮肤病,得了慢性荨麻疹怎么办?