四、具体的command(一)

4.1 COMMAND REJECT (CODE 0x01)

以下情况可以用command reject回复:

Code未知的command;

没有合适的response作为回复;

无法识别的signaling packet;

超出接收端的MTUsig范围;

注意:当一个数据包超过MTUsig时,如果这个数据包里面有多个command,那么回复command reject时Identifier只需要跟第一个command一样就行

(1)Reason (2个字节):描述拒绝的原因。取值范围:

(2)Data (>=0个字节):

当Reason=0x0000时,data是0字节

当Reason=0x0001时,data是2字节,表示发送command reject端设备的MTUsig

当Reason=0x0002时,data是4字节,前两个字节表示本地CID(发送command reject端),后两个字节表示远端CID(接收command reject端),如果只有一个CID,则另一个CID=0x0000

4.2 CONNECTION REQUEST (CODE 0x02)

这个command用来建立两个设备之间的L2CAP channel

(1)Protocol/Service Multiplexer – PSM(>=2个字节):表示上层的profile,取值如下

(2)Source CID - SCID(>=2个字节):发送connection request端的CID

4.3 CONNECTION RESPONSE (CODE 0x03)

当设备接收到Connection Request时,可以用这个connection response进行回复

(1)Destination Channel Identifier - DCID (2个字节):发送connection response的设备的CID;

(2)Source Channel Identifier - SCID (2个字节):接收connection response的设备的CID

(3)Result (2个字节):表示connection的建立结果。0x0000表示建立成功,其他值含义如下:

(4)Status (2个字节):当result=0x0001时,这个字段才有用,表示连接的状态,取值如下图所示:

4.4 CONFIGURATION REQUEST (CODE 0x04)

Configuration request命令用于建立2个L2CAP实体之间的初始传输协议,并且可以对传输协议的Configuration option进行重新协商,只有当一个Configuration option需要进行修改时才需要包含在configuration request里面。

注意:

(1)如果没有需要协商的,那么continuation flag (C)应该设置为0

(2)即使没有需要协商的,也需要发送configuration request命令,但是命令中没有Configuration Options

(1)Destination Channel Identifier - DCID (2个字节):接收configuration request的设备的CID;

(2)Flags(2个字节):只有flag C有含义,即Continuation flag,其他位都需要设置为0

A)当两个设备的L2CAP都支持Extended Flow Specification(MTUsig>=672)时,Configuration Request 和Configuration Response的C flag设置为0;

B)如果所有的option可以放在一个Configuration Request中,那么Configuration Request的C flag设置为0;

C)如果Configuration Request中的configuration option太多,一个Configuration Request包放不了,就需要分成多个数据包发送,每个数据包只能包含整数个option,最后一个数据包的C flag设置为0,其他数据包的C flag设置为1,并且每个Configuration Request的Identifier不能一样

D)收到Configuration Request,并且C flag为1时,responder应该这样回复:

①Configuration Response中包含和Configuration Request相同的option,并且C flag为1,当接收到Configuration Request包中的C flag为0时,表示整个Configuration Request接收完成,这个过程中所有的Configuration Response的result根据实际情况设置,所有result都是SUCCESS,则表示成功,否则表示失败。

或者

②Configuration Response中不包含任何选项,并且C flag为1、result是SUCCESS,等收到Configuration Request包中的C flag=0再在对应的Configuration Response中添加选项, 根据实际情况设置result的值,这个result才表示Configuration的结果

E)如果Configuration Request的C flag是0,但是Configuration Response的C flag为1,则表示Configuration Response还有额外的参数没有发送完,这时候,需要继续发送Configuration Request给responder,并且Configuration Request中不能有选项、C flag设置为0,当接收到Configuration Response包中的C flag为0时,表示整个Configuration Response接收完成

(3)Configuration Options:表示需要进行协商的选项,这部分可以有也可以没有。

4.5 CONFIGURATION RESPONSE (CODE 0x05)

Configuration Response用来回复Configuration Request的,并且对Configuration Request中的选项进行调整。

(1)Source CID - SCID (2个字节):接收Configuration Response的设备的CID

(2)Flags(2个字节):只有flag C有含义,即Continuation flag,其他位都需要设置为0

A)当两个设备的L2CAP都支持Extended Flow Specification时,Configuration Request 和Configuration Response的C flag设置为0;

B)当需要回复多个configuration responses时,需要设置C flag为1

(3)Result (2 octets):表示是否接受Configuration Request,取值:

(4)Configuration Options:这里面的选项根据result的不同,含义不同:

Result = 0x0000或者0x0004:Configuration Options表示需要调整的选项

Result = 0x0001:Configuration Options表示拒绝的选项,但是选项值是之前已接受的值

Result = 0x0003:Configuration Options表示未知的选项,Hints选项应该跳过

Result = 0x0005:Configuration Options可能会包含Extended Flow Spec,用来表示可以接受的QoS level

4.6 DISCONNECTION REQUEST (CODE 0x06)

发送disconnection request请求断开L2CAP channel,发送disconnection request以后,在这条L2CAP channel上的数据都应该忽略,同样,收到disconnection request后,也应该停止发送数据。

(1)Destination CID - DCID (2个字节):收到disconnection request的设备的CID;

(2)Source CID - SCID (2个字节):发送disconnection request的设备的CID

注意:如果收到的disconnection request中的DCID无法识别,应该回复CommandReject(result为invalid CID),如果收到的disconnection request中的SCID跟channel不匹配应该忽略

4.7 DISCONNECTION RESPONSE (CODE 0x07)

当收到一个有效的disconnection request时需要用这个command进行回复

(1)Destination CID - DCID (2个字节):发送disconnection response的设备的CID;

(2)Source CID - SCID (2个字节):接收disconnection response的设备的CID

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值