概要

信道选择算法#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)相关推荐

  1. CC2640R2F BLE5.0 蓝牙协议栈GAP Bond管理和LE安全连接

    GAP Bond管理和LE安全连接 GAP Bond Manager是一个可配置的模块,使用Bond manager后应用程序可以减少大部分安全机制.下表列出了术语. 术语 描述 配对(Pairing ...

  2. CC2640R2F BLE5.0 蓝牙协议栈Off-Chip OAD功能

    Off-Chip OAD 本节描述了分离镜像的片外OAD(Split Image Off-Chip OAD)和片外OAD库(Library off-chip OAD)之间的差异.片外OAD利用一个外部 ...

  3. CC2640R2F BLE5.0 蓝牙协议栈OAD功能概述

    OAD 概述 本章节旨在从更高层次解释OAD主要概念,这些概念将在下一章节进一步扩展.一些概念,例如Boot镜像管理(BIM)在具体实现细节上可能有所不同.但是本章尽可能的覆盖这些概念,下一章节解释它 ...

  4. CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)

    GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...

  5. CC2640R2F BLE5.0 蓝牙协议栈GATTServApp模块

    GATTServApp模块 GATT服务器应用程序(GATTServApp)存储和管理应用程序范围的属性表.各种配置文件使用此模块将其特性添加到属性表.蓝牙低功耗协议栈使用此模块来响应GATT客户端的 ...

  6. CC2640R2F BLE5.0 CC2640R2F软件架构

    软件架构 开发模型 下图展示CC2640R2F支持的两种开发模型,本文讲解都集中在图一,也就是整个ble协议栈和应用都工作在一个CC2640R2F的单SOC解决方案. 单一设备:Controller. ...

  7. CC2640R2F BLE5.0 CC2640R2F UART驱动

    UART驱动 这一节我们讲一下UART驱动的分层实现,UART APIs以及如何调用UART APIs来实现基本的串口打印. 概述 UART用于芯片和串行端口之间的数据传输,UART驱动程序经过多层的 ...

  8. CC2640R2F BLE5.0 TI-RTOS概述

    TI-RTOS概述 TI-RTOS是CC2640R2F设备上低功耗蓝牙项目的运行环境.TI-RTOS内核是传统SYS/BIOS内核的定制版本,是一个具有驱动程序,同步和调度工具的实时抢占式多线程操作系 ...

  9. CC2640R2F BLE5.0 PacketSniffer BLE 抓包

    PacketSniffer BLE 抓包 对于任何复杂协议的深入学习,我们都建议一个通用的学习方法,从规范->实现->抓包,规范是无关编程语言.语法文档表达,实现是各家SDK.API.源码 ...

最新文章

  1. SpringBoot集成jsp(附源码)+遇到的坑
  2. setTimeout 的定时器的妙用
  3. fun(n) Java_java程序员的kotlin课(N+2):suspending函数执行编排
  4. linux软链接上传svn,svn 软链接问题
  5. 挖掘频繁模式、关联和相关性:基本概念和方法
  6. 当你没有能力的时候,所有的友善都是廉价的
  7. Kibana图形、报表分析
  8. HAOI2018 简要题解
  9. 企业高层对IT部门的需求
  10. 透過 OpenNI / NITE 分析人體骨架(下)
  11. 实时操作系统分类、特点及实现原理
  12. 计算机二级vfp程序语言,2012年计算机二级VFP语言基础学习教程
  13. VOLATILE和队列
  14. java批量图片下载+打包成zip格式
  15. matlab数值微分与数值积分
  16. 四、spring源码解读初始化
  17. 【Ceph】Ceph错误记录 Ceph 运维手册
  18. 一种在Houdini中让顶点动画循环的简单方法
  19. 英国Hostinger免费空间申请和使用教程
  20. 皮肤病,得了慢性荨麻疹怎么办?

热门文章

  1. python中停车收费问题_如何用Python识别停车位?
  2. 【莫烦Python】Matplotlib Python 画图教程 设置坐标轴
  3. 20145212罗天晨 WEB基础实践
  4. 付费视频,视频平台们绕不过的南墙?
  5. javac 不是内部或外部命令解决方案
  6. 动态多模分析和调Q运转模拟
  7. GitHub Actions 部署爬虫并定时发送邮件
  8. neo4j 使用之数据导入初探
  9. Java Basic3(泛型、Muti-Processing、JMX、Stand Mbean、Dynamic Mbean)
  10. 回家喽回家找妞妞玩去