本文档通过指定ETSITS07.10标准的一个子集,以及一些特定于蓝牙®的自适应,来指定RFCOMM协议。
1.前言
RFCOMM协议通过L2CAP协议提供串口的仿真。该协议基于ETSI标准GSM07.10。此外,以强制性的基于信用的流量控制方案的形式,增加了一个特定于RFCOMM的扩展。
1.1 概述
RFCOMM是一个简单的传输协议,附加了模拟RS-232(ITU-TV.24)串口的9个电路的规定。
RFCOMM协议支持两个蓝牙设备之间最多60个同时连接。在蓝牙设备中可以同时使用的连接数是特定于实现的。
1.2 设备类型
对于RFCOMM的目的,一个完整的通信路径涉及到在不同的设备(通信端点)上运行的两个应用程序,它们之间有一个通信段。图1.1显示了完整的通信路径。(在此情况下,术语应用程序可以指终端用户应用程序以外的其他东西;例如,更高层协议或代表终端用户应用程序使用的其他服务。)
RFCOMM旨在覆盖利用其所在设备的串行端口的应用程序。在简单的配置中,通信段是从一个设备到另一个设备的蓝牙链路(直接连接),见图1.2。当通信段是另一个网络时,蓝牙无线技术用于设备和像调制解调器这样的网络连接设备之间的路径。RFCOMM只涉及直接连接情况下的设备之间的连接,或者涉及网络情况下的设备与调制解调器之间的连接。RFCOMM可以支持其他配置,如一侧通过蓝牙无线技术进行通信的模块,另一侧提供有线接口的模块,如图1.3所示。设备并不是真正的调制解调器,但也提供类似的服务。因此,这里没有明确地讨论它们。
本规范支持以下两种设备类型的实现:
- 类型1的设备是通信端点,如计算机和打印机。
- 类型2设备是通信部分部分的设备,例如调制解调器
虽然RFCOMM在协议中没有区分这两种设备类型,但容纳这两种类型的设备会影响RFCOMM协议。
图2
图3
两个RFCOMM实体之间传输的信息被定义为支持1型和2型设备。有些信息只需要第2类设备使用,而其他信息则打算供两者使用。在协议中,类型1和类型2之间没有任何区别。因此,由RFCOMM实现者来确定在RFCOMM协议中传递的信息是否对实现有用。由于设备不知道通信路径中其他设备的类型,因此每个设备都应传递协议指定的所有可用信息。
1.3 字节排序
本文档使用与GSM07.10规范相同的字节顺序;即,所有二进制数字都以最小显著位到最重要位的顺序排列,从左到右读取。
2.RFCOMM服务
RFCOMM模拟RS-232(ITU-TV.24)串行端口。仿真包括非数据电路状态的传输。RFCOMM有一个内置的空调制解调器模拟方案。
如果通过RFCOMM服务接口为特定端口设置了波特率,则不会影响RFCOMM中的实际数据吞吐量,即RFCOMM不会产生人为的速率限制或起搏。然而,如果任何一个设备是2型设备(将数据中继到其他介质上),或者如果数据起搏在两端的RFCOMM服务接口上进行,实际吞吐量平均将反映波特率设置。
RFCOMM支持模拟两个设备之间的多个串口和模拟多个设备之间的串口。
2.1 RS-232控制信号
RFCOMM模拟了一个RS-232接口的9个电路。这些电路列在
2.2空调制解调器仿真
RFCOMM是基于GSM07.10的。当涉及到非数据电路的状态传输时,GSM07.10并不区分DTE和DCE设备。RS-232控制信号以DTE/DCE的形式发送,见表2.2。
表2.2
GSM07.10传输RS-232控制信号的方式在两个相同类型的设备连接在一起时创建一个隐式空调制解调器。图2.1显示了当两个DTE通过RFCOMM连接时创建的空调制解调器。没有一种空调制解调器电缆接线方案可以在所有情况下工作;但是,RFCOMM中提供的空调制解调器方案在大多数情况下都可以工作。
图2.1 RFCOMMDTE-DTE空调制解调器仿真
2.3 多个仿真串行端口
2.3.1两个设备之间的多个模拟串行端口
两个在通信中使用RFCOMM的蓝牙设备可能会打开多个模拟串行端口。RFCOMM支持最多60个开放的模拟端口;但是,设备中可使用的端口数量是特定于实现的。
数据链路连接标识符(DLCI)GSM07.10标识客户机和服务器应用程序之间正在进行的连接。DLCI用6位表示,但其可用值范围为2..61;在GSM07.10中,DLCI0为专用控制通道,由于服务器通道的概念,DLCI1不可用,保留DLCIs62-63。该DLCI在两个设备之间的一个RFCOMM会话中是唯一的。(这在2.3.2节中进一步解释)为了解释客户端和服务器应用程序都可能驻留在RFCOMM会话的两侧,两边的客户端使连接彼此独立,DLCI值空间被分割在两个通信设备之间使用RFCOMM服务器通道的概念。这在5.4中进一步描述:RFCOMM服务器通道的DLCI分配。
图2.2:多个模拟的串行端口。
2.3.2 有多个仿真串行端口和多个蓝牙设备
如果蓝牙设备支持多个模拟串行端口,并且允许连接在不同的蓝牙设备中具有端点,那么RFCOMM实体必须能够运行多个GSM07.10多路复用器会话,请参见图2.3。请注意,每个多路复用器会话都在使用它自己的L2CAP通道ID(CID)。对于RFCOMM,运行GSM07.10多路复用器的多个会话的能力是可选的。
图2.3:模拟来自两个蓝牙设备的串口