Bluetooth Profile Specification之3.0 RFCOMM服务

简介: Bluetooth Profile Specification之3.0 RFCOMM服务

本文档通过指定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显示了完整的通信路径。(在此情况下,术语应用程序可以指终端用户应用程序以外的其他东西;例如,更高层协议或代表终端用户应用程序使用的其他服务。)

image.png

RFCOMM旨在覆盖利用其所在设备的串行端口的应用程序。在简单的配置中,通信段是从一个设备到另一个设备的蓝牙链路(直接连接),见图1.2。当通信段是另一个网络时,蓝牙无线技术用于设备和像调制解调器这样的网络连接设备之间的路径。RFCOMM只涉及直接连接情况下的设备之间的连接,或者涉及网络情况下的设备与调制解调器之间的连接。RFCOMM可以支持其他配置,如一侧通过蓝牙无线技术进行通信的模块,另一侧提供有线接口的模块,如图1.3所示。设备并不是真正的调制解调器,但也提供类似的服务。因此,这里没有明确地讨论它们。


本规范支持以下两种设备类型的实现:


  • 类型1的设备是通信端点,如计算机和打印机。
  • 类型2设备是通信部分部分的设备,例如调制解调器


虽然RFCOMM在协议中没有区分这两种设备类型,但容纳这两种类型的设备会影响RFCOMM协议。

image.png

图2


image.png

图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个电路。这些电路列在

image.png

2.2空调制解调器仿真

RFCOMM是基于GSM07.10的。当涉及到非数据电路的状态传输时,GSM07.10并不区分DTE和DCE设备。RS-232控制信号以DTE/DCE的形式发送,见表2.2。

image.png

表2.2


GSM07.10传输RS-232控制信号的方式在两个相同类型的设备连接在一起时创建一个隐式空调制解调器。图2.1显示了当两个DTE通过RFCOMM连接时创建的空调制解调器。没有一种空调制解调器电缆接线方案可以在所有情况下工作;但是,RFCOMM中提供的空调制解调器方案在大多数情况下都可以工作。

image.png


图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分配。


image.png

图2.2:多个模拟的串行端口。


2.3.2 有多个仿真串行端口和多个蓝牙设备

如果蓝牙设备支持多个模拟串行端口,并且允许连接在不同的蓝牙设备中具有端点,那么RFCOMM实体必须能够运行多个GSM07.10多路复用器会话,请参见图2.3。请注意,每个多路复用器会话都在使用它自己的L2CAP通道ID(CID)。对于RFCOMM,运行GSM07.10多路复用器的多个会话的能力是可选的。


image.png

图2.3:模拟来自两个蓝牙设备的串口


目录
相关文章
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
2782 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
编解码 安全 Android开发
低功耗蓝牙LE Audio Profile 详细介绍
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
低功耗蓝牙LE Audio Profile 详细介绍
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
829 1
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
549 16
|
编解码 算法 数据格式
【经典蓝牙】蓝牙 A2DP协议分析
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议, 用于传输单声道, 双声道音乐(一般在 A2DP 中用于 stereo 双声道) , 典型应用为蓝牙耳机。         A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。
4063 0
【经典蓝牙】蓝牙 A2DP协议分析
|
开发工具 vr&ar 图形学
Pico Neo 3教程☀️ 一、SDK的下载与快速入门
Pico Neo 3教程☀️ 一、SDK的下载与快速入门
|
SQL 存储 安全
Python安全编程面试:常见安全漏洞与防范措施
【4月更文挑战第19天】本文介绍了Python安全编程面试中的关键点,包括SQL注入、XSS攻击、命令注入、认证授权问题和密码安全。强调了理解安全漏洞原理、识别易受攻击的代码及采取防范措施的重要性。例如,使用参数化查询防止SQL注入,对用户输入进行HTML转义以防御XSS,通过列表形式传递命令参数避免命令注入,妥善管理认证凭据和采用强密码哈希策略。掌握这些知识能提升面试者的安全编程能力。
268 2
|
JavaScript Java 测试技术
基于小程序的校园水电费管理微信小程序+springboot+vue.js附带文章和源代码说明文档ppt
基于小程序的校园水电费管理微信小程序+springboot+vue.js附带文章和源代码说明文档ppt
248 0
|
移动开发 数据安全/隐私保护
HC05蓝牙模块与手机APP连接
HC05蓝牙模块与手机APP连接
918 1

热门文章

最新文章