RFCOMM(二)
表2.2 GSM 07.10 串行端口控制信号
两个相同类型的设备连接在一起时,GSM 07.10会通过创建一个隐式的null modem的方式去传输RS-232控制信号。图2.1展示了当两个DTE通过RFCOMM连接在一起所创建的null modem。没有单一的null-modem 布线方案适合所有情况,而RFCOMM中提供的null modem方案在大多数情况下都适用。
图2.1 RFCOMM DTE-DTE null-modem模拟
多模拟串口
两个设备之间的多模拟串口
使用RFCOMM通信的两个Bluetooth设备之间可能会开启多个模拟串行端口。RFCOMM支持多达60个开放的模拟端口,然而一个设备中可以使用的端口数量与具体实现相关。
数据链路连接标识(DLCI) GSM 07.10标识客户端和服务器应用程序之间的持续性连接。DLCI由6bit表示,但是其可用范围为2~61,在GSM07.10中,DLCI 0是专用控制信道,由于服务器通道的概念,DLCI 1不可使用,DLCIs 62-63保留使用。 DLCI在两个设备之间的一个RFCOMM会话中是唯一的(这会在2.3.2节中进一步解释)。为了说明客户端和服务器应用程序都可以驻留在RFCOMM会话的两端,并且任一端的客户请求连接都是相互独立的, DLCI value space 被划分开来,在两个通信设备之间使用RFCOMM服务器通道概念。这将会在5.4章节中进一步描述:RFCOMM服务器通道的分配。
图2.2 两个蓝牙设备的模拟串行端口
多模拟串口和多Bluetooth设备
如果Bluetooth设备支持多个模拟端口,并且允许连接在不同Bluetooth设备中拥有端点,则RFCOMM实体必须能够允许多个GSM 07.10多路复用器会话,见图2.3。注意每个多路复用器会话使用自己的L2CAP通道ID(CID)。RFCOMM可选择运行GSM 07.10多路复用器的多个会话。
图2.3 多模拟端口
服务接口描述
RFCOMM是一个用于模拟串行端口的协议。大多数系统中,RFCOMM是包含串行端口模拟实体的端口驱动的一部分。
服务定义模型
图3.1展示了RFCOMM如何适应典型系统的模型。此图表示RFCOMM的参考模型。
图3.1 RFCOMM参考模型
RFCOMM参考模型的元素描述如下:
Element |
Description |
Application |
使用串行端口通信接口的应用程序 |
Port Emulation Entity |
端口仿真实体将系统特定的通信接口(API)映射到RFCOMM服务。端口仿真实体加上RFCOMM构成端口驱动程序。 |
RFCOMM |
通过L2CAP通道提供一个透明数据流和控制通道。多路复用器模拟多个串行端口。 |
Service Registration/Discovery |
服务应用程序在本地设备上注册,它为客户端应用程序提供服务,以此发现如何访问其他设备上的服务程序。 |
L2CAP |
协议复用SAR |
Baseband |
Bluetooth规范定义的基带协议 |
RFCOMM支持的GSM 07.10子集
Options and Modes
RFCOMM使用GSM 07.10基础选项。
Frame Types
表4.1展示了RFCOMM支持的GSM 07.10 frame类型
Frame类型 |
Set Asynchronous Balanced Mode (SABM)命令 |
Unnumbered Acknowledgement (UA)响应 |
Disconnected Mode (DM)响应 |
Disconnect (DISC) 命令 |
Unnumbered information with header check (UIH)命令和响应 |
图4.1 RFCOMM支持的frame类型
RFCOMM不支持Unnumbered Information (UI)命令和响应。因此GSM 07.10协议的错误恢复模式选项在RFCOMM中没有使用,相关的frame类型也不支持。
Commands
GSM 07.10定义了一个具有专用控制通道DLCI 0的多路复用器。控制通道用于在两个多路复用器之间传输信息。下面是RFCOMM支持的GSM 07.10命令:
Supported Control Channel Commands |
Test Command (Test) |
Flow Control on Command (Fcon) |
Flow Control off Command (Fcoff) |
Modem Status Command (MSC) |
Remote Port Negotiation Command (RPN) |
Remote Line Status (RLS) |
DLC parameter negotiation (PN) |
Non Surpported Command Response (NSC) |
每当收到一个non-surpported命令类型时,应该发送一个Non-Surpported命令响应(NSC)。
Convergence Layers
RFCOMM只支持GSM 07.10中的第一类汇聚层。
调制解调器状态命令(MSC)应用于传输所有模拟串行端口的RS-232控制信号和中断信号。
GSM 07.10对于RFCOMM的适配
Media Adaptation
RFCOMM中不适用GSM 07.10基本选项frame中的打开和关闭标志。相反,标志之间包含的字段才在L2CAP和RFCOMM之间交换,见5.1。
每个L2CAP frame始终只包含一个RFCOMM frame。
图5.1基础选项的frame结构
注意,来自GSM 07.10开启关闭标志是被排除在RFCOMM之外的。
FCS calculation
GSM 07.10中,针对不同的frame类型,在不同字段集上计算frame检测序列(FCS)。这些是FCS计算依据的字段:
- 对于SABM,DISC,UA,DM frames: Address, Control和Length字段
- 对于UIH frames: Address和control字段
(这是为了澄清,并为RFCOMM制定标准,FCS计算包含字段在GSM 7.0.0到GSM 07.10中实际发生了变化,但是RFCOMM不会改变上述的FCS计算方案)。
P/F-Bit
控制字段中(见图5.1),有一个bit叫做P/F-bit。该bit的一般功能在GSM 07.10[1] 5.4.4节中进行了说明。此外,GSM 07.10[1] 5.4.3.1节中进一步阐明了UIH frame中P/F位的使用值。这些规则适用于不使用基于信用的flow control方案的RFCOMM会话,无需改进。
然而,当基于信用的flow control使用时,P/F-bit的意义在UIH被重新定义了。与图5.1相比较,这还涉及了对框架的重新定义。更多细节参阅DLC Op。
CR Bit
在GSM 07.10中,有两个不同的C/R-bit,一个在frame级(frame header的address字段),另外一个在message级(多路复用器控制通道发送命令的command type字段)。Frame级的C/R bit与message级的C/R bit |