蓝牙基带 链接控制器操作

8 链接控制器操作

这章节描述了如何建立微微网,以及如何将设备加入或退出微微网。设备定义了多种状态以支持这些功能。此外,也描述了分布网,其在多个微微网内操作一个或多个共同成员。

8.1 状态概览

图8.1展示了链接控制不同状态的状态图。这里有三个主要状态:待机,连接和停泊;此外,有9个子状态,呼叫,呼叫扫描,询问,询问扫描,同步顺序,同步扫描,主设备应答,从设备应答,和询问应答。注意主设备应答,从设备应答和询问应答子状态不展示在这个简化的图上。子状态是暂时的状态,用来建立连接和使能设备发现。为了一个状态或子状态移动到另一种,可以使用从链接管理器来的命令,或在链接控制器内部的信号(例如相关的翻转信号和超时信号)。 

8.2 待机待机状态

待机状态是设备的默认状态。在这个状态下,设备应处在一个低功耗模式。只有自身时钟运行在LPO精度(或更好)。

控制器可以离开待机状态以进行扫描呼叫消息或询问消息,或自身进行呼叫或询问。

8.3 连接建立子状态

为了建立新的连接,需要用到呼叫过程或同步扫描过程。在使用呼叫过程建立连接时只需要蓝牙设备地址。了解时钟,获取的时钟来自从设备的询问进程(见章8.4)或之前的连接,获取其他设备的呼叫扫描模式以加快呼叫过程。一个使用呼叫进程建立连接的设备将自动成为主设备。一个使用同步扫描过程建立连接的设备需要以下两个步骤。第一步,从同步扫描子状态开始,BR/EDR控制器紧跟着同步扫描进程从主设备收集时钟,包时序和AFH通道映射信息,然后转换成待机模式。第二步,主设备发出命令,BR/EDR控制器从待机状态转换到连接状态的非连接从广播模式。
截短的呼叫过程是呼叫过程的修改版,且用在专门在从设备上生成一个呼叫应答超时。
8.3.1 呼叫扫描子状态

在呼叫扫描子状态内,设备可被配制成使用标准或广义隔行扫描过程。在一个标准扫描期间,设备以扫描窗口Tw_page_scan为周期监听(默认11.25ms),广义隔行扫描以两个背靠背的Tw_page_scan完成。如果扫描间隔不是扫描窗口的两倍以上,广义隔行扫描不能使用。在每个扫描窗口期间,设备应在一个单跳变频率上监听,它的相关器匹配它自己的设备访问码(DAC)。扫描窗口应足够长,以完整扫描16个呼叫频率。
当设备进入呼叫扫描子状态,它应根据设备的蓝牙设备地址所决定的呼叫跳变序列来选择扫描频率,见章2.6.4.1。序列的相位应由设备自身时钟的CLKN16-12决定;那就是说,每1.28s需选择一个不同的频率。
在标准扫描的情况下,如果在呼叫扫描期间相关器超出了翻转门限,设备应进入从设备应答子状态,描述于章8.3.3.1。扫描设备也可使用广义隔行扫描。这种情况下,如果相关器不能在第一次扫描期间超出翻转门限,它应使用另一个相位扫描第二次,这个相位取决于[CLKN16-12 + interlace_offset] mod32。如果在第二次扫描时相关器超出了翻转门限,设备应使用[CLK16-12 + interface_offset] mod32 作为Xprs的冻结时钟CLKN*(见章2.6.4.3),以进入从设备应答子状态。如果相关器在普通模式内的一个扫描期间或是在隔行扫描模式内的第二个扫描期间没有超过翻转门限,它应回到待机或连接状态。
interlace_offset值的范围是0到31。值16应被使用,除非时隙的范式在扫描时不可用,这种情况下应使用不同的值。
呼叫扫描子状态能从待机状态或连接状态进入。在待机模式内,没有连接被建立且设备能使用所有容量以执行呼叫扫描。在从连接状态进入呼叫扫描子状态之前,设备应为了扫描尽可能保留足够的容量。如果可行的话,设备可将ACL连接放置在保持,停泊或嗅探(见章8.8和8.9)。同步链接不应被呼叫扫描中断,虽然eSCO重传可能在扫描期间被暂停。呼叫扫描可以被保留同步时隙中断,这些时隙比呼叫扫描的优先级高。SCO在使用时需要最少数量的容量(HV3包)。扫描窗口应被增大以最小化安装延时。如果一个SCO逻辑运输使用的是HV3包且Tsco=6时隙或一个eSCO逻辑运输使用EV3包且Tesco=6时隙,建议一个完整的扫描窗口Tw_page_scan至少有36个时隙(22.5ms);如果两个SCO链接使用HV3包且Tsco=6时隙或两个eSCO链接使用EV3包且Tesco=6时隙,建议一个完整的扫描窗口最少有54个时隙(33.75ms)。

扫描间隔Tpage_scan被定义以作为两个连续的呼叫扫描的开始处的间隔。扫描间隔等于扫描窗口Tw_page_scan(连续扫描),扫描间隔最大1.28s,扫描间隔最大2.56s,这三个情况决定了扫描设备的行为;那就是说,不论呼叫设备应使用R0,R1,R2,见章8.3.2。表8.1给出立刻Tpage_scan和R0,R1,R2之间的关系。虽然在R0模式内是连续的扫描,扫描可以被保留同步时隙打断。扫描间隔信息在FHS包内被包含在SR域内。 

8.3.2 呼叫子状态

呼叫子状态由主设备使用以激活和连接到一个呼叫扫描子状态内的从设备。主设备尝试与从设备的扫描活跃相一致,靠的是在不同跳变通道上重复传送包含从设备设备访问码(DAC)的呼叫消息。由于主设备的蓝牙时钟和从设备的不同步,主设备不知道从设备唤醒的确切时间和在哪个跳变频率上。因此,它在不同的跳变频率上传送一个相同的呼叫扫描信息顺序,且在发送间隔持续监听,直到它收到一个从设备的应答。

主设备的呼叫过程包含一定数量的步骤。第一,主机将从设备的BD_ADDR传递给控制器。这个BD_ADDR应被主设备使用以决定呼叫跳变序列;见章2.6.4.2。为了序列的相位,主设备应使用从设备时钟的估算。例如,这个估算能从最近与这个设备不期而遇的设备所交换的时序信息中获取(此时这个设备可作为主设备),或从询问过程来。有CLKE作为设备的蓝牙时钟的估算,主设备能预测从设备开始呼叫扫描的跳变通道。

从设备内的蓝牙时钟的估算可能完全是错误的。虽然主设备和从设备使用相同的跳变序列,但他们使用的是序列中的不同的相位,且可能从不使用相同的频率。为了补偿时钟漂移,主设备应在一个短的时间间隔期间在一定数量的唤醒频率上发送它的呼叫消息。它也应在当前预测的跳变频率的之前和之后发送。在每个TX时隙期间,主设备应连续在两个不同的跳变频率上发送。在其后的RX时隙内,接收器应连续监听两个对应的RX跳变,为的是ID包。RX跳变应根据呼叫应答跳变序列来选择。呼叫应答跳变序列严格相关于呼叫跳变序列:每个呼叫跳变对应一个呼叫应答跳变。在呼叫子状态内的RX/TX时序描述于章2.2.5,见图2.7。在下一个TX时隙,主设备应在两个不同于之前的跳变频率上传输。注意:跳变速率增大到3200hops/s。

以上述描述的跳变速率,发送器能在10ms内的16个时隙内覆盖16个不同的跳变频率。呼叫跳变序列被分成两个16个频率的呼叫顺序A和B。顺序A包括环绕在当前预测跳变频率f(k)周围的16个跳变频率,k由时钟估算CLKE16-12决定。第一个顺序包括序列 
f(k-8), f(k-7),…,f(k),…,f(k+7) 
主设备和从设备之间的蓝牙时钟之间的差值在-8x1.28s到7x1.28s之间,主设备使用的跳变频率将是从设备监听的跳变频率。由于主设备不能知道从设备何时进入呼叫扫描子状态,主设备不得不重复将顺序A重复Npage次,或直到获取1个应答,无论这应答有多短。如果从设备扫描间隔对应R1,重复次数最少256次。如果主设备之前从未读过从设备的SR模式,它应使用Npage>=256。注意CLKE16-12每1.28s改变一次;因此,每1.28s,顺序将包括呼叫跳变设定的不同频率。

当主设备和从设备之间的蓝牙时钟的差值小于-8x1.28s或大于7x1.28s,剩余的16个跳变被用来形成新的10ms顺序B,第二个顺序包括的跳变为 
f(k-16), f(k-15),…,f(k-9),f(k+8)…,f(k+15) 
顺序B应被重复Npage次。如果没有获取到应答,knudge可被升级,这种情况时时隙的接收是周期性的不可行,且顺序A应被重新以Npage次尝试。交替使用顺序A和B且升级knudge应持续直到收到一个应答,或超时pageTO期满。当extended_pageTO大于0,超时应扩展到(pageTO+extended_page_TO)。如果从设备返回了应答,主设备进入主设备应答子状态。

呼叫子状态可由待机会连接状态进入。在待机状态,没有建立连接且设备能使用所有容量以执行呼叫。在从连接状态进入呼叫子状态之前,设备应为了呼叫以尽可能多释放容量。为了确保这一点,建议将ACL连接放置在保持或停泊上。然而,同步连接不能被呼叫打扰。这意味着呼叫将被有着更高优先级的保留SCO和eSCO时隙打断。为了使呼叫获取更多的容量,建议使用消耗容量最少的SCO包(HV3包)。如果存在SCO或eSCO链接,单个顺序的重复次数Npage应被增加,见章8.2。假设所用HV3包的间隔是Tsco=6时隙,或所用EV3包是间隔Tesco=6时隙,这将对应一个64kb/s的同步链接。 

呼叫顺序的结构应独立于同步链接的存在;那就是说,同步包在保留时隙内发送,但不应影响处在非保留时隙内的跳变频率,见图8.2。 

8.3.3 呼叫应答子状态

当从设备成功接收呼叫消息时,在主设备和从设备之间就有了一个粗略的FH同步。主设备和从设备都进入一个应答子状态,交换至关重要的信息,使连接建立能够继续。对于微微网的连接而言非常重要的是,两个设备应使用相同的通道访问码,使用相同的通道跳变序列,且他们的时钟是同步的。这些参数应来源于主设备。初始化连接(开始呼叫)的设备被定义为主设备(它仅在微微网存在期间是有效的)。通道访问码和通道跳变序列应源自主设备的蓝牙设备地址(BD_ADDR)。时序由主设备的时钟决定。一个偏置应加在从设备本身的时钟上,使从设备的时钟暂时同步于主设备的时钟。在加载时,主设备的参数从主设备发送到从设备。本章节定义了主设备与从设备之间在加载时的消息。

主设备与从设备之间的初始化消息在表8.3和图8.3、图8.4中。在这两个图上,频率f(k),f(k+1)是由从设备的BD_ADDR决定的呼叫跳变序列的频率。频率f’(k),f’(k+1)是对应的呼叫应答频率(从设备到主设备)。频率g(m)数据基础通道跳变序列。 

在步骤1里,主设备处在呼叫子状态,且从设备在呼叫扫描子状态。假设在此步骤内,呼叫消息由主设备发出且到达了从设备。在接收呼叫消息时,从设备进入了步骤2的呼叫应答状态。主设备等待从设备的回复且当在步骤2时回复到达了,它应进入步骤3的主设备应答。注意在初始的消息交换期间,所有参数应来源于从设备,且只有呼叫跳变和呼叫应答跳变序列是可用的(也来源于从设备的设备地址)。注意当主设备和从设备进入了应答状态,他们给到呼叫和呼叫应答的跳变选择时钟输入被冻结,具体表述于章2.6.4.3。 


在截短呼叫进程的例子中,消息停止于图8.3中的步骤2的序列之后。这个进程描绘于图8.5和8.6中。 


8.3.3.1 从设备应答子状态
在步骤1内,收到呼叫消息之后,从设备应在步骤2内发送一个从设备呼叫应答消息(从设备访问码)。从设备应在收到呼叫消息的625us后发送这个应答,且应答跳变频率应该对应于收到的呼叫消息的跳变频率。从设备传输因而与主设备传输的时间对齐。在初始化消息期间,从设备应一直使用呼叫应答跳变序列以将信息返回给主设备。时钟输入的CLKN16-12应被冻结,值为收到呼叫消息的时间。
在已经发送了应答消息后,从设备的接收器应在应答消息开始后的312.5us内保持活跃,且应等待一个FHS包的到达。注意一个FHS包能在呼叫消息到达后的312.5us后到达,如图8.4,且不能在625us之后,因为这是微微网物理通道RX/TX时序的通常情况。在章2.4.4中可找到有关此时序的更多内容。

如果在连接状态达成之前,装载失败了,如下进程应当被执行。从设备应在没有收到FHS包时持续监听,直到pagerespTO超时。每1.25ms,应当依据呼叫跳变序列选择下一个主从跳变频率。如果在pagerespTO后没有收到任何东西,从设备应回到呼叫扫描子状态并保持一个扫描周期。扫描周期的长度取决于当前的同步保留搜索时隙。如果在这个附加的扫描周期内仍未接收到呼叫消息,从设备应将扫描恢复到规则的扫描间隔且恢复到比第一个呼叫扫描状态更高级的状态。

如果一个FHS包被一个处在从设备应答子状态的从设备接收到,从设备应在步骤4返回一个从设备呼叫应答消息,以告知FHS包已收到。这个应答应使用呼叫应答跳变序列。从设备呼叫应答包的传送基于FHS包的接收。然后从设备应依照FHS包,变成主设备的通道访问码和时钟。只有主设备时钟的26MSBs被传送:在FHS包收到的时间,时序比如CLK1和CLK0都为0,因为主设备仅在奇数时隙发送。主设备时钟和从设备时钟的偏置应由FHS包内的主设备时钟决定且记录在从设备基带资源管理器。

最终,从设备在步骤5进入连接状态。自此,从设备应使用主设备的时钟和主设备的BD_ADDR,以决定基础通道跳变序列和通道访问码。从设备应在FHS净荷中使用LT_ADDR作为连接状态的首要LT_ADDR。连接模式应开始于一个POLL包从主设备的发送。从设备可以用任何类型的包应答。如果从设备没有收到POLL类型的包,或主设备没有收到应答包,在FHS包告知已收到后的newconnectionTO数量的时隙内,主设备和从设备应分别回到呼叫和呼叫扫描子状态,见章8.5。

8.3.3.2 主设备应答子状态

在步骤2内,当主设备已经收到从设备的一个呼叫应答消息时,且主设备没有执行截短呼叫进程,它应进入主设备应答动作。它应冻结呼叫跳变选择计划的当前时钟输入。主设备然后应在步骤3发送一个包含了主设备实时蓝牙时间的FHS包,主设备BD_ADDR,BCH奇偶位,和设备类型。FHS包包含所有信息以建立通道访问码,而不需要从主设备蓝牙设备地址中用数学方法导出。在F主设备应答子状态内,HS包头的LT_ADDR域应设为全0。FHS包应在紧跟着从设备应答的主从时隙的开始被发送。FHS包应承载全0的LT_ADDR。FHS的TX时序并不基于收到从设备应答包。FHS包因此可在收到应答包的312.5us后被发送,见图8.4,且不能晚于收到包的625us,因为这是微微网物理通道RX/TX时序的通常情况,见章2.4.4。

在主设备发送了它的FHS包后,它应在步骤4内等待第二个从设备呼叫应答消息,告知FHS包已经收到。这个应答应答是从设备的设备访问码。如果没有收到任何应答,主设备应使用一个更新后的时钟来重传FHS包,且需一直使用从设备的参数。每次重传的FHS包的时钟都被更新过,直到收到一个第二从设备呼叫应答消息,或pagerespTO超时达到。在后一个例子中,主设备应回到呼叫子状态且发送一个错误消息给基带资源管理器。在重传FHS包的期间,主设备应使用呼叫跳变序列。

如果收到从设备的应答,主设备应变成使用主设备参数,然后它应使用通道访问码和主设备时钟。在FHS包发送开始时,CLK0和CLK1的低时钟位应复位到0,且不应包含在FHS包内。最终,主设备在步骤5进入连接状态。主设备的BD_ADDR往往改成一个新的跳变序列,基础通道跳变序列。基础通道跳变序列使用全部的伪随机形式的79个跳变通道,见章2.6.4.7。主设备现在应以新的(主设备的)参数发送它的第一个通信包。第一个包应是一个POLL包。见章8.5。这个包应在FHS包的告知已接收后的newconnectionTO数量的时隙内被发送。从设备可用任何形式的包应答。如果在newconnectionTO数量的时隙内,POLL包并未被从设备接收,或POLL包的应答未被主设备接收,主设备和从设备应各自回到呼叫和呼叫扫描子状态。

8.4 设备发现子状态

为了发现其他设备,一个设备应进入询问子状态。在这个子状态,它应在不同的跳变频率重复发送询问消息(ID包,见章6.5.1.1)。询问跳变序列来源于GIAC的LAP。因此,即使DICAs已经被使用,应用的跳变序列由GIAC LAP产生。一个设备允许其自身被发现,应有规律的进入询问扫描子状态以应答询问消息。后续章节描述了询问应答期间的消息交换和争用分辨率。询问应答是可选的:一个设备并不被强制应答一个询问消息。

在询问子状态期间,正在发现的设备收集所有应答询问消息的蓝牙设备地址和时钟。另外,正在发现的设备也收集以扩展询问应答包回复的设备的扩展信息(例如本地名称和支持的服务)。如果需要的话,可以用之前描述的呼叫进程与被发现的设备中的任意一个建立一个连接。

源设备的询问消息广播不包含任何有关源设备的信息。然而,它会指出何种设备需要应答。有一个通用询问访问码(GIAC)以询问任何设备,和一定数量的专用询问访问码(DIAC)仅询问确定类型的设备。询问访问码源于保留的蓝牙设备地址且更多描述与章6.3.1。

8.4.1 询问扫描子状态

询问扫描子状态与呼叫扫描子状态很相似。然而,不用设备的设备访问码,接收器搜索询问访问码的时常应足以完整地搜索16个询问频率。两种扫描类型被定义:标准和广义交错。例如一个标准扫描,扫描周期的长度被标为Tw_inquiry_scan(默认11.25ms,见HCI 章7.3.22)。标准扫描在一个由Xir4-0定义(见章2.6.4.6)的单跳变频率完成。广义交错扫描由两个背靠背Tw_inquiry_scan的扫描完成,第一个扫描在普通的跳变频率,第二个扫描由[Xir4-0 + interlace_offset] mod 32 定义。如果扫描间隔小于两倍的扫描窗口,广义交错扫描不能被使用。询问进程根据询问跳变序列使用32个专门的询问跳变频率。这些频率由通用询问地址决定。相位由执行询问搜索的设备的自身时钟决定;相位每1.28s改变一次。

Interlace_offset的值范围为0-31。值16应当被使用,除非时隙的模式不可用于扫描,暗示着可以使用一个不同的值。

替换或附加于通用询问访问码,设备可扫描一个或多个专门的询问访问码。然而,扫描应紧跟着由通用询问地址决定的询问扫描跳变序列。如果一个询问消息在询问唤醒周期内被接收,设备应进入询问应答子状态。

询问唤醒子状态能从待机状态或连接状态进入。在待机状态,未建立任何连接且设备能使用所有容量以负载询问扫描。在从连接状态进入询问扫描子状态之前,设备应为扫描尽可能保留更多容量。如果可以的话,设备应把ACL逻辑传送放在嗅探,保持或停泊。同步逻辑传送最好不要由新闻扫描中断,虽然eSCO重传应在扫描期间暂停。在这个例子里,询问扫描可被保留同步时序中断。SCO包应使用最少容量(HV3包)。扫描窗口,Tw_inquiry_scan,应被增加以增大应答一个询问消息的可能性。如果一个SCO逻辑传送当前使用HV3包且Tsco=6时隙,或一个eSCO逻辑传送当前使用EV3包且Tesco=6时隙,建议完整的扫描窗口至少是36时隙(22.5ms);如果两个SCO链接当前使用HV3包且Tsco=6时隙,或两个eSCO链接使用EV3包和Tesco=6时隙,建议完整的扫描窗口至少是54时隙(33.75ms)。

扫描间隔Tinquiry scan 由两个连续的询问扫描之间的间隔定义。询问扫描间隔应不少于或等于2.56s。

8.4.2 询问子状态
询问子状态用来发现新的设备。这个子状态与呼叫子状态非常相似;TX/RX时序与呼叫时相同,见章2.4.4和图2.7。TX和RX频率应跟随询问跳变序列和询问应答跳变序列,且决定于通用询问访问码和正在发现设备的自身时钟。在两个询问传输之间,接收器应搜索询问应答消息。当一个应答被收到时,整个包(一个FHS包)应该被读取。如果在FHS包内的EIRbit被设为1,设备应在FHS包开始后的1250us内,尝试接收扩展询问应答包。在此之后,设备应继续询问传输。一个在询问子状态的设备不应告知询问应答消息已收到。如果由主机使能(见HCI章7.3.50),询问应答消息的RSSI值应被测量。应在不同跳变通道内保持探测,且监听应答包。在呼叫子状态内,两个10ms顺序A和B被定义,将32个询问跳变序列分裂成两组16跳变。在一个新顺序被使用前,一个单顺序应被重复至少Ninquiry=256次。为了在一个无错误的环境中收集所有应答,至少3此顺序切换是必须完成的。结果是,询问子状态可能不得不延迟10.24s,除非询问者收集了足够的应答且较早中止询问子状态。如果愿意的话,询问者也可延长询问子状态以增加在一个易出错环境内收到所有应答的可能性。当一些接收时序是周期性不可用时,可能在一个无错误环境内收集所有应答需最多31个顺序切换,取决于可用接收时隙的模式。在每次切换顺序到A之前,knudge可被升级。结果是,询问子状态可能不得不持续40.96s。如果一个询问进程自动周期性初始化(每分钟有一个10s的周期),那么两个询问例子之间的间隔应被随机决定。这被完成以避免两个设备同步他们的询问进程。

询问子状态持续到被基带资源管理器停止(当它决定它已经有了足够数量的应答),当一个超时到达(inquiry_length),或以一个从主机来的取消询问进程的命令。假使extended_inquiry_length不同于0,超时可能被扩展到(inquiry_length + entended_inquiry_length)。

询问子状态能从待机状态或连接状态进入。在待机状态内,没有连接被建立且设备能使用所有能力以执行询问。在从连接状态进入询问子状态之前,设备应尽可能为了询问释放更多容量。为了确保此事,建议把ACL逻辑传送放在嗅探,保持和停泊。然而,同步逻辑传送的保留时隙应不能被询问扰乱。这意味着询问将被有着比询问的优先级更高的保留SCO和eSCO时隙打断。为了让询问获取更多容量,建议使用最少容量的SCO包(HV3包)。如果SCO或eSCO链接存在,Ninquiry重复次数应被增加,见表8.4。 
假设以一个间隔Tsco=6时隙的HV3包,或以一个间隔Tesco=6时隙的EV3包,将对应一个64kb/s同步链接。 

如果一个扩展询问应答包由于更高优先级的通信而不能被接收,由于HEC或CRC失败导致接收失败,或由于设备不支持包的类型,询问应答应被汇报给更高的层,作为一个全零数据的扩展询问应答。

8.4.3 询问应答子状态

从设备有关询问的应答子状态与从设备应用在呼叫应答子状态上时完全不同。当询问消息在询问扫描子周期被接收,接收端应返回一个询问应答(FHS)包,这个包包含了接收端的设备地址(BD_ADDR)和其他参数。如果接收端有一个非零的扩展询问应答数据要发送,它应在FHS包之后返回一个扩展询问应答包。

从设备询问应答用到如下协议。询问扫描子状态中收到第一个询问消息,从设备应进入询问应答子状态。如果从设备有非零扩展询问应答数据需要发送,它应在收到询问消息的625us后返回一个有着EIRbit=1的FHS包给主设备。它然后应在FHS包开始的1250us之后返回一个扩展询问应答包。如果从设备的扩展询问应答包是全零,从设备只应回复一个有着EIRbit=0的FHS包。一个竞争问题出现了,当许多设备过于接近正在搜寻的设备时,且所有设备在同一时间应答了询问消息。然而,由于每个设备有一个自由运行的时钟,这不利于他们都使用询问跳变序列中的同一个相位。为了避免在相同询问跳变通道内同时被唤醒的设备之间的重复碰撞,设备应有一个随机周期时间的退避。因此,如果设备接收到询问消息且返回一个FHS包,它应生成一个随机数,RAND,在0和MAX_RAND之间。对于正在扫描间隔>=1.28s的情况MAX_RAND应为1023,然而对于正在扫描间隔小于<1.28s的情况MAX_RAND可以小于127。一个使用特殊DIAC的profile可能在扫描间隔>=1.28s的情况下选择MAX_RAND小于1023。从设备应在至少RAND次时隙周期期间回到连接或待机状态。在回到连接和待机状态之前,设备应经历呼叫扫描子状态。在最少RAND时隙完成后,设备应增加1个偏置1到询问跳变序列的相位上(相位的分辨率是1.28s)且再次返回询问扫描子状态。如果从设备被再次触发,它应使用一个RAND重复此进程。一个FHS包每次会返回时钟积累的补偿。在探测窗口期间,一个从设备应多次应答,但要在不同的频率和不同的时间。保留同步时隙的优先级应高于应答包;那就是说,如果一个应答包与保留同步时隙重叠,它不应被发送,但下一个询问消息继续等候。如果一个设备需要发送扩展询问应答数据,但扩展询问应答包与保留同步时隙有重叠,FHS包在发送时的EIRbit应等于0。

在询问例程期间内的消息概述于表8.5。在步骤1内,主设备使用询问访问码和它本身的时钟发送一个询问消息。从设备回复一个包含着从设备蓝牙设备地址,自身时钟和其他从设备信息的FHS包。FHS包以一个随机时间被返回。FHS包在询问例程内不被告知已接收,但它在其他时间和频率上被重传,只要主设备正在探测询问消息。如果从设备有非零扩展询问应答数据,它会在步骤3发送一个扩展询问应答包给主设备。

扩展询问应答包是一个ACL包,类型有DM1,DM3,DM5,DH1,DH3,DH5。为了最小化干扰,建议使用最短的包来适配数据。包应在FHS包开始的1250us后,在与FHS包相同的频率上被发送。在包头部内,LT_ADDR应被设为0。类型应为DM1,DM3,DM5,DH1,DH3或DH5中的一种。FLOW,ARQN和SEQN应被设为0且在接收时被忽略。HEC LFSR应同FHS包一样,以相同的DIC初始化(默认检查初始化)。在净荷头部内,LLID应包含值10(L2CAP消息的开始或没有分帧)。FLOW应被设为0且在接收时被忽略。净荷身体的长度(LENGTH)应小于或等于240字节。CRC LFSR应用与FHS包一样的DCI来初始化。数据白化LFSR应用于FHS包一样的值来初始化。

净荷数据有两部分,一个重要的部分跟在非重要部分。重要部分包含了数据结构的序列,定义在章8。非重要部分包含全零八进制数。

基带应不能改变重要部分的任何八进制数。当传送数据时,非重要部分八进制数应从净荷上省略。

一个设备应存储一个简单的扩展询问应答包。这个包应被所有IACs所使用。 


8.5 连接状态

在连接状态内,连接被建立且包能被前向或后向发送,除了非连接从广播模式,这个例子中包只由主设备发送。在两个设备当中,通道(主设备的)访问码,主设备的蓝牙时钟,和AFH_channel_map被用到。连接状态使用基础或适配通道跳变序列。

进入连接状态的方式有两种。一个设备可以从呼叫/呼叫扫描子状态转移到连接状态,或是直接从待机状态进入连接状态的非连接从广播模式。

如果一个设备从呼叫/呼叫扫描模式进入,连接状态以从主设备发送一个POLL包作为开始,为的是核实切换到主设备的时序和通道频率跳变。从设备可以任何形式的包应答。如果从设备不能接收POLL包或主设备不能在newconnectionTO数量的时隙内收到应答包,两个设备都应回到呼叫/呼叫扫描子状态。

在连接状态内的第一个信息包包含控制消息,它描述了链接,且给出了设备的更多信息。这些消息被在设备的链接管理器之间交换。例如,他们可能定义了SCO逻辑传送和嗅探参数。然后用户信息的发送器能开始轮流发送和接收包。

通过一个分离(detach)或复位(reset)命令退出连接状态。分离命令用在假如链接已经通过普通的方式取消链接;所有在链接控制器内的配置数据应维持有效。复位命令是链接控制器的软件复位。软件复位的功能性描述于章7.3.2。

在连接状态,如果一个设备在任何时候并未在通道上处在一个普通状态,可以被描述为它用嗅探模式或保持模式,使得设备不可用。

如果一个设备进入了连接状态的非连接从广播模式,主设备在CSB逻辑传送上开始发送消息,且从设备开始接收从CSB逻辑传送上发送的包。 

8.6 活跃模式

在活跃模式内,两个主设备和从设备活跃参与到通道上。一个微微网内同时最多有七个从设备在活跃模式。主设备基于从不同从设备来的或者到不同从设备的的通信需求来完成调度。另外,它支持有规律的传输以使从设备与通道保持同步。从设备在活跃模式时在主从时隙监听包。这些设备被称为活跃从设备。如果一个活跃从设备没有被寻址,它可能在睡眠,直到下一个新的主设备传输来到。从设备可以在包头部的TYPE域中得到主设备保留的用来传输的时隙数量;在这个时间内,非寻址从设备不需要在主从时隙内监听。当一个设备正在加入复用微微网时,它应当在当前微微网监听主从时隙。建议设备不要远离各个微微网,因为加入需要多于Tpoll的时隙。一个周期性主设备传输是需要的以使从设备保持通道同步。由于从设备只需要通道访问码来同步,任何的包类型都能用上。

从设备只有在被它所拥有的LT_ADDRs之一(首要或次要)寻址时可能在下一个从主时隙返回一个包。如果没有收到合法的包,从设备只能在它保留的SCO或eSCO从主时隙内应答。在一个广播消息的例子中,没有从设备应返回一个包(例外情况是停泊状态内的访问请求使用的访问窗口,见章8.9)。 

对ACL逻辑传送来说,模式选择可能留给实时包类型来选择。在章6.5中的包类型表(ptt)允许为各个包类型码选择基础速率或增强数据速率;然而,DM1包在所有包类型表里都是可用的。在给定物理或逻辑链接通道上的ACL通信应使用表6.2中使用的包类型。

8.6.1 在活跃模式的轮询

主设备在微微网上总拥有全部的控制。由于TDD设计,从设备只能和主设备通信,且不能同其他从设备通信。为了避免在ACL逻辑传送上的冲突,从设备只被允许当先前的主从时隙内的包头部的LT_ADDR地址匹配时才可以在从-主时隙时通信。如果在先前的时隙内LT_ADDR不匹配,或没有收到有效的包头部,从设备不能传输。

主设备通常尝试轮询一个从设备的ACL逻辑传送,一般是在每个Tpoll时隙内不少于一次。Tpoll由链接管理器设置(见章4.1.8)。

从设备的ACL逻辑传送可能被任何类型的包轮询,除了FHS和ID。例如,在SCO期间可能使用HV包,因为从设备可能以一个DM1包来应答一个HV包(见章8.6.2)。

8.6.2 SCO

主设备通过LM协议发送一个SCO加载消息即可建立SCO逻辑传送。这个消息包含了时序参数,包括专门用于保留时隙的SCO间隔Tsco和补偿Dsco。

为了防止环绕处理问题,LMP加载消息内有一个初始化标志,用来标示正在使用的初始化进程是1或者2。从设备应使用在初始化标志上标示的初始化方式。如果当前的主设备时钟的最高位(CLK27)是0,主设备应使用初始化1;如果当前的主设备时钟的最高位(CLK27)是1,主设备应使用模式2。由主设备和从设备保留的主-从SCO时隙的时钟应满足如下等式:

CLK27-1 mod TSCO = DSCO for initialization 1 
(CLK27,CLK26-1) mod TSCO = DSCO for initialization 2

从-主SCO时隙应直接跟在保留主-从SCO时隙后。在初始化后,下一个主-从SCO时隙的时钟值CLK(K+1)应来源于将固定间隔Tsco加上当前主-从SCO时隙的时钟值:

CLK27-1(k+1) = CLK27-1(k) + TSCO

在保留主-从时隙内主设备以有规则的间隔(时隙内的SCO间隔Tsco)发送SCO包给从设备。一个HV1包能以64kb/s速率搭载1.25ms的语音。因而一个HV1包应每两次时隙发送一次(Tsco=2)。一个HV2包能以64kb/s速率搭载2.5ms的语音。因而一个HV2包应每四次时隙发送一次(Tsco=4)。一个HV3包能以64kb/s速率搭载3.75ms的语音。因而一个HV3包应每6次时隙发送一次(Tsco=6)。

从设备可以在为了它的SCO逻辑传送而保留的时隙内发送,除了之前的时隙内的(有效)LT_ADDR指示的是不同的从设备。如果在之前的时隙内不能得到有效的LT_ADDR,从设备仍可以在保留SCO时隙内发送。

由于DM1包在SCO逻辑传送上被承认,它可以在SCO保留时隙期间传送,要求是有着首要LT_ADDR的有效包头部在前一个时隙被接收。在SCO保留时隙期间DM1包只应被用来发送ACL-C数据。

从设备不允许在保留SCO时隙内发送除了一个HV包以外的任何其他内容,除非在之前的主-从传输时隙内的包的包头内解码出了它所拥有的从设备地址。

8.6.3 eSCO

主设备通过LM协议发送一个eSCO加载消息即可建立eSCO逻辑传送。这个消息包括的时序参数有专门用于保留时隙的eSCO间隔Tesco和补偿Desco。

为了进入eSCO,主设备或从设备应通过LM协议发送一个eSCO加载命令。这个消息应包括eSCO间隔Tesco和一个补偿Desco。为了方式时钟环绕处理问题,在LMP加载消息内有一个初始化标志指示了用的是初始化1或2。如果当前主时钟(CLK27)的最高位是0,初始化时应使用初始化1;如果当前主时钟(CLK27)的最高位是1,应使用初始化2。对应设备应使用初始化指示中标示的初始化方式。为主设备和从设备保留的主-从eSCO时隙在初始化时隙的时钟应满足适当的等式:

CLK27-1 mod TeSCO = DeSCO for initialization 1 
(CLK27,CLK26-1) mod TeSCO = DeSCO for initialization 2

从-主设备eSCO时隙应直接跟在保留主-从eSCO时隙后。在初始化后,下一个主-从eSCO时隙的时钟值CLK(k+1)应该是固定间隔Tesco加上当前主-从eSCO时隙的时钟值:

CLK27-1(k+1) = CLK27-1(k) + TeSCO

当一个eSCO逻辑传送被建立时,主设备应安排一个附加的LT_ADDR给从设备。这提供给eSCO逻辑传送一个ARQ机制,与ACL逻辑传送区区分开。在一个特别的eSCO逻辑传送上的 
所有通信,也只有eSCO通信,由eSCO LT_ADDR运载。eSCO ARQ机制在包头部有ARQNbit,且操作与在ACL链接上的ARQ机制类似。

eSCO有两种不同的轮询规则。在eSCO保留时隙内,轮询规则与SCO保留时隙相同。主设备可在主设备时隙发送一个包。从设备可在eSCO LT_ADDR上,跟随如下时隙发送:可以是在之前的时隙里在eSCO LT_ADDR上收到一个包,或者是在之前的时隙里没有收到一个合法的包头。当主-从包类型是一个3时隙包时,从设备传送的时隙是eSCO保留时隙的第四个时隙。主设备应在eSCO重传窗口内的一个给定的eSCO LT_ADDR上发送信号,限定条件是寻址地址是LT_ADDR或是紧接在前面的eSCO保留时隙内没有发送任何包。只有在从设备不能在eSCO保留时隙内收到一个有着不同LT_ADDR的有效包头的情况下,从设备才可以在eSCO保留时隙内的eSCO LT_ADDR上发送。在重传窗口内,使用与ACL通信相同的轮询规则:只有在eSCO通道上的之前的主-从传输时隙内收到一个有效包头和正确的LT_ADDR,从设备才应在eSCO通道上发送。主设备可以在eSCO重传窗口内的任何主-从传输时隙内的任何非eSCO LT_ADDR上传输。如果在重传窗口内留有足够的时隙以完成主设备和从设备的包的传输,主设备应只能在重传窗口内的eSCO LT_ADDR地址上发送数据。主设备可在任何eSCO重传窗口期间的任意时隙内抑制传输。当主设备到从设备之间没有数据需要传输时,可能是由于通信是单向或由于主-从包已经被告知收到,主设备应使用POLL包。当主-从包已经被告知收到,且从-主包已经被正确接收,主设备不应再在eSCO LT_ADDR上寻址从设备,直到下一个eSCO保留时隙到来,除了主设备可能在eSCO LT_ADDR上传送一个ARQN=ACK的NULL包。当没有数据需要从设备发送给主设备时,要么是由于通信是单向的,或由于从-主包已经被告知收到,从设备应使用NULL包。eSCO通信在重传窗口内比ACL通信有更高优先级。

图8.9展示了单个时隙包在eSCO窗口的使用。 


当多时隙包被用在eSCO逻辑传送的其中一个方向时,第一个传送持续到后续的时隙中。在这个例子中,重传窗口起始于从-主包结束之后。例如紧接在eSCO瞬间后面的2,4,6时隙被保留且不能用于其他通信。图8.10展示了一个方向上是多时隙包,另一个方向上是单时隙包。 

eSCO窗口在主设备上可能重叠,但不可能在一个单独的从设备上重叠。

在保留时隙内,主设备和从设备只能在各自的eSCO窗口的第一次传送的各自分配的时隙监听和发送信息。间歇性失误,例如连接建立阶段的时间关键信号被允许。主设备和从设备能各自克制发送数据,且可使用POLL和NULL包做替代。当主设备用POLL包替代EV4或EV5包时,从设备开始发送信息的时隙不变,就好像主设备发送的是一个EV4或EV5包。如果从设备在保留主-从传送时隙内没有收到任何信息,它传送信息的时隙不变,就好像主设备已经发送了协商包类型。例如,如果主设备已经协商了一个EV5包,从设备将在3个时隙之后发送。如果主设备未能收到一个从设备的发送信息来作为一个eSCO包的应答,它将导致一个考虑中的内含了NAK的包。在重传窗口期间的从设备的监听要求与一个活跃的ACL逻辑传送相同。

8.6.4 广播机制

微微网中的主设备能广播消息给所有在ASB-U,PSB-C,PSB-U逻辑传送上的从设备。一个ASB或PSB广播包应有一个全0的LT_ADDR。每个新的广播消息(可由一定数量的包来负载)应开始于开头有着(LLID=10)指示的L2CAP消息。

广播LT_ADDR应使用一个ptt=0。

一个广播包永远不用告知接收。在一个易于出错的环境,主设备应执行多次重传以增加零错误接收的可能性,见章7.6.5。

为了支持PARK状态(在章8.9内描述),主设备传送应发生在固定间隔。这个主设备传输将作为一个界标标明哪些设备可以同步。如果在界标事件发生时没有通信产生,广播包可以被发送。更多信息见章8.9。

8.6.5 规则切换

许多场景需要用到规则切换。

当通过呼叫方式加入一个已经存在的微微网时,规则切换很重要,因为从定义出发,呼叫设备是一个小型微微网的主设备,这个微微网只关系到呼叫设备(主设备)和被呼叫设备(从设备)。
一个存在于已经存在的微微网中的从设备,以其自身作为主设备来建立一个新的微微网,且初始的微微网主设备作为从设备。如果初始微微网包括不止一个从设备,初始微微网主设备需应用两个规则;它在新的微微网中是从设备,在初始的微微网中仍然是主设备。
加密比规则切换的优先级高,如果加密存在的话,应在旧的微微网内暂停或停止加密操作。如果物理链接处在嗅探或保持模式,或在停泊状态内,或有任何同步逻辑传送,规则切换都不能完成。

对参与到规则切换中的主设备和从设备来说,规则切换导致TX和RX时序的反转:TDD切换。此外,由于微微网的参数来源于主设备的蓝牙设备地址和时钟,规则切换内生地导致微微网重定义:微微网切换。新的微微网的参数应该源于之前的从设备的地址和时钟。

假设设备A将成为主设备;设备B是之前的主设备。然后这里有两个选择:从设备初始化规则切换,或规则切换。这两个选择在链接管理协议内描述,见章4.4.2。基带进程是相同的,与选择无关。

在步骤1内,从设备A和主设备B应使用之前的跳变机制完成TDD切换(仍然使用设备B的蓝牙设备地址和时钟),这儿还没有切换微微网。从设备A发送的时隙补偿信息应不再可用,但可在步骤3使用。设备A现在变成主设备,从设备是设备B。设备A之前在从规则上使用的LT_ADDR现在提供给从设备B使用。

在TDD切换时,设备A和B应该开启一个定时器,定时时间是newconnectionTO。一旦从设备B在TDD切换通道上收到一个从主设备A发送的FHS包,它的定时器应停止。一旦主设备A收到一个从设备发送的ID包,它的定时器应停止。如果newconnectionTO期满,主设备和从设备应返回到旧的微微网时序和AFH状态,主从设备之间遵循旧的规则。FHS包应该被主设备A发送,且使用旧的微微网参数。FHS包内的LT_ADDR应该是设备A之前使用的LT_ADDR。在FHS净荷内的LT_ADDR应该是为设备B准备的子新的微微网内使用的新的LT_ADDR。在FHS包被告知已收到后,ID包应被从设备在旧的跳变序列上发送,主设备A和从设备B应使用由FHS指示的基础通道跳变序列的序列选择,作为新的微微网的新的通道参数。如果新的主设备的物理链接是AFH使能的,紧跟着微微网切换的是,新的主设备有责任控制它的新的从设备的AFH操作模式。

由于旧的和新的主设备的时钟是同步的,在FHS净荷内发送的时钟信息应在FHS包传输开始时指出新的主设备时钟。此外,在FHS包内的时钟信息的分辨率是1.25ms,这不足以对齐两个微微网的时隙的边缘。由设备A之前发送的在LMP消息内的时隙补偿信息应该被用来提供更精确的时序信息。时隙补偿指出了旧的与新的微微网之间主-从时隙开始处的延时。时序信息的精度是1us,范围是0到1249us。在FHS包已被告知收到后的切换到新的主设备的时序时,应该把这个时钟信息与在FHS包内的信息一起使用,以精确定位相关性窗口。

在收到FHS包的应答后,新的主设备A应切换到它的序列选择是基础通道跳变序列的时序,且应发送一个POLL包以确认这个切换。主设备和从设备都应在FHS包被告知已收到后打开一个超时为newconnectionTO的定时器。这个定时器的开始处应与新的微微网的主设备的第一个TX时隙边界的开始处对齐。从设备应在收到POLL包后关闭定时器;主设备应在POLL包被告知已收到后停止定时器。一旦从设备收到了POLL包,任何即将发生的AFH_Instant应该被取消。如果没有收到任何应答,主设备应重新发送POLL包,直到newconnectionTO到达。如果定时器超时发生,主设备和从设备都应以久的主设备和从设备规则回到旧的微微网时序。定时器的期满也应恢复相关的AFH(包括任何即将发生的AFH_Instant),通道质量驱动数据率(链接管理器章4.1.7)和功耗控制(链接管理器4.1.3)。进程然后可以从步骤1重新开始。用新的微微网的TX边界来对齐定时器,以确保在主设备RX时隙的中间没有设备返回到旧的微微网的时序。

在规则切换后,ACL逻辑传送被当做新的连接来重新初始化。例如,在新的微微网通道上,第一个包含CRC的数据包的SEQN应根据章7.6.2的规则来设定。

一个停泊的从设备应在它能参与一个规则切换之前进行取消停泊。

8.6.6 分布网

多个微微网可覆盖相同的区域。由于各个微微网有不同的主设备,微微网的跳变是独立的,每个微微网有他们各自的,由主设备来决定的跳变序列和相位。此外,通道上负载的包,有着由主设备地址所决定的不同的通道访问码作为前言。当更多微微网加入时,冲突的可能性增加;像这样的性能的功能衰减通常发生在频率跳变展布频谱系统中。

如果多个微微网覆盖了相同的区域,一个设备可应用时间复用来加入两个或多个重叠的微微网。可使用联合主设备地址和适当的时钟补偿来加入合适的通道,以获取正确的相位。一个设备能在多个微微网内扮演从设备的角色,但只能在一个微微网内扮演主设备:由于两个使用相同的主设备的微微网是同步的,且使用相同的跳变序列,他们是同一个微微网。一组在不同微微网之间互相连接的微微网被称为分布网。

一个主设备或从设备能在另一个微微网内成为从设备,靠的是在另外的微微网内成为被主设备呼叫的设备。在另一方面,一个正在加入一个微微网的设备能呼叫另一个微微网内的主设备或从设备。由于正在呼叫的设备总是作为主设备开始,如果需要切换到从规则,一个主-从规则切换是需要的。详细描述见章8.6.5。

8.6.6.1 微微网间通信

时间复用必须用在微微网之间的切换。设备可以通过使用嗅探模式或停留在一个活跃的ACL连接内来获取时间复用的必需品,以实现分布网。对一个在微微网内的ACL连接来说,设备是一个从设备且在连接状态内,它可选择不在每个主设备的时隙内都监听。在这种情况下应该认识到,如果主设备在轮询从设备时不存在足够的从设备用来适配,链接的服务质量可以突然降低。相似的,在微微网内,如果设备是主设备,它可以选择不在每个主设备时隙都传送数据。在这种情况下重要的是应尽可能遵守Tpoll。在嗅探模式内的设备在两个嗅探时隙内有充足的事件访问另一个微微网。当从设备正在使用嗅探模式时,且此时没有充足的空闲时隙,设备可选择不全部监听主设备的传输时隙,这些时隙是在sniff_attempts周期内或在随后的sniff_timeout周期内。主设备并与需要在嗅探时隙期间传输,因此分布网有灵活性。如果SCO或eSCO链接已经建立,其他微微网只能在两个保留时隙之间的非保留时隙内被访问。唯一一种可能性是,如果有一个单SCO逻辑传送使用HV3包或eSCO链接,在保留时隙之间有至少4个时隙。由于多个微微网不能同步,保护时间必须为对齐失败留足时间。这意味着在两个HV3包之间只有两个时隙能被有效地用来访问其他微微网。

由于不同的微微网的两个主设备的时钟不同步,一个属于两个微微网的从设备应维持两个补偿,以添加到它本身的时钟,来创造两个主设备时钟。由于两个主设备时钟的漂移是各自独立的,从设备必须有规律地升级补偿值,为的是与两个主设备都保持一致。

8.6.7 跳变序列切换

跳变序列自适应是由主设备来控制的,且可被设定为使能或关闭。一旦使能,跳变序列自适应可应用在一个物理链接上的所有逻辑传送。一旦使能,主设备可周期性地升级已使用的和未使用的通道,就像在物理链接上关闭跳变序列自适应。

当跳变序列自适应被使能时,序列选择跳变选择核心的输入被设置为自适应通道跳变序列,且AFH_channel_map输入被设定到合适的已用和未用通道。另外,相同通道机制被用到。当所有通道的跳变序列自适应被使能,这被称为AHS(79)。

当跳变序列自适应被关闭,跳变选择核心的跳变选择输入被设定为基础通道跳变序列(在这个例子中,AFH_channel_map输入是不可用的),且相同通道机制不被使用。

当主设备发送LMP_set_AFH PDU时,和基带告知已收到被接收时,跳变序列自适应状态可以被改变。当基带告知已收到比跳变序列切换瞬间,AFH_Instant更早收到时,跳变序列进程展示于图8.11。 

当基带回单没有在AFH_Instant之前被收到时,主设备应该为了没有以回单作为应答的从设备使用一个恢复跳变序列(这是因为从设备不能听到主设备的传输,或是主设备不能听到从设备的传输)。当跳变序列自适应正在使能或正在关闭时,恢复序列应该是指定于LMP_set_AFH PDU内的AFH_channel_map。当AFH_channel_map正在升级时,主设备应选择一个恢复序列,这个序列包括在旧的或新的AFH_channel_map内标记的被使用的所有RF通道,如AHS(79)。一旦基带回单被收到,主设备应在LMP_set_AFH PDU内使用AFH_channel_map,作为下一个给从设备的传输的开始。见图8.12。 

当AFH_instant在由主设备传输的多时隙包期间发生,从设备应在多时隙包的开始处使用与主设备相同的跳变序列参数。图8.13展示了一个例子。在这张图上,基础通道跳变序列被标记为f。第一个自适应通道跳变序列被标记为f’,第二个自适应通道跳变序列被标记为f”。 

8.6.8 通道分类和通道映射选择

RF通道被分类成未知,不良或良好。这些分类由主设备和从设备基于本地信息来分别定义(例如活跃或消极的通道评估方式或从主机的HCI得知)。其他设备通过LMP接收的信息(例如一个从主设备来的AFH_channel_map,或是由从设备记录的通道分类)不应被包括在一个设备的通道分类中。

三种可能的通道分类被定义在表8.6中。 

分类:未知 定义:如果通道估算测量不足以可靠地将通道归类,且在最近的HCI 
Set_AFH_channel_classification内未被标记为不良,此通道被归类为未知。

分类:不良 定义:如果一个ACL或与此通道相关的同步吞吐量的错误测量已经超过一个门限(由特殊的通道估算算法定义),此通道归类为不良。 
如果关系到此通道的干扰等级测量结果(决定了链接对附近其他系统的干扰等级)超过了门限(由特殊的通道估算算法定义),此通道归类为不良。 
如果一个通道在最近的HCI set_AFH_channel_classfication内被标记为不良,此通道被归类为不良。

分类:良好 定义:如果一个通道既不是未知,又不是不良,则归类为良好。
一个有着AFH使能的物理链接的主设备应基于任意以下信息,来决定AFH_channel_map。

如果使能且可用的话,从本地测量结果来进行通道分类(例如控制器内的活跃或消极通道估计)。主机应通过使用HCI命令write_AFH_channel_assessment_mode来使能或关闭本地测量。
如果HCI存在的话,用主机使用的HCI set_AFH_channel_classfication命令来分类通道信息。在最近的AFH_host_channel_classfication中被分类为不良的通道,应在AFH_channel_map中被标记为未使用。
在从设备的LMP_channel_classfication PDUs中接收到的通道分类记录,定义于PartC,章4.1.5。
主设备用来联合这些信息源且生成AFH_channel_map所使用的算法未在此定义,且将被专门讲述。应该使用的通道数绝不应该小于定义于章2.3.1中的Nmin。

如果主设备决定所有通道都应被使用,它可以在79个已用的通道内使用一个AFH_channel_map来保证AFH操作处于使能状态,例如AHS(79)。

对于那些支持同步模式的设备,给同步顺序使用的RF通道索引应在所有逻辑链接内的AFH_channel_map上被标记为未使用。

8.6.9 功耗管理

提供了允许低功耗操作的特性。这些特性存在于包操作的微观层面,也存在于在使用某些操作模式的微观层面。

8.6.9.1 包操作

为了最小化功耗,包操作在TX端和RX段都被最少化。在TX端,功耗的最小化靠的是只发送有用的数据。这意味着如果需要交换链接控制信息,可以用NULL包。不需要传输的情况有,没有链接控制信息需要发送,或是传输只包含NAK(NAK内含于不应答)。如果有数据需要发送,净荷长度应自适应,以只发送有效数据字节。在RX端,包处理发生在不同的阶段。如果在搜索窗口内未能找到有效的访问码,发射器应恢复到睡眠状态。如果访问码被找到,接收器设备应开始处理包的头部。如果HEC失败,设备可在处理完包头部后返回睡眠状态。一个有效的头部指明了是否跟着一个净荷,且有多少个时隙。

8.6.9.2 时隙占用

正如在章6.5内描述的,包类型指出了一个包可占用多少时隙。假设从设备不能在包的头部内被寻址到,会在包占用的剩余时隙内进入睡眠状态。这可以从类型码中读取到。

8.6.9.3 推荐的低功耗操作

降低功耗的最普通和灵活的方式是使用嗅探和停泊。保持模式也被用在保持周期内的重复协商情况。

8.6.9.4 增强数据速率

增强数据速率提供了在发送给定数量数据时的降低功耗的能力,可以是用更少的包,或是以同样的或相近数量的长度较短的包。

8.6.10 微微网时钟校正

一个主设备可在微微网的存在期间使用两种机制校正微微网的时钟:粗略时钟校正和时钟拖动。两个机制可使用在相同的微微网内。

8.6.10.1 粗略时钟校正

主设备执行粗略时钟校正,靠的是选择一个校正瞬间(clk_adj_instant),这是一个从主设备到从设备的时隙,还有校正量,然后用发送LMP_clk_adj给所有从设备的方式来广播这些参数。校正量由两个值指定:clk_adj_slots,这是在clk_adj_instant上的CLK[27:1]的变化值;clk_adj_us,这是在旧时钟(CLKold)与新时钟(CLKnew)的主设备时隙的开始处之间的毫秒数。

主设备应向每个从设备提供适当的时机,以使从设备可用LMP_clk_adj_ack作为校正完成的回单。如果主设备以当前的clk_adj_id,收到的却是任何非LMP_clk_adj_ack的包,它应当多次轮询从设备,直到所期望的回单被收到,或者从设备以一个NULL包应答。如果没有从设备告知已收到校正,主设备应启动粗略时钟校正回复模式(见章8.6.10.2)。

当clk_adj_instant发生,主设备应在time_base_offset上加上(clk_adj_slots*625 + clk_adj_us),从设备应在slave_offset上加上同样的值。如果clk_adj_instant在多时隙包期间发生,校正会延迟,直到紧接着的主-从时隙开始处。如果在clk_adj_instant之前,规则切换已经成功,即将发生的粗略时钟校正需要被丢弃。校正的效果是,设备将使用以clk_adj_instant作为起点的新的时钟范围。

图8.14展示了一个正值的时钟校正的例子。在这个例子里,clk_adj_instant被设为时隙12(这是在旧的时钟范围内),clk_adj_slots设为6,且clk_adj_us设为400。时间向前移动clk_adj_slots * 625 + clk_adj_us = 6*625+400=4150us。在新的时钟范围内的初始化时隙处在CLKnew[27:1]=clk_adj_instant+clk_adj_slots = 12+6=18。这是一个偶数值,所以第一个时隙是主设备时隙。一个正值的clk_adj_us意味着第一个时隙被假设成在clk_adj_instant之前的clk_adj_us已经开始了,且因此在instant之后只剩下625-clk_adj_us=225us。由于传输不能在一个时隙的半路上开始,这部分时隙是不可用的。在clk_adj_instant之后的第一个完整时隙是一个从设备可用的时隙,例如eSCO。如果clk_adj_slots已经是奇数,第一个完整的时隙将是一个主设备时隙。在这个例子当中,第一个完整的主设备时隙在CLKnew[27:1]=20。 

图8.15展示了一个负数时钟矫正的例子。在这个例子里,clk_adj_instant也被设为12,clk_adj_slots设为0且clk_adj_us设为-400。时间被倒退移动了-400us。在CLKnew范围内的初始化时钟在CLKnew[27:1]=clk_adj_instant+clk_adj_slots=12。这是一个偶数值,所以第一个时隙是主设备时隙。一个负数clk_adj_us意味着在CLKnew范围内的第一个时隙开始于clk_adj_instant后的clk_adj_us。在CLKnew尺度内的第一个时隙和clk_adj_instant(400us)之间的时间是前一个时隙的有效连续,即使它的数量变化了,且因此是不可用的(无论clk_adj_us是什么负的时间,甚至当clk_adj_slots是非零值)。 


如果clk_adj_us是零值,接着调节器改变了时隙编号,但并不是时隙开始的真实时间。因此所有时隙的剩余部分都可用,但如果clk_adj_slots是奇数,接着将会有两个连续的从设备时隙。

8.6.10.2 粗略时钟调整恢复模式

在粗略时钟调整恢复模式内,主设备进入同步顺序子状态(见章8.11.2)。主设备应停留在这个子状态内并传输同步顺序包,直到所有从设备都已经用LMP_clk_adj_ack PDU告知已收到了调整,或最近的无应答从设备的链接管理超时已经期满。主设备可取消粗略时钟调整恢复模式以初始化其他的粗略时钟调整或为的是其他原因。在粗略时钟调整恢复模式期间,主设备应继续广播LMP_clk_adj PDUs。

如果一个从设备不能检测到任何与它的主设备的通信,它可进入同步搜索子状态(见章8.11.1),且搜索在章2.7中定义的同步顺序包。Tsync_scan_window应足够大以能够接收至少一个同步顺序包。一个从设备会丢失它与主设备之间的连接,原因是粗略时钟调节应优先于同步搜索。

一个从设备在收到以其主设备作为BD_ADDR的同步顺序包时应改变slave_offset的值,以使CLK与包的上下文相符,然后退出同步扫描子状态。如果新的时钟在CLKOLD-LSTO到包括CLKOLD的范围内(LSTO是链接管理超时周期),然后这应被视为一个负值的改变。在这个例子里,从设备不应发送任何包,且应忽视所有定向收到的包,直到正在改变的CLK的值确实大于最近一次发送或接收包时的CLK值。如果新的时钟在这个范围之外,那么这应该被视为正值(且因包含一个时钟包裹)。

8.6.10.3 时钟拖延

时钟拖延意味着主设备周期性地调节它的time_base_offset(见章2.2.4),直到完成一个期望的时间调节。

每个单独调节的完成应使用一个由主设备到各个从设备的定向包,和由各个从设备来的应答包(例如基带回单)。如果从设备未能应答,主设备应挂起它的time_base_offset的升级(但应继续轮询那个从设备),直到各个从设备已经应答,或是至少在CLK_adj_drag_TO内应答失败。假使许多才能够设备应答失败,主设备应确保每个失败的从设备得到至少一次CLK_adj_drag_TO以应答(对多个从设备来说可同时发生)。在从设备的链接管理超时期间,主设备不必为了任意给定从设备来允许多于一个的CLK_adj_drag_TO暂停。

一个单调整应小于或等于3us。在任何125ms的周期内,在一个单方向上的完整调整应小于或等于5us。注意:这些需求适用于time_base_offset的改变,且在应用时不考虑主设备参考时钟的精度(见章1.1)。这意味着从设备在CLK上观察一个改变的时间应大于20ppm。

如果一个主设备正在完成时钟拖延时的时间恰好是它在初始化一个粗略时钟调节,或一个新的时钟拖延,或一个包含了一个瞬时或时序控制标志的序列,或接收到一个从设备的请求以初始化一个序列,它应在处理新的请求或执行序列之前中止当前时钟拖延。如果主设备已经在CLK_adj_drag_TO期间已经暂停了时钟拖延,它应拒绝新的请求,直到超时被取消,原因是从设备的应答或超时周期期满。

8.7 嗅探模式

在嗅探模式内,从设备在微微网内的活跃占空比被降低。如果从设备处在活跃模式下的一个ACL逻辑传送上,它应监听每个ACL时隙内主设备的通信,除非链接正在被像分布网链接一样对待,或由于保持模式而缺席了。关于嗅探模式,从设备的监听时隙被减少,所以主设备应只能在特定的时隙内发送给从设备。嗅探锚点以Tsniff为间隔有规律地隔开。 

从设备监听主-从传送时隙,其开始于嗅探锚点。它应使用如下规则以决定是否需要继续监听:


如果少于Nsniff attempt次的主-从传送时隙已经过去,从嗅探锚点开始,从设备应持续监听。
如果从设备已经收到的有着匹配LT_ADDR的包在之前的Nsniff timeout 主-从传输时隙内包含ACL数据(DM,DH,DV或AUX1包),那么它应持续监听。
如果从设备在之前的Nsniff timeout从-主传输时隙内已经发送了一个包含ACL数据的包(DM,DH,DV或AUX1包),那么它应继续监听。
如果从设备已经在之前的Nsniff timeout主-从传输时隙内收到任何有着匹配LT_ADDR地址的包,那么它应继续监听。
如果一个设备在另一个微微网中是活跃的,那么它可以无视上述规则,且在Nsniff timeout之前或在剩余的Nsniff attempt时隙内停止监听。
从一个嗅探超时而来的激活可能延伸到下一个嗅探锚点。任何从先前的嗅探超时来的激活行为应不要影响下一个嗅探锚点后的激活。因此在上述规则中,只有从最后的嗅探锚点开始的时隙需要被考虑。

注意Nsniff attempt=1和Nsniff timeout=0导致从设备只监听嗅探锚点开始处的时隙,不考虑从主设备收到的包。

Nsniff attempt=0不应被使用。

嗅探模式只能应用在异步逻辑传送和与他们相关的LT_ADDR。嗅探模式不能应用在同步逻辑传送,因此主设备和从设备都有那个一直关心保留时隙和同步链接的重传窗口。

为了进入嗅探模式,主设备或从设备应通过LM协议发布一个嗅探命令。这个消息包括嗅探间隔Tsniff和补偿Dsniff。此外,一个初始化标志指出了使用初始化过程1或2中的哪一个。设备应在当当前主时钟(CLK27)的最高位为0时使用初始化1;它应在当当前主时钟(CLK27)的最高位为1时使用初始化2。从设备应当用初始化标志指出的初始化方式,而不是它自身的CLK27时钟位的值。嗅探锚点由主设备决定,且从设备初始化的时隙的时钟应满足如下公式:

CLK27-1 mod Tsniff = Dsniff for initialization 1 
(CLK27,CLK26-1) mod Tsniff = Dsniff for initialization 2 
Dsniff必须是偶数

在初始化后,下一个嗅探锚点的时钟值CLK(k+1)应来源于固定间隔Tsniff+当前嗅探锚点的时钟值: 
CLK27-1(k+1) = CLK27-1(k) + Tsniff

8.7.1 嗅探过渡模式

嗅探过渡模式时一个特殊模式,用来在嗅探和活跃模式之间的过渡。这是需要的,因为在过渡期间,从设备处在哪个模式(嗅探或活跃)是不清晰的,且重要的是确保从设备能正确地被轮询,而不必在乎它处于哪个模式。

在嗅探过渡模式内,主设备应维持活跃模式轮询间隔,就好像从设备在活跃模式中。此外主设备应在每个嗅探锚点的开始处的嗅探尝试传输时隙内至少轮询一次从设备。注意这个传输计数对活跃模式同样适用。主设备应在嗅探过渡模式中使用它的高耗能精度时钟。

主设备进入嗅探过渡模式的精确细节定义在章4.5.3.1。

8.7.2 嗅探子速率

当嗅探自速率被链接管理器使能时,设备在嗅探模式和嗅探自速率模式之间交替工作。嗅探自速率模式允许设备使用一个较少数量的嗅探锚点。设备应基于嗅探模式超时值来从嗅探模式转换到嗅探自速率模式(见章8.7.2.1)。设备从嗅探自速率模式转换到嗅探模式的时机是从遥控设备中接收到了ACL-U或ACL-C数据。 

注意:一旦嗅探子速率被使能,主设备和从设备可能在不同时间进入嗅探模式或嗅探子速率模式。这个规则定义在章8.7.2.2中,描述了两个设备如何维持同步和如何能可靠交换数据。

8.7.2.1 嗅探模式超时

一个在嗅探子速率模式下的设备无论何时接收到一个包含了ACL-C或ACL-U数据的包,它应转换到嗅探模式,重新开始嗅探模式超时,且所有嗅探锚点应被使用,直到发生超时,这个超时需要的最小时隙数与收到的min_sniff_mode_timeout相等。如果ACL-C或ACL-U数据在min_sniff_mode_timeout次时隙结束之前被收到,自从最近的ACL-C或ACL-U数据被接收起,超时应重新开始。NULL和POLL包不能包括ACL数据,且应不能重新启动嗅探模式超时。

注意有两个嗅探模式超时值:一个用在本地设备,另一个用在遥控设备。

8.7.2.2 嗅探子速率模式

当嗅探模式超时期满,设备应进入嗅探子速率模式。在嗅探子速率模式内,处在在主设备应传输给从设备和从设备应监听主设备的强制的嗅探子速率锚点定义如下(M是主设备接收的最大子速率,N是从设备接收的最大子速率,A是嗅探子速率瞬间,k是任何正整数): 

8.8 保持模式

在连接状态期间,从设备的ACL逻辑传送能进入保持模式。在保持模式内,从设备应临时地不支持通道上的ACL包。在保留同步时隙期间的任何同步包(从SCO和eSCO链接)都应被支持。关于保持模式,容量可以被清空以实现其他目的,例如扫描,呼叫,询问或出席其他微微网。在保持模式内的设备也能进入一个低功耗睡眠模式。在保持模式期间,从设备保持它的逻辑传送地址(LT_ADDR)。


在进入保持模式之前,主设备和从设备同意从设备在此期间从设备仍处在保持模式。定时器应以holdTO值初始化。当定时器期满,从设备应唤醒,在通道上同步通信,且等待更多的主设备传输。

8.9 停泊状态

当一个从设备不需要参与到微微网的通道上,但仍需维持与通道的同步时,能进入停泊状态。停泊状态以非常小的活跃度存在于从设备上。在停泊状态内,从设备应放弃它的逻辑传送地址LT_ADDR。取而代之的是,它应接收两个新的地址以用在停泊状态 
- PM_ADDR: 8位停泊成员地址 
- AR_ADDR: 8位访问请求地址 
PM_ADDR将一个停泊从设备与其他停泊从设备区分开来。这个地址可被用在由主设备发起的去解停泊过程中。除了PM_ADDR,停泊从设备也应以它的48位BD_ADDR来解停泊。全0的PM_ADDR是一个被保留地址:如果停泊设备有全0地址,它只能用BD_ADDR来解停泊。在这种情况下,PM_ADDR无意义。AR_ADDR被从设备用在由从设备初始化的解停泊过程中。所有发送给停泊从设备的消息都由广播包搭载。

停泊从设备被有规律的间隔唤醒以监听通道,为的是重新同步和检查广播消息。为了支持同步和停泊从设备的通道访问,主设备支持一种界标顺序。当从设备是停泊状态时,界标结构与它通信。当界标结构改变时,停泊从设备通过广播消息升级。

主设备应为了每个跳变序列而维持非重叠的停泊界标结构。结构结构不应与任何其他界标时隙或访问窗口重叠。

此外在低功耗时,用在使单个主设备连接超过7个从设备。在任何其他时间内,只有七个从设备能进入连接状态。然而,靠着在微微网内的活跃和停泊设备的交换,从设备的数量可以更多(如果使用PM_ADDR则为255个,如果使用BD_ADDR则任意数量都可以支持)。

8.9.1 界标顺序

为了支持停泊从设备,在一个或多个从设备进入停泊后,主设备会建立一个界标顺序。界标顺序包括一个界标时隙或一个以固定时间间隔做周期性传输的等距的界标时隙顺序。界标顺序图示于图8.18。一个顺序的NB(NB>=1)个界标时隙定义为以TB间隔的时隙。界标时隙在顺序中由ΔB区分。第一个界标时隙的开始处参考界标瞬间,且服务于界标时序参考。界标参数NB和TB的选择原则是使停泊从设备有足够数量的界标时隙以在易受干扰的环境下的确定的时间窗口内完成同步。

当主设备处在停泊状态,其应通过一个LMP命令来接收界标参数。此外,界标瞬间的时序通过DB指出。SCO逻辑传送(章8.6.2)可以使用初始化过程1或2。

CLK27-1 mod TB = DB for initialization 1 
(CLK27,CLK26-1) mod TB = DB for initialization 2 
Dsniff必须是偶数

在初始化后,下一个界标瞬间的时钟值CLK(k+1)应来源于固定间隔TB+当前界标瞬间的时钟值: 
CLK27-1(k+1) = CLK27-1(k) + TB 
界标顺序服务于4个目的: 
1. 用来传送主-从包,这个包是给从设备用来重新同步的 
2. 搭载消息给停泊从设备,以改变界标参数 
3. 搭载通用广播消息给停泊从设备 
4. 解停泊一个或多个从设备

由于从设备能与任何之前的有着合适的通道访问码的包保持同步,搭载在界标时隙内的包不需要包括给停泊从设备的可以同步的专门的广播包;任何的包都是可用的。在界标时隙内仅有的需要是,主-从传输上存在一个有着与停泊结构相关联的跳变序列。如果没有信息要发送,NULL包可由主设备发送。如果确实有广播消息要发送给停泊从设备,广播消息的第一个包应在每个界标顺序的界标时隙内被替换。然而,如果与停泊从设备有着相同的跳变序列,在同步保留时隙内的同步通信可以中断界标通信。主设备应配置它的停泊界标结构,这样同步逻辑传送的保留时隙就不会导致从设备在界标时隙内丢失同步。例如,主设备有着使用AHS的活跃从设备,和使用Non-AHS的停泊从设备,它应确保停泊界标不能被AHS同步保留时隙打断。 

主设备能将停泊的从设备放置在任意AFH操作模式中,但应确保所有停泊从设备使用相同的跳变序列。主设备应在当所有在微微网内的从设备都使能了AFH时使用AHS(79)或AHS。

主设备在将从设备在AFH使能,AFH禁止或AHS(79)之间切换时应确保AFH_instant发生在使用这个跳变序列传输界标顺序之前。

主设备与停泊从设备之间使用广播消息连接。由于这些消息时时间严格的,一个正在进行的重复顺序广播消息可能被指向停泊从设备的广播信息在界标时隙和访问窗口内贸然打断(见章8.9.2)。

8.9.2 界标访问窗口

除了界标时隙外,访问窗口被定义为停泊从设备能发送请求以解停泊的地点。为了增强可靠性,访问窗口可被重复Maccess次(>=1),见章8.19。访问窗口开始于一个在界标瞬间后的固定延时的Daccess。访问窗口的宽是Taccess。 

访问窗口支持轮询的从设备访问技术。轮询技术的格式在图8.20中展示。TDD结构与在微微网通道上使用的相同。主-从设备传送与从-主设备传送相互交替。从-主时隙被分成两个各为312.5us的半个时隙。一个停泊从设备的半个时隙被允许以应答与他有关的访问请求地址(AR_ADDR),见章8.9.6。为了计算半个时隙以决定访问请求时隙,访问窗口的起始处被用到,见图8.20。如果一个广播包在之前的主-从时隙内被收到,从设备应只能在合适的从-主半时隙发送一个访问请求。主设备轮询停泊从设备。 

访问窗口的时隙也可被用来在微微网上通信。例如,如果需要同步连接,为同步链接保留的时隙可搭载同步信息,用来取代已使用的访问请求。如果在访问窗口内的主-从时隙包含一个与广播包不同的包,随后的从-主时隙应不能被用在从设备访问请求。如果主设备在访问窗口内传送广播包,那么它应使用与停泊结构相联合额跳变序列。在访问窗口内的不被微微网通信影响的时隙应一直被根据定义的访问结构来使用(图8.21是一个例子)。如果没有中断发生,访问过程应持续。


当从设备停泊时,主设备应指出使用的是哪种访问机制。对轮询机制来说,从-主访问时隙Nacc-slot的数量被指出。 


默认情况下,访问窗口总是存在。然而,它的活跃性取决于主设备在访问窗口内的适当的时隙向从设备发送广播消息。界标时隙内的广播LMP消息的一个标志位指出了属于这个瞬间的访问窗口不会被激活。这可防止停泊从设备的想要请求访问的不必要的扫描。

8.9.3 停泊从设备同步

停泊从设备周期性的唤醒以重新同步到通道上。任何在通道上交换的包可被用作同步。由于主设备传输在界标时隙上是强制的,停泊从设备将使用界标顺序以重新同步。一个停泊从设备可在界标瞬间醒来以读取在第一个界标时隙上发送的包。如果这失败了,它可在界标顺序上的下一个界标时隙上重新尝试;总体上说,每个界标瞬间有NB次机会以重新同步。在搜索期间,从设备可增加它的搜索窗口,见章2.2.5.2。界标顺序内的界标时隙之间的区别ΔB的选择应遵循使持续搜索窗口不重叠。

停泊从设备可在每个界标瞬间不被唤醒。取而代之的是,一个睡眠间隔将被应用,且比界标间隔TB更长,见章8.22。从设备睡眠窗口应是TB的NB_sleep倍。从设备唤醒的精确的界标瞬间应由主设备以DB_sleep来指出,它指出了与界标瞬间(0

8.9.4 正在停泊

主设备能通过交换LMP命令以停泊一个活跃的从设备。在正在进入停泊之前,从设备应被安排一个PM_ADDR或PM_ADDR为0。AR_ADDR不是必要唯一的。界标参数应由主设备在从设备停泊时给出。从设备然后应放弃它的LT_ADDR地址,且应进入停泊状态。一个主设备只能在一次停泊一个从设备。同意消息可由普通的数据包搭载,且由它的LT_ADDR寻址。

8.9.5 主设备发起解停泊

主设备能解停泊从设备,靠的是发送一个包含了停泊从设备地址的专用的LMP解停泊命令。这个消息应在界标时隙上以一个广播包来发送。消息应使用从设备PM_ADDR或它的BD_ADDR。消息也应包括逻辑传送地址LT_ADDR,这个地址是从设备重新进入微微网后的地址。解停泊消息可包括一定数量的从设备地址,这样一来多个从设备可同时解停泊。对每个从设备来说,应安排不同的LT_ADDR。

在已经收到解停泊消息后,匹配PM_ADDR或BD_ADDR的停泊从设备应离开停泊状态且既然怒连接状态。它应保持监听主设备,直到它被主设备通过它的LT_ADDR被寻址到。第一个由主设备发送的包应是POLL包。与POLL包相关的返回包确认了从设备已经解停泊。如果在界标重复周期结束后的newconnectionTO次时隙内都没有收到从设备发来的应答包,主设备应再次解停泊从设备。主设备在每次尝试解停泊时应使用相同的LT_ADDR,直到它已经接收到一个从设备的链接管理超时,或解停泊已经成功完成。如果在界标重复周期结束后的newconnectionTO次时隙后从设备仍未收到POLL包,它应以相同的界标参数返回停泊状态。在确认从设备处在连接状态后,主设备决定从设备将继续在哪个状态。

当设备解停泊时,主设备和从设备的链接的SEQNbit都应复位到1(见章7.6.2.1)。

8.9.6 从设备发起解停泊

从设备可通过定义于章8.9.2的访问窗口以请求访问通道。如图8.29展示的,访问窗口包括许多从-主半时隙,用来给从设备发送访问请求消息。从设备专门的半时隙被允许回应与其相关的访问请求地址(AR_ADDR),这些地址在停泊时被收到。半时隙的次序(在图8.20中AR_ADDR数量从1-5线性增长)是不固定的:一个在界标时隙内发送的LMP命令可重配置访问窗口。当一个从设备期望访问通道,它应在合适的从-主半时隙发送一个访问请求消息。从设备访问请求消息是包括主设备的设备访问地址(DAC)的ID包(是通道访问码而不是尾部)。停泊从设备只应在半时隙内传送一个访问请求消息,且要在之前的主-从时隙广播包已经被接收时。这个广播消息可包括任何对于停泊从设备而言不算重要的广播信息。如果没有广播信息可得到,广播NULL包或广播POLL包可被发送。

在最近的访问窗口后(总共Maccess个窗口,见章8.9.2),停泊从设备应为了解停泊消息监听一个额外的Npoll次时隙。如果在最近的访问窗口结束后的Npoll次时隙内没有收到解停泊消息,从设备可回到睡眠状态且在下一个界标瞬间后尝试重新访问。

在收到解停泊消息后,与PM_ADDR或BD_ADDR匹配的停泊从设备应离开停泊状态并进入连接状态。它应保持对主设备的监听,直到被主设备通过它的LT_ADDR寻址到。主设备发送的第一个包应是1个POLL包。POLL包的返回包作为从设备已经解停泊的确认应答。在确认了从设备已经进入连接状态后,主设备决定从设备持续在哪个状态。如果在最近的访问窗口结束后的Npoll时隙后没有收到从从设备来的newconnectionTO次时隙的应答包。主设备应再次向从设备发送解停泊消息。如果从设备没有在最近的访问窗口结束后的Npoll次时隙后收到newconnectionTO次时隙的POLL包,它应以相同的界标参数回到停泊状态。

当设备被解停泊时,主设备和从设备的SEQNbit都应被复位为1(见章7.6.2.1)。

8.9.7 广播扫描窗口

在界标顺序内,主设备能支持到停泊从设备的广播消息。然而,它可通过指定停泊从设备来扩大它的广播容量,这样更多的广播信息可跟随在界标顺序之后。只需要用一个LMP指令来命令停泊从设备(就好像是活跃从设备)以在有限的时间窗口期间监听通道以获取广播消息。这个时间窗口从界标瞬间开始,且持续到在界标顺序内的LMP命令指定的周期。

8.9.8 在停泊状态轮询

在停泊状态内,停泊从设备可在访问窗口内发送访问请求,提供了广播包已经在之前的主-从时隙被接收。在连接状态内的从设备的发送不应在跟广播包后的从-主时隙内,因为其只在特定的地址上被允许发送。

8.10 非连接从广播模式

在非连接从广播模式,主设备可广播包给0或多个从设备。

主设备可在非连接从广播模式广播消息给多个从设备。为了实现这点,主设备应保留一个只用于非连接从广播通信的LT_ADDR。在非连接从广播模式内,主设备以特定的间隔传输包。

8.10.1 非连接从广播发送操作

在非连接从广播模式内,主设备在CSB逻辑运输上以固定间隔由主设备请求在主-从传输时隙上发送包。

如果主设备自使能广播开始没有提供任何数据包给BR/EDR控制器,或如果数据的长度是0,BR/EDR控制器应传输NULL包。不同的是主机自使能广播开始已经提供数据但自之前的广播包开始没有提供新的数据。在这个例子里,BR/EDR控制重新传输最近的数据。

主设备可通过HCI命令传输非连接从广播数据。由于HCI命令限定为255字节,一个单命令不能搭载更大包的最大净荷,例如DH5。因此,给非连接从广播的HCI命令允许在HCI层将大的净荷分片。BR/EDR控制器应在传输前组合所有HCI包的分片,且不应传输不完整的包。直到组合完成,控制器应继续传送之前的数据(如果有的话)。

图8.23展示了非连接从广播包的时序。 


非连接从广播瞬间由非连接从广播间隔区分(Tconnectionless_slave_broadcast)。非连接从广播间隔可以是0x0002到0xFFFE时隙内的任何偶数值,且由BR/EDR控制器和主机在CSB安装期间协商。在每个非连接从广播瞬间的开始,非连接从广播包被使用自适应微微网物理通道传输。非廉洁从广播包不能被加密。

主设备应在未发送非连接从广播包的CSB_supervisionTO时隙后停止传输非连接从广播包。CSB_supervisionTO可以是0x0002到0xFFFE时隙内的任何偶数值。由于与更高优先级的通信机制有冲突,非连接从广播包会以确定的持续的时间周期传输失败。

8.10.2 非连接从广播接收操作

在非连接从广播模式内,从设备被同步到非连接从广播发射器,且在由主设备为CSB逻辑运输所保留的LT_ADDR上接收profile广播数据。

当请求同步建立,主机提供给主设备时钟补偿和从同步顺序来的下一个被接收的非连接从广播瞬间。由于主机的延时,非连接从广播瞬间可能发生在过去。BR/EDR控制器应支持在过去至少1秒1次的非连接从广播瞬间。从设备应决定非连接从广播时隙在过去还是在将来,靠的是使用主设备时钟补偿和它自身的时钟以估计当前的主设备时钟,且开始从下一个广播瞬间开始监听。

跳跃参数由主机设定且指定了接收器在接收到一个非连接从广播包后应该跳过的持续的非连接从广播瞬间的数量。如果非连接从广播包被成功接收,净荷数据应被转发给主机。如果在一个非连接从广播瞬间期间没有收到非连接从广播包,从设备应忽视跳跃,取而代之的是在每个计划中的非连接从广播瞬间监听,直到成功接收到一个非连接从广播包,或者CSB_supervisionTO次时隙已过去。

BR/EDR控制器应在CSB_supervisionTO次时隙内未收到非连接从广播包后停止监听非连接从广播包。

BR/EDR控制器可通过HCI事件将非连接从广播数据传送给主机。由于HCI事件被限定在255字节,一个被接收到的包可能不能是完整的HCI事件。BR/EDR控制器应将数据分片,并使用多个HCI事件传输。

8.10.3 非连接从广播的AFH

非连接从广播包应在自适应微微网通道上传输,且同步顺序应总是包含PBD逻辑链接的当前AFH通道映射。

8.11 同步建立子状态

8.11.1 同步扫描子状态

同步扫描子状态给从设备用来从微微网的主设备接收同步顺序。同步扫描子状态能从待机或连接状态进入。在同步扫描子状态内,设备使用同步扫描过程(见章2.7.3)。在每个同步扫描窗口期间,设备应使用它的与主设备访问通道码相关的相关器来监听单一的频率。

如果在同步扫描过程期间,相关器超出了翻转门限,扫描设备应接受同步扫描包,其定义在表8.8中。一旦接收到同步顺序包,设备应退出同步扫描子状态,并返回到待机或连接状态。如果设备没有收到包,那就应该呆在同步扫描子状态。如果在收到一个同步顺序包之前已经过了synchronization_scanTO超时,设备应返回待机状态。一个尝试同步到非连接从广播运输的设备应忽略任何净荷中的非连接从广播LT_ADDR被设为0的同步顺序包。

同步扫描可以被更高级的通信所中断。特别的是,保留同步时隙应比同步扫描有更高的优先级。

8.11.2 同步顺序子状态

同步顺序子状态被主设备用来在微微网上传输同步顺序包。同步顺序子状态能从待机或连接状态进入。在同步顺序子状态内,设备使用同步顺序过程。在同步顺序过程期间,主设备在通道上同步同步顺序包。在同步顺序子状态期间:

如果非连接从广播模式是使能的,主设备应继续传输非连接从广播包,除了同步顺序包;
如果主设备在粗略时钟调节恢复模式内,它应在所有活跃逻辑运输上对所有已经应答过粗略时钟调节的从设备维持传输和接收。
保留SCO和eSCO时隙应比同步顺序有更高优先级。一旦主设备进入了同步顺序子状态,它应维持在同步顺序子状态,直到synchronization_trainTO期满或主机有其他方向。主设备应在退出同步顺序子状态时转换到待机或连接状态。

同步顺序包时基础速率的DM3类型的ACL包,且LT_ADDR为0。FLOW,ARQN和SEQN应在传输时设为0,在接收时忽略。HEC LFSR应使用主设备UAP来初始化。在净荷头部,LLID应包含值10b(以一个不分片的L2CAP消息为开头)。在净荷头部内的FLOW应在传输时设为0,在接收时忽略。净荷身体的长度(LENGTH)应被设为28字节。CRC LFSR应使用主设备UAP来初始化。不需要数据白化,不需要加密。

有两种可能的格式。当一个设备在微微网内是主设备且使能了非连接从广播模式,正在传输的同步顺序应使用格式1,否则使用格式2。在同步顺序内的DM3包的净荷部分格式展示在表8.8。 



在格式1中,主设备提供了同步顺序包净荷身体的服务数据。BR/EDR控制器提供了所有其他的域。

所有在同步扫描子状态内的设备应接受净荷长度从28到121字节,且应忽略28字节以及之前的部分(从0开始计数)。

当使用格式1时,在同步顺序包净荷内的未来非连接从广播瞬间应与下列4个广播包瞬间中的一个相一致。图8.24展示了这个域的有效值和无效值的例子。 


主设备不应在非连接从广播瞬间内传输同步顺序包。
发布了200 篇原创文章 · 获赞 548 · 访问量 76万+

猜你喜欢

转载自blog.csdn.net/XiaoXiaoPengBo/article/details/52162721