蓝牙基带 逻辑传输

2024-03-14 18:20
文章标签 逻辑 传输 蓝牙 基带

本文主要是介绍蓝牙基带 逻辑传输,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

4 LOGICAL TRANSPORTS

4.1 一般原则

在主设备和从设备(一个或多个),可建立不同类型的逻辑传送。逻辑传送被定义为以下六种:
同步链接方向(SCO)逻辑传送
增强同步链接方向(eSCO)逻辑传送
异步链接方向(ACL)逻辑传送
活跃从广播(ASB)逻辑传送
停泊从广播(PSB)逻辑传送
非连接从广播(CSB)逻辑传送
在微微网中,主设备和一个从设备之间的同步逻辑传送是点对点的逻辑传送。同步逻辑传送典型地支持如语音或一般同步信号等有时限的信息。主设备依靠使用保留的有规律的间隔来维持同步逻辑传送。除了保留的slots,eSCO逻辑传送可以在预订的slots后有一个中继窗口。

ASB逻辑传送被主设备用来同活跃的从设备连接。PSB逻辑传送被主设备用来同停泊从设备连接。

CSB逻辑传送被主设备用来发送profile广播数据给0个或多个从设备。

4.2 逻辑传送地址(LT_ADDR)

每个活跃在微微网内的从设备被分配了一个首要的3bit逻辑传送地址(LT_ADDR)。全0的LT_ADDR是为ASB和PSB广播消息保留的。CSB逻辑传送使用一个单非零LT_ADDR。主设备没有一个LT_ADDR。主设备相对于从设备的时序由从设备来区分。次要的LT_ADDR被分配给从设备,让每个eSCO逻辑传送在微微网中使用。次要LT_ADDR不应为0。只有eSCO通信(例如NULL,PULL和在eSCO逻辑传送计划被协调的EV packet类型之一)可在这些LT_ADDRs上被发送。ACL通信(包含在LMP中)应总是在首要LT_ADDR上被发送。一个从设备应只能接受匹配的首要或次要LT_ADDR的包或广播包。LT_ADDR被搭载在包头。LT_ADDR应只能在从设备的活跃模式中有效。一旦它断开连接或停泊,从设备应失去所有LT_ADDRs。
主要LT_ADDR应在从设备被激活后由主设备分配给从设备。这既可以在连接建立,或规则切换,或当从设备取消停泊。在连接建立和规则切换时,首要LT_ADDR被载入FHS的载荷。当取消停泊时,首要LT_ADDR被载入取消停泊消息。
在任何给定的时间,一个LT_ADDR(除了特殊的例子——全零LT_ADDR)可以是未使用的或确切地用于从设备的首地址,eSCO通信的次要地址,或CSB逻辑传送这三个目的之一。因此为一个eSCO逻辑传送分配一个次要LT_ADDR或为CSB逻辑传送预留一个LT_ADDR,尽可能减小在微微网内的活跃从设备的最大数量。

4.3 同步逻辑传送

同步逻辑传送的第一种类型,SCO逻辑传送,是一个在主设备和特定的从设备之间对称的,点对点的传送。SCO逻辑传送预留slot且能因此被认为是一个在主设备和从设备之间的电路切换连接。主设备可支持最多3个SCO链接给同一个或不同的从设备。一个从设备应支持最多从同一个主设备来的三个SCO链接,或源于不同主设备的两个SCO链接。SCO包从不重发。
同步逻辑传送的第二个类型,eSCO逻辑传送是一个在主设备和特定的从设备之间的点对点的逻辑传送。eSCO逻辑传送可以是对称或非对称的。与SCO相似,eSCO预留slots且能因此被视为一个在主设备和从设备之间的电路切换连接。除了预留slots,eSCO支持一个立即跟随预留slot的重传窗口。同时,预留slots和重传窗口形成完整的eSCO窗口。

4.4 异步逻辑传送

在同步逻辑传送的非预留slot内,主设备可与任何从设备在单slot的基础上交换包。ACL逻辑传送提供一个在加入微微网中的主设备和所有从设备之间的包切换连接。异步和同时服务都被支持。在主设备和从设备之间只有一个单ACL逻辑传送应该存在。对最多的ACL包而言,包重传用以确保数据的完整性。
ACL包未指定一个特别的从设备地址(LT_ADDR = 0)被视为一个广播包且可以被所有从设备接收到,除了只有一个CSB逻辑传送的从设备。如果没有数据要在ACL逻辑传送上被发送且不需要轮询,则不需要传输。

4.5 发射/接收程序

这个部分描述了在章节6中定义的为的是支持在ACL,SCO和eSCO逻辑传送的通信包的使用方法。单从设备和多从设备配置都需要被考虑。另外,描述了TX和RX程序的使用。
4.5.1 TX程序
TX程序可以由每个异步和同步逻辑传送分别执行。图4.1展示了在TX程序中的同步和异步缓冲器。在这张图里,只有一个单TX异步缓冲和单TX同步缓冲被展示。在主设备里,为每个从设备都有一个分离的TX异步缓冲器。另外为每个同步从设备能有一个或多个TX同步缓冲器(不同的SCO或eSCO逻辑传送能重复使用相同的TX同步缓冲器,或各自拥有他们自己的TX同步缓冲器)。每个TX缓冲器包含两个FIFO寄存器:一个当前寄存器,能被访问和通过链接控制器读取为的是组合包,一个下一位寄存器能通过基带组员管理器访问为的是载入新的信息。S1和S2开关的位置决定了当前是哪个寄存器且下一个寄存器是哪个;开关由链接控制器控制。FIFO寄存器的输入和输出上的开关从不能同时连接相同的寄存器。 

关于在ACL和SCO逻辑传送上的公用包(NULL,POLL和DM1)只有DM1包负载一个在链接控制器和链接管理器之间交换的载荷;这个公用包使用异步缓冲器。所有ACL包使用异步缓冲器。所有SCO和eSCO包使用同步缓冲器,除了DV包在同步数据中被同步缓冲器操作的部分和被异步缓冲器处理的数据部分。在下一个部分描述了ACL通信,SCO通信,eSCO通信和在SCO逻辑传送上的联合语音数据。

4.5.1.1 ACL 通信

在异步数据的例子中,只有在图4.1中的TX ACL缓冲器毫无疑问被考虑。这个例子中,只有DM或DH类型的包被使用,这些包有着不同的长度。长度由包头指定。DM或DH包的选择应该取决于链接的质量。
在纯净数据传输内默认包类型是NULL。这意味着如果没有数据需要发送(数据通信是异步的,因此在没有数据可用时产生暂停)或没有从设备需要轮询,NULL包作为替代被发送——为了发送链接控制信息给其他设备(例如收到的数据的ACK/STOP信息)。当没有链接控制信息是可用的(既不需要告知也/或不需要停止RX流)没有包再需要发送。
TX程序工作如下。基带资源管理器载入新的数据信息到S1a指向的寄存器内。下一步,它给链接控制器一个指令,命令开关S1改变(S1a和S1b同时改变)。当负载需要被发送时,包组合器读取当前寄存器且根据包的类型建立一个添加了通道访问代码和头部的负载,随后发射出去。在应答包内(如果它关系到一个主设备传输则在下一个RX slot到达,或如果它关系到一个从设备传输则可能被延期直到后续的一些RX slot),传输的结果是返回记录。在ACK的例子中,开关S1改变位置;如果一个NAK(明确或不明确)作为替代,开关S1将不改变位置。在这个例子,同样的载荷被在下一个TX时机被重新发射。
如果基带资源管理器正在以新的信息载入寄存器,链接控制器将自动发射负载;另外万一发生错误则自动完成重新发射。当新数据被载入时链接控制器将发送NULL或没有任何东西。如果没有新的数据已经被载入next寄存器,在最后的传输期间,包组合器将在最后的传输已被告知收到后指向一个空的寄存器,且next寄存器成为当前寄存器。如果新的数据被载入next寄存器,一个flush指令需要将S1开关切换到合适的寄存器。如果基带资源管理器在每个TX slot之前持续载入数据和类型寄存器,因为S1开关由收到的应答信息控制,数据将自动被链接控制器处理。然而,如果从基带资源管理器的通信被中断,且一个默认包被代替发出,一个flush命令是必须的以继续链接控制器内的流。
flush命令也可被用在有时限(同时)数据的例子中。在一个坏的链接中,许多重新传输是需要的。在某一应用中,数据是有时限的:如果一个载荷总是因为链接错误被重传,可能会变得过时,系统可以决定以用更多最近的数据来替代且跳过那些不能传来的载荷。这同样靠用flush命令来实现。在flush时,开关S1被强制改变且链接控制器被强制以看重下一个数据载荷且支配ACK控制。任何ACL类型的包可被用来发送数据或链接信息给任何其他ACL从设备。
4.5.1.2 SCO通信
在SCO逻辑传送上只有HV和DV包类型被用到。同步端口可以持续的载入在同步寄存器内的next寄存器。S2开关根据Tsco间隔来改变。这个Tsco间隔在主设备和从设备之间的SCO逻辑传送被建立时协商确定。
对每个新的SCO slot,包组合器在S2开关改变后读取current寄存器。如果SCO slot不得不被用来以高优先级发送关系到主设备和SCO从设备之间的控制包,或主设备和任何其他从设备之间的控制包这样的控制信息,包组合器将丢弃SCO信息且使用替代的控制信息。这个控制信息应被在一个DM1包被被发送。数据或链接控制信息也可以在主设备和SCO从设备之间使用DV或DM1包交换。
4.5.1.3 混合数据/语音通信
在6.5.2部分,一个DV包被定义成在一个单SCO逻辑传送上能够同时支持数据和语音。当类型是DV时,链接控制读取数据寄存器以填充数据域,读取语音寄存器以填满语音域。此外,开关S2被改变。然而,S1的位置取决于在ACL逻辑传送的传输结果:仅当一个ACK已经收到后S1开关才改变它的位置。在每个DV包内,语音信息是新的,但如果先前的传输失败了,数据信息可以被重传。如果没有数据需要发送,SCO逻辑传送将在混合数据/语音传输之前自动从DV包类型改变为当前使用的HV包类型。注意当数据流被中断且新数据已经到达后一个flush命令是必要的。
如果通道能力允许的话,联合数据/语音传输也可以用一个分离的ACL逻辑传送来完成,而不是用SCO逻辑传送。
4.5.1.4 eSCO通信
在eSCO逻辑传送上只有EV,POLL和NULL包类型被使用。同步端口可以在同步寄存器内持续载入下一个寄存器。S2根据Tesco间隔改变开关。Tesco间隔在主设备与从设备的eSCO逻辑传送被建立时协定。
对每个新的eSCO slot,包组合器在S2开关改变后读取当前寄存器。如果eSCO slot不得不用来以高优先级发送控制信息形如一个在主设备和从eSCO设备之间的控制包,或是一个在主设备和任何其他从设备之间的eSCO包,包组合器将丢弃eSCO信息且替换为控制信息。给eSCO从设备的控制信息在首要LT_ADDR地址上被在一个DM1包中被发送。
4.5.1.5 默认包类型
在ACL链接上,对主设备和从设备而言,默认包格式总是NULL。这意味着如果没有用户信息需要发送,如果有一个ACK或STOP信息则一个NULL包被发送,或不再有包被发送。NULL包能被用在主设备上以分配下一个从-主slot给一个从设备(也就是一个地址)。然而,从设备不能强制以应答从主设备来的NULL包。如果主设备需要应答,它发送POLL包。
当SCO或eSCO逻辑传送被建立时,SCO和eSCO包类型在LM层被协定。赞同包类型也是预留SCO或eSCO slot的默认包类型。
4.5.2 RX程序
RX过程是在ACL逻辑传送和同步逻辑传送时分别执行。然后,对比于主设备TX异步缓冲器,一个简单的RX缓冲器给所有从设备共享。对同步缓冲器来说,同步逻辑传送的突出区别取决于额外的同步缓冲器是否需要。图4.2展示了在RX过程里使用的异步和同步缓冲器。RX异步缓冲器包含两个FIFO寄存器:一个寄存器可通过链接控制器以最近的RX包载荷被访问和载入,一个寄存器能通过基带资源管理器访问以读取之前的载荷。RX同步缓冲器也包含两个FIFO寄存器:一个寄存器以新到达的音频信息填充,一个寄存器能通过语音进程单元读取。 

由于在收到的包中的类型指示指出了载荷包含的是数据还是语音,包解压能自动指挥通信到合适的缓冲器。每次基带资源管理器读取旧的寄存器后开关S1改变。如果下一个载荷在RX寄存器清空之前到达,一个STOP指示器被包含在下一个返回的TX包的包头。STOP指示会在RX寄存器空之后被移除。在一个新的ACL载荷被存储在异步寄存器前SEQN域被检查(刷新在LLID内指示且广播消息影响SEQN域的说明)。

在每个SCO和eSCO的Tsco或Tesco S2开关被各自改变。如果,由于头部的错误,没有新的同步载荷到达,切换仍会发生。同步数据进程单元然后处理同步数据以消除丢失的部分。
4.5.3 流控制
由于RX ACL缓冲器能在一个新的载荷到达时被填满,流控制是必须的。在返回的TX包里的头域FLOW可使用STOP或GO,为的是控制新的数据的传输。
4.5.3.1 终点控制
一旦数据不能被接收,一个STOP指示应被链接控制器自动插入到返回包的头部并发射。只要RX ACL缓冲器不能被基带资源管理器清空,STOP应被返回。当新的数据能被在此接受时,GO指示应被返回。GO应作为默认值。所有不包含数据的包类型仍能被接收。语音连接不会受流控制影响。虽然一个数据不能收到新的信息,它仍可继续发送信息:流控制应在各方向分离。
4.5.3.2 源控制
在接收的STOP信号上,链接控制器应自动切换到默认包类型。保持仅在收到STOP指示之前发送ACL包,直到收到一个GO信号。一旦收到一个GO指示,它可被重传。一旦收到STOP指示被收到,只有默认包被发送。当没有收到包时,GO应被含蓄地假定。注意默认包包含接收方向的(一直被打开)链接控制信息(在头部)且可包含同步数据(HV或EV包)。当收到一个GO指示,链接控制可恢复存在于TX ACL缓冲器内的数据的发送。
在一个多从设备配置内,只有发送STOP信号的从设备的传输被停止。意思是主设备只可以停止TX ACL缓冲器的传输,相应的从设备立即不能接收信号。

4.6 活跃从广播传送

活跃从广播逻辑传送用来传送L2CAP用户通信给所有微微网内的设备,这些设备使用ASB连接到微微网物理通道。从微微网主设备到从设备之间是单向的且没有回单协议。ASB逻辑传送只可用在L2CAP组通信且不能用在L2CAP连接方向通道,L2CAP控制信号或LMP控制信号。
ASB逻辑传送是不可靠的。为了提高可靠性,每个包被发射一定的次数。一个相同的序列数用来在从设备端过滤重传。
ASB逻辑传送由保留的全零LT_ADDR辨别出。在ASB逻辑传送上的包可被主设备在任何时间发送。

4.7 停泊从设备广播传送

停泊从设备广播逻辑传送用于从主设备到停泊从设备之间的连接。PSB逻辑传送比其他的逻辑传送更复杂,因为它由一定数量的阶段组成,每个阶段都有不同的目标。这些阶段是控制信息阶段(用以负载LMP逻辑链接),用户信息阶段(用以负载L2CAP逻辑链接)和访问阶段(负载基带信号)。
PSB逻辑传送以保留的全零LT_ADDR辨别。
4.7.1 停泊成员地址(PM_ADDR)
一个从设备在PARK状态时能以他的BD_ADDR辨认出或以专门的停泊成员地址(PM_ADDR)。较后的地址hi一个8Bit成员地址用以隔开停泊从设备。PM_ADDR只应在从设备被停泊后有效。当从设备被激活后它应被分配LT_ADDR,但应失去PM_ADDR。PM_ADDR应由主设备在停泊进进程期间安排给从设备。
4.7.2 访问请求地址(AR_ADDR)
访问请求地址(AR_ADDR)被停泊从设备用来决定在访问窗口内的从-主半slot中允许发送访问请求消息的位置。AR_ADDR应在从设备进入PARK状态时被分配且这只当从设备处于停泊状态时有效。AR_ADDR不是必须唯一的;例如不同的停泊从设备可有同样的AR_ADDR。
4.8 非连接从广播逻辑传送
CSB逻辑传送用在从一个主设备到多个从设备传送profile广播消息。没有回单机制且通信是单向的。注意:CSB逻辑传送不用在L2CAP连接方向通道,L2CAP控制信号或LMP控制信号。

CSB逻辑传送是不可靠的。为了提升可靠性每个包载荷需被发送多次。

这篇关于蓝牙基带 逻辑传输的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809294

相关文章

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

逻辑表达式,最小项

目录 得到此图的逻辑电路 1.画出它的真值表 2.根据真值表写出逻辑式 3.画逻辑图 逻辑函数的表示 逻辑表达式 最小项 定义 基本性质 最小项编号 最小项表达式   得到此图的逻辑电路 1.画出它的真值表 这是同或的逻辑式。 2.根据真值表写出逻辑式   3.画逻辑图   有两种画法,1是根据运算优先级非>与>或得到,第二种是采

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加,控制这些设备的需求也在增加。对于多种使用情况,期望设备在需要进行控制的同时连接到互联网会受到很大限制,因此是不可行的。在这些情况下,使用低功耗蓝牙(也称为 Bluetooth LE 或 BLE)似乎是最佳选择,因为它功耗低,在我们的手机中无处不在,而且无需连接到更广泛的网络。因此,蓝牙应用程序的需求也在不断增长。 通过阅读本文,您将了解如何开始在 Flutter 中开

远程桌面文件传输异常或者取消传输后一直显示正在取消

环境: Window Servers 2008 R2 摘要说明: 本篇文章主要讲述当应用远程桌面进行文件传输时,若因网络等导致进程中断,再次传输时则不能进行文件传输;或者传输时取消传输,然后一直显示正在取消。此时可以通过重启window的rdpclip.exe进程来解决此问题 步骤 1.关闭rdpclip.exe进程 远程桌面连上上传输异常的服务器,打开资源管理器,在进程列关闭rdpc

开放式蓝牙耳机哪个品牌好用?盘点五款超优秀的开放式耳机!

开放式蓝牙耳机现在挺受欢迎的,它们最大的好处就是不塞耳朵,戴着舒服,特别适合长时间佩戴。而且,这种耳机能让你在听音乐的同时,还能听到周围的环境声,这样在外面运动或者骑车的时候就更安全。音质方面,现在的开放式耳机也做得越来越好,有些高端款式还有特别的技术来减少漏音,保护你的隐私。但是现在市场上的开放式耳机品牌太多了,很多人不知道怎么选?为了帮助您在众多选项中做出选择,我根据个人经验挑选了一些表现良好

Java传输本地目录到远程服务器

在使用Java进行开发时,有时需要将本地目录中的文件复制或传输到远程服务器上。这种场景在部署应用程序或进行数据迁移时尤为常见。JSch库提供了一种简便的方法来实现这一功能。以下是从Codekru网站获取的信息摘要,并结合相关内容,展示如何使用JSch库实现从本地计算机复制整个目录到远程服务器的过程。 准备工作 首先,确保您的项目中已经包含了JSch库的依赖。如果您使用Maven作为构建工具,可

高效传输秘籍,揭秘Rsync和SCP的优劣,助你做出明智选择!

在日常的运维工作中,文件传输任务频繁出现,而选择合适的工具能显著提高工作效率。Rsync 和 SCP 是两款常见的文件传输工具,但它们各具优缺点,适合不同的场景。本文将通过深入分析这两款工具的特性、使用场景和性能,帮助你做出明智的选择,从而在文件传输中省时省力。 Rsync 与 SCP 简介 Rsync:增量传输的强大工具 Rsync 是一款支持文件同步的工具,广泛应用于备份和传输

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

【Java编程的逻辑】原子变量 CAS 显示锁

原子变量 在理解synchronized中有使用synchronized保证原子更新操作,但是使用synchronized成本太高了,需要先获取锁,最后还要释放锁,如果获取不到锁还需要等到。这些成本都是比较高的,对于这种情况,可以使用原子变量。 Java并发包中的基本原子变量类型有以下几种: AtomicBoolean:原子Boolean类型,常用来在程序中表示一个标志位 AtomicIn