【BLE】跳频算法实例分析

蓝牙协议:蓝牙4.2

抓包工具:frontline

计算公式

F(n+1) = (F(n) + hop) % 37

其中:

F(n+1)为下一个连接事件使用的信道;

F(n)为当前连接事件使用的信道;

hop为跳频数,取值范围[5~16],由主机在发起连接的时候决定(CONNECT_IND);

公式在代码中可以简化为:

若 F(n) + hop < 37,则 F(n+1) = F(n) + hop

若 F(n) + hop > 37,则 F(n+1) = F(n) + hop - 37

CONNECT_IND

连接请求包中包含公式中提到的hop值

连接请求包中包含当前可使用的Channel Map图,该Map图中所有信道都可用

Channel Map共5个字节,每个bit表示一个信道,包含广播信道(没有实际含义)

Connect Event

ch默认值为0,由“CONNECT_IND”可知,hop = 10,代入公式:

F(n+1) = (F(n) + hop) % 37 = (0+10)%37 = 10

所以,第一个连接事件发生在ch10

LL_CHANNEL_MAP_IND

由“CONNECT_IND”可知,hop = 10

由Channel Map可知,好信道数为29个,坏信道数为8个

由connInstant可知,Event Counter为0x007c的时候需要应用该Channel Map

好信道映射到数组map[29]中为:

map[0] = ch0;
map[1] = ch9;
map[2] = ch10;
map[3] = ch11;
map[4] = ch12;
map[5] = ch13;
...

代入公式

ch10 = ch29 + 10 - 37 = ch2, ch2是坏信道,需要重映射:2%29 = 2,所以map[2] = ch10
ch12 = ch2 + 10       = ch12,ch12是好信道
ch22 = ch12 + 10      = ch22,ch22是好信道
ch32 = ch22 + 10      = ch32,ch32是好信道
ch13 = ch32 + 10 - 37 = ch5,ch5是坏信道,需要重映射:5%29 = 5,所以map[5] = ch13
ch15 = ch5 + 10       = ch15,ch15是好信道

重映射:坏信道对好信道的总数N进行取余

参考资料:
BLE Channel Selection Algorithms

蓝牙跳频算法分析【经典蓝牙 vs BLE 4.x vs BT 5.0 BLE部分】

【BLE】跳频算法实例分析相关推荐

  1. python线性回归算法简介_Python实现的简单线性回归算法实例分析

    本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果: > ...

  2. python数据分类聚类案例_Python实现的KMeans聚类算法实例分析

    本文实例讲述了Python实现的KMeans聚类算法.分享给大家供大家参考,具体如下: 菜鸟一枚,编程初学者,最近想使用Python3实现几个简单的机器学习分析方法,记录一下自己的学习过程. 关于KM ...

  3. python 线性回归函数_Python实现的简单线性回归算法实例分析

    本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果: > ...

  4. php二分查找例题,PHP实现的二分查找算法实例分析

    本文实例讲述了PHP实现的二分查找算法.分享给大家供大家参考,具体如下: 二分查找法需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 一.要知道中间位置就需要 ...

  5. python中回归分析的算法_Python实现的简单线性回归算法实例分析

    本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> ...

  6. 基于最小二乘、迭代和相位梯度校正的解包裹算法实例分析

    一.原理 在多数相位解包裏算法中,都利用包裹相位梯度来计算解包裹相位.因此,相位梯度是相位解包裹中的一个重要的量.对于无噪声包裹相位来说,相位梯度与其真实相位的梯度是相同的.然而,噪声的存在将导致包裹 ...

  7. 基于可靠度排序的非连续路径解包裹算法实例分析

    一.理论分析 对于大多数需要处理的包裏相位图来说包含大量噪声,有时存在不连续处,针对此情况,Miguel提出了一种基于可靠度排序非连续路径的快速二维解包裹算法,该算法是路径跟踪算法中质量引导路径方法中 ...

  8. 层次聚类算法实例分析

    层次聚类算法 层次聚类算法又称为树聚类算法,它根据数据之间的距离,通过一种层次架构方式,反复将数据进行聚合,创建一个层次以分解给定的数据集. 在sklearn模块中,使用AgglomerativeCl ...

  9. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

最新文章

  1. 【Linux】10_存储管理EXT4文件系统详解
  2. 01-将自己的Ubuntu电脑设置为一台可远程访问的服务器
  3. ACCESS中的Update语句不支持Select的解决办法
  4. Linux的tree
  5. dhrystone测试结果_RTThread软件包可以对MCU进行性能测试,跑一个试试!
  6. SDN精华问答 | 为什么SDN要花这么长时间才被采用?
  7. 求二叉树中结点个数代码java_求二叉树中第K层结点的个数
  8. Vue学习笔记--Vue双向绑定实现原理
  9. JDK64位安装与JDK环境配置图文教程
  10. 植物大战僵尸花瓶终结者(砸罐子)无尽模式47波通关小技巧攻略
  11. 刻意练习这本书。。。。。。。
  12. PHP语言的动态特性-Going dynamic with PHP
  13. excel表显示为数字但是却无法进行数值运算
  14. 子集全排列组合数问题(带你轻松拿捏十一道OJ题)
  15. 2022年秋,工程伦理期末考试答案(仅供参考)
  16. Entity Framework Fluent API - Relationships
  17. php接入微信支付宝支付,php 微信公众号接入支付宝支付
  18. 2018.5.11作业
  19. 选择正确的云服务,初创企业也能服务上亿用户
  20. Multiple Object Tracking with Mixture Density Networks for Trajectory Estimation 详细解读

热门文章

  1. RRDtool简体中文教程
  2. 计算机网络(IP/TCP/HTTP)
  3. 【浏览器被劫持解决方案】https://www.hao123.com/?tn=9762xxxx2644_hao_pg
  4. Python黑马头条推荐系统第五天 头条排序模型进阶-神经网络
  5. 爬取泡面小镇每日第一条新闻
  6. windows下合并多个txt,文件
  7. ML之PDP:机器学习可解释性之部分依赖图(Partial Dependence Plots)之每个特征如何影响您的预测?
  8. php 如何让两张图片重叠,php多张图片合并方法分享
  9. 链路聚合原理及配置过程
  10. 从恶意程序对LNK格式的利用方法看防护趋势