美文网首页
RFCOMM WITH TS 07.10(5)

RFCOMM WITH TS 07.10(5)

作者: lucca_x | 来源:发表于2018-10-10 10:13 被阅读0次

    5 GSM 07.10 Adaptations for RFCOMM

    5.1 Media Adaptation

    GSM 07.10的打开和关闭标志在RFCOMM中不再使用。取而代之的是RFCOMM层和L2CAP层之间交换的标志字段。通常每个L2CAP帧中都有一个RFCOMM帧,架构如下:


    5.1.1 FCS calculation

    GSM 07.10中,FCS对于不同命令,是根据不同字段计算的:

    • SABM, DISC, UA, DM帧:基于address, control 和 length字段计算
    • UIH帧:基于address和control字段计算

    5.1.2 P/F-Bit

    Control字段中有1bit位作为P/F-Bit. 根据GSM 07.10计算P/F-Bit值。当开启流控时,UIF帧的P/F-Bit会被重新定义。

    5.1.3 CR Bit

    GSM 07.10定义了2个C/R-bit,一个在frame level,一个在message level,2个相互独立。都是在GSM 07.10中定义的。

    5.2 GSM 07.10 Multiplexer Start-up and Closedown Procedure

    原GSM 07.10中的开启和关闭过程不再适用,这也意味着RFCOMM不支持AT-command和AT+CMUX,Close down(CLD)也不支持。
    在任意时刻,配对过的设备之间都必须至少有一个RFCOMM会话。当需要建立新的DLC时,需要先检查与远端设备之间是否已经有RFCOMM会话,如果有,则建立一个新的DLC,会话是通过2端蓝牙地址来标识的。这也意味着当回复一个L2CAP的连接建立时,RFCOMM实体需要根据远端蓝牙地址来保存和标识这个新的RFCOMM会话,为后续建立DLC做准备。

    5.2.1 Start-up Procedure

    当2个设备之间第一次建立模拟串口连接时,需先建立多路控制信道:

    • 建立一个L2CAP信道来peer RFCOMM实体


    • 通过在DLCI 0上发送SABM命令来开启RFCOMM多路器,等到对方的UA回复



      完成这些步骤后,用于用户通信的DLCs才能被建立。
      当2个RFCOMM实体在一个baseband连接上同时发送建立RFCOMM会话时,RFCOMM实体会消极回复连接建立,后续措施由各家stack自己定(如后退随机时间,或是由用户决定是否重试)

    5.2.2 Close-down Procedure

    设备关闭最后的DLC时需要通过关闭L2CAP信道来关闭多路器。



    在关闭L2CAP信道前,设备关闭连接时可以通过在DLCI 0 上发送DISC,远端设备回复UA。


    5.2.3 Link Loss Handling

    如果收到L2CAP的link loss信息,那本地RFCOMM实体需要一个连接loss信息给模拟实体发给所有进行中的DLC,然后相关的所有RFCOMM会话都会结束释放。

    5.3 System Parameters

    下表是GSM 07.10中的默认参数值:



    timer T1只用于P/F-Bit设为1的帧,对于RFCOMM来说,就是SABM和DISC。timer T2用于DLCI 0 上的UIH消息。timer可以按上表任意设置,但是在发送SABM去建立新的DLC(DLCI > 0)时,T1必须设置为60 - 300s.
    因为RFCOMM是有更底层来保证传输可靠性,所以超时默认关闭多路器会话。
    做为接收方,如果已经有一个RFCOMM认证过程,那么在接收到SABM帧时必须结束,而不是收到配置命令准备DLC时。

    5.4 DLCI allocation with RFCOMM Server Channels

    由于RFCOMM会话两段都可以作为客户端和服务器,两段客户端发起的连接会话相互独立,所以DLCI值根据RFCOMM服务器信道和方向标识来区分。
    RFCOMM服务器信道号是GSM 07.10中对应DLCI字段的其中几个bit位



    RFCOMM分给服务器信道的信道号是从1到30,0和31号不能用,因为在GSM 07.10中已保留。信道号需登记在Service Discovery Database(第7章)中。
    在RFCOMM会话中,初始设备的方向标识D=1,远端设备D=0。当在一个RFCOMM会话上建立一个新的DLC时,方向标识和服务器信道来共同决定DLCI。这个DLCI后期会用在这2个设备间的所有包的传输。
    实际上,DLCI值在非初始设备上一般是DLCIs 2, 4, 6, ... , 60,初始设备上一般是DLCIs 3, 5, 7, ... , 61。
    一个RFCOMM实体在一个已有的RFCOMM会话上建立一个新的DLC,它的DLCI由远端应用的服务器信道号和自身方向标识的反向来决定。
    DLCIs 1和62-63 在RFCOMM中不可用。

    5.5 Multiplexer Control Commands

    在GSM 07.10中,当相关DLC还没建立起来的时候,一些多路器命令会转移到控制信道(DLCI 0),可以参考PN和RPN命令。当收到DISC命令后,所有的状态都需要恢复到默认值,来保证下次DLC的建立,不需要考虑历史遗留问题。



    如果收到一个命令,它的相关DLCI并没有打开,那么多路器会回复一个DM帧,来表示相关DLCI没有开启,后续的DLCI建立命令也不会同意,即后续的SABM也还是会被回复DM。
    在GSM 07.10中,可以将多个多路器控制信息放在一个帧中,只要没有达到最大帧长限制。但是在RFCOMM中,这样是不可以的。

    5.5.1 Remote Port Negotiation Command(RPN)

    RPN命令用在新的DLC建立之前和任意端口设置改变时。
    RPN命令在GSM 07.10中是可选的,但是RFCOMM必须识别和回复它,但是对于设置改变的处理是可自定义的。

    5.5.2 Remote Line Status Command(RLS)

    这个命令用来指示远端端口状态。
    RLS命令在GSM 07.10中是可选的,但是RFCOMM必须识别和回复它,但是对于设置改变的处理是可自定义的。

    5.5.3 DLC Parameter Negotiation(PN)

    PN命令在GSM 07.10中是可选的,但是RFCOMM必须可用。这个命令在建第一个DLC前必须用。
    PN命令中的一些信息对RFCOMM并不适用,需要发送方提前设置为默认值,接收方会无视。



    CL1-CL4字段完全重新定义。在RFCOMM中,蓝牙版本小于v1.0B,这个字段必须为0.



    PN请求优先于DLC建立命令。
    收到PN命令后回复PN回答或是DM。PN命令中包含最大帧长,如果接收方最大帧长小于发送方,接收方在回复PN命令时会更新其中的最大帧长。如果接收放不想建立连接,可以回复DM。发送方接收到更新过的最大帧长,如果接收则更将这个最大帧长作为后续实际发送的最大帧长,如果不接受不建立连接,则可发送DM或DISC。
    如果在建立连接前没有通过PN命令交换信息,则双方都用RFCOMM默认值

    相关文章

      网友评论

          本文标题:RFCOMM WITH TS 07.10(5)

          本文链接:https://www.haomeiwen.com/subject/abhloftx.html