Bluetooth Profile Specification之2.1 SPP配置文件(2)

网友投稿 700 2022-05-30

7.应用层

此配置文件建立在通用访问配置文件之上。

当读取时甲方(连接发起者)相当于DevA,而乙方则相当于DevB。

7.1 程序概述

7.1.1建立链接和建立虚拟串行连接

此过程是指执行在远程设备中建立到模拟串口(或等效端口)的连接所需的步骤。本过程中的步骤包括:

使用SDP提交一个查询,以查找远程设备中所需应用程序的RFCOMMServer通道号。这可能包括一种浏览功能,可以让用户在对等设备中的可用端口(或服务)中进行选择。或者,如果确切地知道要联系哪个服务,那么使用与所需服务关联的服务类ID查找必要的参数就足够了。

或者,需要对要执行的远程设备进行身份验证。另外,也需要打开加密功能。

向远程RFCOMM实体请求一个新的L2CAP通道。

在L2CAP通道上启动一个RFCOMM会话。

使用上述的服务器通道号,在RFCOMM会话上启动一个新的数据链路连接。

在步骤5之后,虚拟串行电缆连接可以用于双方应用程序之间的通信。

注意:如果在设置新的数据链路连接时,两个设备之间已经存在一个RFCOMM会话,则必须在现有的RFCOMM会话上建立一个新的连接。(这相当于跳过上面的步骤3和步骤4。)

注意:步骤1和步骤2之间的顺序并不重要(可能正好相反)。

7.1.2接受链接并建立虚拟串行连接

本程序是指参与以下步骤:

如果远程设备请求,请参与身份验证过程,并根据进一步请求启用加密。

接受来自L2CAP的新通道建立指示

接受该通道上的RFCOMM会话设置。

在RFCOMM会话上接受一个新的数据链接连接。如果用户要求使用要连接到的模拟串行端口(并且尚未执行身份验证/加密过程),这可能会触发对远程设备进行身份验证并打开加密的本地请求。

注意:当已经存在到远程设备的RFCOMM会话时,步骤1和步骤4可能是隔离事件。

7.1.3在本地SDP数据库中的3.1.3注册服务记录

此过程是指在SDP数据库中注册模拟串口(或等效端口)的服务记录。这意味着存在一个服务数据库,以及响应SDP查询的能力。

通过RFCOMM可访问的所有服务/应用程序都需要提供一个SDP服务记录,其中包括访问相应服务/应用程序所需的参数。为了支持在虚拟串行端口上运行的遗留应用程序,服务注册必须由一些帮助器应用程序来完成,该应用程序可以帮助用户设置该端口。

7.2 电源模式和链路损耗处理

由于在串口配置文件中活动的单元的电源需求可能会有很大的不同,因此不需要使用任何节电模式。但是,如果可能,使用低功率模式的请求不应被拒绝。

如果使用嗅探、停车或保持模式,则不释放RFCOMMdlc和L2CAP通道。

如果机组检测到链路丢失,则应认为RFCOMM已关闭。不得执行第4节中所述的断开DLC和关闭RFCOMM程序。在恢复更高层上的通信之前,必须执行初始化RFCOMM会话过程。

如果使用嗅探、停车或保持模式,则不释放RFCOMMdlc和L2CAP通道。

如果机组检测到链路丢失,则应认为RFCOMM已关闭。不得执行第4节中所述的断开DLC和关闭RFCOMM程序。在恢复更高层上的通信之前,必须执行初始化RFCOMM会话过程。

8.RFCOMM可互操作性的要求

本节描述了在符合串口配置文件的单元中对RFCOMM的要求。

8.1RS232控制信号

所有的设备都需要通过调制解调器状态命令发送关于RS232控制信号中的所有变化的信息。然而,由于RFCOMM可以与实现任何类型API的自适应层一起使用(不仅仅是虚拟串口),所以使用除了流量控制(TS07.10中的RTR信号)之外的所有RS232控制信号是可选的。这个信号可以被映射到RTS/CTS或XON/XOFF或其他API机制上,这是一个实现问题。

注释:为了提供实际使用所有RS232控制信号的设备和不使用它们的设备之间的互操作性,前一种实现必须将api/连接器中适当信号的状态取决于适当的默认值。该实现不能依赖于从对等设备接收任何RS232控制信息。对RFCOMMDLC状态的依赖可能意味着当RFCOMM  DLC建立时,DSR/DTR和DCD被设置为高电平,如果相应的DLC因任何原因关闭,相同的信号被设置为低电平。

8.2远程线路状态指示

如果本地设备从物理串行(或等效)中继信息,需要使用远程线路状态指示命令通知其他设备RS232线路状态的任何变化。

8.3远程端口谈判

DevA可以在DLC建立之前直接通过远程端口协商命令通知DevBRS232端口设置。如果发送到RFCOMM自适应层的API公开了这些设置(例如,波特率、奇偶校验),则需要这样做。

允许DevB发送远程端口协商命令。

Bluetooth Profile Specification之2.1 SPP配置文件(2)

信息说明:远程端口协商过程中传递的信息预计仅在RFCOMM[4]中第1.2节规定的II型设备(具有物理串口端口)中有用,或者如果由于任何原因在模拟串口接口上进行数据节奏。RFCOMM因此不会基于波特率设置人为地限制吞吐量。

9.L2CAP的互操作性要求

X1:在此配置文件的执行过程中不使用无连接的通道,但不排除其他配置文件/应用程序的并发使用。

9.1通道类型

在此配置文件中,只能使用面向连接的通道。这意味着在此配置文件中将不会使用广播数据和单播无连接数据。

在连接请求数据包的PSM字段中,必须使用在分配编号文档RFCOMM的值。

9.2信号

只有DevA可以在执行此配置文件中发出L2CAP连接请求。除此之外,串口配置文件对L2CAP信令没有施加任何额外的限制或要求。

9.3配置选项

本节描述了在串行端口配置文件中的配置选项的使用情况。

9.3.1最大传输单元

对MTU尺寸没有任何限制。

9.3.2刷新超时

串口数据通过一个可靠的L2CAP通道传输。冲洗超时值应设置为其默认值0xffff,除非为承载RFCOMM的L2CAP通道协商了L2CAP增强重传模式。如果协商了L2CAP增强重传模式,则可以根据在同一ACL逻辑传输上运行的其他概要文件来设置刷新超时值。

9.3.3服务质量

关于服务质量的协商是可选的。

9.3.4流量和错误控制

对于任何将传输大型数据文件和接收设备将受到无线电干扰而导致数据包丢失的产品,建议通过配置通道以使用增强的重传模式来利用L2CAP(核心规范V3.0及更高版本)中的错误控制功能。

串口数据通过一个可靠的L2CAP通道传输。该通道的可靠性可以通过在ACL逻辑传输上的无限刷新超时来实现。但是,如果串行端口配置文件与同一物理链路上的其他配置文件共存,那么可能不能以这种方式配置ACL逻辑传输。因此,对于期望串口配置文件与物理链路上的其他配置文件共存的设备,应该为通道承载RFCOMM协商L2CAP增强重传模式(在核心规范版本3.0中引入)。以这种方式实现可靠的L2CAP通道,从而允许ACL逻辑传输具有适用于其他配置文件的有限刷新超时。

对于使用串行端口配置文件的应用程序,也可以协商L2CAP增强重传模式,这需要比非刷新ACL逻辑传输提供的更高的可靠性。

10.SDP的互操作性要求

10.1串口配置文件的SDP服务记录

在DevA中没有与串口配置文件相关的SDP服务记录。

下表描述了DevB的SDP数据库中与串行端口相关的项。允许向此服务记录添加其他属性。

在v1.2之前的串行端口配置文件版本并没有强制使用BluetoothProfileDescriptorList属性。新的DevA设备应假定没有此属性的远程DevB不支持串口配置文件版本1.2或更高版本。

10.2SDP程序

为了检索支持此配置文件的服务记录,在DevA中的SDP客户端实体通过SDP和SDAP的SDP上限程序与SDP服务器实体连接和交互。根据SDAP,DevA扮演LocDev的角色,而DevB扮演RemDev的角色。

11.链接管理器(LM)互操作性要求

11.1能力概述

除了在链路管理器规范本身中规定的对受支持的过程的要求外,这个配置文件还需要支持DevA和DevB中的加密。

11.2错误行为

如果一个单元试图使用强制功能,而另一个单元回答不支持,启动单元应发送一个具有分离原因的“不支持LMP特性”的LMP_detach。

一个单元应始终能够处理拒绝对一个可选功能的请求。

11.3链接策略

在执行此配置文件时,没有固定的主从角色。

此配置文件不说明是否使用了低功耗模式或何时使用它的任何要求。这是由每个设备的链接管理器延迟要求的限制范围内,适当地决定和请求的。

12.链路控制(LC)的互操作性要求

12.1查询

在DevA中使用查询时,应使用一般查询程序。

只有DevA可以在执行此配置文件时进行查询

12.2查询扫描

对于查询扫描,(至少)应根据GAP[可发现模式之一,使用GIAC。也就是说,如果适合驻留在DevB中的应用程序,它只允许使用有限的可发现模式。

在DevB查询响应消息中,“设备类”字段不会包含任何提示DevB是否参与串行端口配置文件的执行(由于此配置文件提供的遗留应用程序的通用串口服务不适合“设备类”字段定义中的任何主要服务类位)。

12.3分页

只有DevA才能在此配置文件的执行中页面。当DevA和DevB之间已经有一个基带连接时,当开始执行此配置文件时,将在DevA中跳过分页步骤。(在这种情况下,连接可能是DevB以前分页的结果。)

12.4错误行为

由于LC级别上的大多数特性必须由LMP程序激活,因此错误将主要在该层被捕获。然而,有一些独立于LMP层的LC程序;例如,查询或寻页。滥用这些特征是很困难的,有时甚至不可能被检测到。没有定义的机制来检测或防止这种不当使用。

嵌入式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java及JVM是如何识别重载、重写方法的?
下一篇:spring-cloud-kubernetes官方demo运行实战
相关文章