AM-ADDR
简介
[p]SCO具备双向对称性,可以看作电路型连接,通常用于支持语音等实时业务。主节点可与一个或多个从节点建立多达3个的SCO链路;一个从节点也与多个主节点建立SCO链路(最多3条)。SCO分组不采用重传机制。SCO链路的建立通过主节点发送LMP的SCOsetup消息,该消息中包含了Tsco和Dsco等参数。Dsco用于标识SCO开始的时隙相对数,而Tsco用于表示时隙的重复周期。 [/p] [p]未被SCO占用的时隙可用于ACL,在一对主从节点之间只有一条ACL。ACL的分组传送来用重传机制以确保正确性。只有主节点在发往从节点的分组中以某种方式允许某从节点发送数据时,该从节点才能在规定时隙发送数据。ACL支持广播。 [/p] [p] [/p] [p]每个分组由3部分组成,即接入码(AccessCode)、头(Header)、负载(Payload)。其中接入码和头字段为固定长度,分别为72比特和54比特;负载是可变长度,从0~2745比特。一个分组可以仅包含接入码字段(此时为缩短的68比特),或者包含接入码与头字段,或者包含全部3个字段。 [/p] [p]接入码有三种类型:Channel Access Code(CAC)、Device Access Code(DAC)和Inquiry Access Code(IAC)。CAC用于标识一个Piconet,所有在该Piconet中传送的分组都包含CAC;DAC用于特殊的信令过程,如寻呼和响应寻呼;IAC又分为General(GIAC)和Dedicated(DIAC)两类:GIAC对该区域内所有设备都是一样的,用于发现其它的蓝牙单元;DIAC用于根据某种特性划分特定用户群[/p] [p]分组头包含链路控制信息,由6个字段组成:3比特的AM-ADDR、4比特的TYPE、1比特的FLOW、1比特的ARQN、1比特的SEQN、8比特的HEC,一共18个比特;再加速率为1/3的FEC,编码保护后一共是54比特。在主节点与从节点通信时,需要区分不同的从节点,用AM-ADDR来表示激活的从节点地址。全“0”地址用于广播,显然3比特的编码最多可以支持的激活从节点数为7(扣除全0)。4比特的TYPE字段可以区分16种不同类型的分组,详细情况见本节第3点。FLOW字段用于ACL链路上的流量控制:如果接收端缓存满,则FLOW=0指示发端停止发送数据;如果缓存清空,则FLOW=1指示发端继续发送。ARQN=0时表示NAK;ARQN=1时表示ACK,用于对负载传送正确性的确认。SEQN比特在每发送一个新的分组时翻转一次,因为蓝牙采用无编号ARQ机制,所以SEQN对于重传是必需的,这样可以避免由于 ACK的去失而造成分组重复接收。分组头用8比特的校验码以检查分组头的正确性。[/p]
分组
[p]在16种分组中,有4种是公共的;另外12种根据SCO和ACL不同链路而不同。[/p] [p]ID分组:由DAC或IAC组成,长度固定为68比特,用于寻呼、探询、响应。 [/p] [p]NULL分组:仅包含 CAC和分组头,没有负载,长度固定为126比特。NULL分组用于通过ARQN、FLOW等字段将链路信息返回给发送端。NULL分组无需确认。 [/p] [p]POLL分组:POLL分组与NULL分组类似,也没有负载字段,但是需要接收端的确认。当从节点收到POLL分组后,必须响应,即使当时没有数据信息需要发送。 [/p] [p]FHS分组:是一种特殊的控制分组,它宣告发端的设备地址和时钟信息,以实现跳频同步。负载字段包含144个信息比特加16比特的CRC校验码,然后用速率为2/3的FEC保护,最终长度为240比特。[br] [/p]