蓝牙核心规范(V5.2)7.4-深入详解之AMP
本部分指定了为备用MAC/PHY特性合并AMP管理器协议(A2MP)所需的规范的更改。
AMP管理器协议(A2MP)为一个设备提供了一种从另一个设备获取有关AMP功能的信息。每个设备都包含一个称为AMP管理器的抽象实体,该实体使用AMP管理器协议与另一个设备上的对等AMP管理器进行通信。
AMP管理实体具有以下职责和能力:
- 能够发现远程AMP管理器
- 能够发现可用的控制器
- 能够查询远程AMP控制器的信息
- 能够管理AMP物理链接
- 负责创建专用的AMP密钥
AMP管理器与本地AMPPAL进行通信,并通过固定的L2CAP通道使用AMP管理器协议与远程AMP管理器进行通信。AMP管理器实体存在于蓝牙堆栈中,如图2.1所示。
图2.1显示了AMP管理器的两个基本通信路径。AMP管理器通过L2CAP使用路径1和主BR/EDR控制器,首先发现远程AMP管理器。AMP管理器可以查询可用的远程amp的可能性及其功能以及其他信息。AMP管理器通过AMP管理器协议通道(A200万像素通道)进行通信。
在发现远程设备支持的AMP后,AMP管理器使用通信路径2来管理其本地AMP(s)和远程设备上的AMP之间的物理链接。可以有多个本地AMP,并且在远程设备上也可能有多个AMP。
AMP管理器协议是两个AMP管理器之间的请求/响应协议。请求和响应都指向两个方向。任何一个对等对象都可以向其相应的对等对象请求相同类别的信息。
1.L2CAP上的AMP管理器通道
对等AMP管理器通过A2MP信道进行通信,这是一个L2CAP固定信道。AMP管理器通道的配置参数应如下所示。MTU值应为大于或等于670字节的任何有效值。
在固定信道上使用的增强再传输模式的参数应如下所示。重传超时、监视器超时和MPS应为大于或等于表2.2中规定的值的任何有效值。
2.使用AMP管理器协议
发现远程AMP管理器
一旦通过主BR/EDR控制器建立了ACL连接,本地AMP管理器应检查远程设备的L2CAP扩展特性位,以确定是否支持L2CAP固定通道。如果是这样,可以通过对所有可用的固定通道发出信息请求来查询其对等点(AMP管理器)的存在。
在远程设备上发现可用的控制器
下一步是发现对等机的AMP控制器的存在性和能力。为此目的,可以通过AMP管理器协议通道发出一个AMP发现请求包。
在AMP发现响应包中,对等AMP管理器将以控制器列表的形式返回有关其本地AMP功能的信息。控制器列表是控制器ID/控制器类型/控制器状态三元组的序列,标识可用于通信的控制器。
控制器列表包含对可用的对等控制器及其状态的基本顶级描述。AMP管理器解析此列表以获得物理无线电兼容性。如果需要关于远程AMP控制器的更多信息,本地AMP管理器随后可以使用通过AMP发现交换检索到的控制器ID发出AMP获取信息请求包。使用指定AMP控制器的AMP控制器信息返回来自对等点的AMP获取信息响应包。AMP控制器信息包含有关AMP控制器的信息,主机可使用这些信息来确定是否创建到AMP控制器的物理链接
创建AMP物理链接
一旦确定需要通过AMP进行蓝牙连接,AMP管理器将通过发出AMPGetAMPAssoc请求包来检索远程AMP控制器的AMP_Assoc结构。然后,它将从远程设备接收到的AMP_Assoc结构传递到其本地AMPPAL,并向其发出信号,以开始物理发现和连接过程。在支持HCI的设备中,这是通过HCI_Create_Physical_Link命令和HCI_Write_Remote_AMP_ASSOC命令来完成的。
AMP管理器只保存AMP_Assoc结构的内容,以便在AMP管理器操作中使用。AMP管理器不直接尝试解释AMP_Assoc结构的内容。
AMP管理器负责生成在HCI_Create_Physical_Link和HCI_Accept_Physical_Link命令中使用的物理链路句柄。当AMPPAL准备好时,它将生成一个HCI_Channel_Selected事件,这是一个使用HCI_Read_Local_AMP_ASSOC命令读取本地AMP_Assoc结构的信号。
如果没有执行相互身份验证或没有通过BR/EDR启用加密,AMP管理器不得通过AMP创建或接受物理链接。
当AMP管理器为两个设备之间的控制器类型没有选择的专用AMP密钥,且BR/EDR链接键类型不是“调试”时,AMP管理器应调用安全简单配对h2功能以生成专用AMP密钥。在后续连接时,应使用此专用的AMP密钥。
如果蓝牙设备支持多个AMP类型,则AMP管理器应第二次调用h2函数以重新生成Key_GAMP,然后再为不同的AMP类型生成专用AMP链接密钥。
当BR/EDR链路键类型设置为“调试”时,AMP管理器应直接使用Key_GAMP作为AMP的密钥,而不管AMP类型如何。密钥长度、键类型和链接键本身在HCI_Create_Physical_Link命令中传递给AMP控制器。
在接收到HCI_Channel_Selected事件并读取本地AMP_Assoc结构后,AMP管理器将发出一个AMP创建物理链接请求包,将本地AMP_Assoc结构发送到对等设备,以便使对等设备参与AMP物理链接创建。
如果对等机接受该请求,它将向其本地AMP发出HCI_Accept_Physical_Link命令,并将在AMP创建物理链接请求包中接收到的AMP_Assoc结构传递给其本地AMP控制器。对等机使用AMP创建物理链接响应包进行响应,以接受或拒绝创建物理链接的请求。
两个主机将收到一个HCI_Physical_Link_Complete事件,指示物理链接创建。
成功后,就可以开始创建逻辑连接的过程。
3.控制器ID
设备中的每个控制器都由本地AMP管理器分配一个八分位唯一标识符。从远程设备的角度来看,控制器id仅在AMP管理器协议通道的生命周期内有效。当A2MP通道断开时,远程设备上的控制器ID将无效。如果本地控制器在A2MP通道的生命周期内不可用,则在接收到发送给所有受影响的远程AMP管理器的对AMP更改通知数据包的AMP更改响应后,可以回收控制器ID。然后,可以将它分配给已添加的任何新的AMP。值0为主BR/EDR控制器保留。设备中的其他控制器应分配值从1到255。
如果AMP控制器不可用,然后在A2MP通道的生命周期内再次可用,远程AMP管理器不应假设AMP控制器将被分配给它之前分配的控制器ID。
4.控制器类型
每种类型的控制器都被分配了一个唯一的一个字节值。这些值在已指定的数字中定义。一个设备可以具有多个相同类型的AMP。
5.协议
AMP管理器协议定义了用于在两个对等AMP管理器之间交换信息的数据包的过程和格式。
Code(1个字节)
该代码标识了数据包的类型。当AMP管理器接收到一个具有未知代码字段的包时,它应该发送一个命令拒绝包作为响应。表3.1列出了本文档定义的代码。所有的代码都在最左边的位置指定了最重要的位。
identifier
该标识符字段可将响应与请求相匹配。请求设备设置此字段,并且响应设备在响应中使用相同的值。对于每个A200P通道,AMP经理应为发送的每个请求使用不同的标识符(这包括AMP变更通知命令)。在请求中的标识符的原始传输之后,如果随后使用了所有其他标识符,则可以回收该标识符。
将丢弃具有无效标识符的响应数据包。标识符0x00是一个非法标识符,不得在任何数据包中使用。表3.2显示了标识符字段的有效值,
Length
“长度”字段仅表示数据包的数据字段的八进制大小,即不包括“代码”、“标识符”和“长度”字段。
Data
数据字段的长度是可变的。代码字段确定数据字段的格式。长度字段确定数据字段的长度。
文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。
原文链接:xintiaobao.blog.csdn.net/article/details/120417624
- 点赞
- 收藏
- 关注作者
评论(0)