RFCOMM WITH TS 07.10(5)

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默认值
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容