高通GAIA V3命令参考手册的研读学习(04):PDU格式和含义

上篇研读了:

这篇继续:

高通GAIA V3命令参考手册的研读学习(04):PDU格式和含义_第1张图片

2.1.2  LE GATT

LE: low energy 低能耗

GATT:Generic attribute 通用属性

如果LE DLE不存在(例如,在iPhone 7之前的型号中),LE GATT数据包要短得多。 因此,LE GATT协议更简单,可以减少数据流开销。(LE DLE是什么?)

简单到什么程度?简单到如下表所示,数据流没有前面所说的那些部,仅仅就是一个PDU单元。

高通GAIA V3命令参考手册的研读学习(04):PDU格式和含义_第2张图片

2.2  GAIA PDUs

好,终于到详细讲解PDU (protocol data unit 协议数据单元)了。

表2-4 GAIA v3 PDU协议

字节0

1字节

2字节

3字节

字节4 +

-

-

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

-

供应商ID

特性ID

PDU类型

PDU指定ID

有效载荷

一共只有5个字节的数据!

在上表中:

■  供应商ID:唯一的、特定于供应商的标识符。 例如,蓝牙技术联盟已经分配了识别公司的号码。

(只有2个字节,2的16次方=65536,难道只能分配给这么多个公司?)

■  特性ID:特性特有的唯一标识符。

(这个所谓的特性,是指特定的一个功能。比如语音通话,这是一个特定的功能,然后在这个功能下面,又分为拔打、接听、拒绝等指定动作,这些则由后面的PDU指定ID来表示)

■  PDU类型:

一共是四种:

□  命令:00

□  通知:01

□  回应:10

□  错误:11

■  PDU指定ID:与特性相关的命令ID。这些仅在功能中是唯一的。四种PDU类型,无论是那一种,都是通过这一个BYTE来传递。

■  有效载荷:可选有效载荷(这个具体做什么用?后面看)

2.2.1  命令PDU

方向:移动应用到设备。

这些pdu由移动应用程序发送,以使设备执行某些操作。 指定pdu的ID称为命令ID。

2.2.2  通知PDU

方向:设备到移动应用。

这些通常是由设备发送到移动应用程序的状态变化。 PDU特定的ID称为Notification ID。

2.2.3  响应PDU

方向:设备到移动应用。

当命令被成功处理时,发送此PDU。 它可能包含特定于命令的有效载荷。

2.2.4  错误PDU

方向:设备到移动应用

当命令处理失败时,发送此PDU。 PDU负载包含一个状态码。

表2-5默认错误码,这里一共只定义了8种。实际因为PDU指定ID有7位,应该还可以定义很多种。

状态

代码

描述

不支持失败特性

0 x00

指定了无效的特性ID。

不支持失败命令

0 x01

日志含义指定了无效的PDU Specific ID。

未通过身份验证

0 x02

主机未通过身份验证以使用命令ID或控件。

资源不足失败

0 x03

日志含义命令是有效的,但是设备执行命令失败。

进行身份验证

0 x04

设备正在认证主机。处理步骤

无效的参数

0 x05

命令中使用了无效的参数。

错误的状态

0 x06

设备状态不正确,无法处理该命令。处理步骤

在进行中

0 x07

命令正在执行中。

2.2.5  状态码

这个对应前面说的 通知PDU,很明显在上面表2-4的byte3,0-127对应着命令和回应,128-256对应通知和错误。

状态码长度为8位,其中:

■  0 ~ 127为GAIA框架值

■  128 ~ 256为特性特定值

2.3  通知

通知是一种GAIA PDU类型,它使设备能够在必要时向移动应用程序发送信息。 为了减少蓝牙通话时间的负载,功能通知仅在移动应用程序注册接收时发送。

下面两个命令控制通知:Register和Unregister

这里的通知与前面的通知PDU有什么区别?后面再看。
 

你可能感兴趣的:(高通GAIA,的学习笔记分享,网络)