热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

BLE链路层状态机

BLE链路层BLE链路层位于物理层之上,主要是控制无线电进行数据的传输,其功能主要包括:数据报文的管理广播、数据信道的划分和管理设备的广播、扫描、连接建立、连接管理、连接中的数据传

BLE链路层

BLE链路层位于物理层之上,主要是控制无线电进行数据的传输,其功能主要包括:

  1. 数据报文的管理
  2. 广播、数据信道的划分和管理
  3. 设备的广播、扫描、连接建立、连接管理、连接中的数据传输
  4. 数据加密
  5. 2.4G频段跳频技术抗干扰等

链路层状态机

《BLE 链路层状态机》 BLE_LL_STATEMACHINE

如上图所示,链路层状态机总共有5中状态,我们依次对其进行说明:

就绪态

链路层上电后就进入了就绪态,处于等待host的命令的状态,在链路层状态机中处于中心状态,是其他状态转换的中转站,是一种非活动状态,但是ble中保持时间最长的状态。

广播态

处于广播态的链路层可以完成以下工作:

  • 发送广播报文
  • 接收扫描请求
  • 发送扫描响应

《BLE 链路层状态机》 广播态工作流程

其状态变化很简单,停止广播就进入了就绪态;在收到发起者的连接请求后就进入了连接态。

扫描态

扫描态分为两种子状态,主动扫描和被动扫描。
其区别很容易理解,被动扫描即设备仅仅简单的侦听那些正在广播的设备,并接收其发送的广播报文;主动扫描则接受了广播报文后,对设备产生额外的兴趣,想要获取更多的信息,因而发送扫描请求给广播设备,并且接受该设备的响应数据。被动扫描就好像你走在大街上,听到的那些广告,而主动扫描则是你听见了那些广告,又问了问发广告的人相关的信息。

扫描态只能和就绪态进行相互转换,开始和停止扫描就是转换条件。

发起态

为了发起连接,链路层必须处于发起态。进入发起态之后,链路层监听自己试图连接的设备,一旦接收到该设备发送的广播报文,则发送连接连接请求,并使自身进入了连接态;而链路层不在试图发送连接请求时,转入就绪态。

连接态

连接态也有两个子状态,从连接态和主连接态,发起连接的即由发起态进入的叫做主连接态,被动接受连接由广播态进入的叫做从连接态。断开连接则进入就绪态。

进入连接态之后,链路层可以进行连接管理和数据传输。

主设备定期向从设备发送报文,从设备通过相应这些报文进行数据的发送,从设备无权主动发送数据。

多个状态机

对于单个链路而言,只有一个状态是激活的,但是很多情况下,是存在多条链路的,每一个链路有分别对应一个状态机实例。

多个状态机实例中的状态却存在很多限制,在不同的状态机中不能同时作为主从设备,也不能同时作为两个设备的从设备,同时,因为这两个限制,导致有些状态是冲突的,例如,处于从连接状态的设备不能处于发起态,因为这会导致设备同时成为主从状态。

《低功耗蓝牙权威指南》一书中对于这种限制的目的做了如下的描述:
通过这一限制,设备在任何时间点上做任何事情没有不确定性。这一确定性是的设备可以使用高效的调度算法,这符合低功耗的需要。

设计目的

状态机是整个链路层的核心,链路层都是围绕状态机进行设计的。那么状态机的设计肯定整体上的设计目的的,除了我们知道的状态机设计可以将与特定状态相关的行为分离开来,实现架构的清晰和见解之外,还有低功耗的要求。实现状态机的,可将广播、发现、连接过程与数据传输分离,使得广播信道得以分离,这样因为广播必须在所有的广播信道传输相同的广播报文,这样的设计其广播的功耗降低到3信道的功耗。


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • VPX611是北京青翼科技推出的一款采用6U VPX架构的高性能数据存储板。该板卡搭载两片Xilinx Kintex-7系列FPGA作为主控单元,内置RAID控制器,支持多达8个mSATA盘,最大存储容量可达8TB,持续写入带宽高达3.2GB/s。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
author-avatar
太姥茶叶论坛_730
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有