[Bluetooth Core V4.2 ] VOL2, PartB, 4 Logical Transports

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逻辑传送是不可靠的。为了提升可靠性每个包载荷需被发送多次。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值