SDP
- 1.概念
- 2术语
- 2.1 SERVICE ATTRIBUTE
- 2.3 UUID
- 3 数据表示
- 3.2 hci log
- 4.4.4.3 PARTIAL RESPONSES AND CONTINUATION STATE
- 4.4.4.4 ERROR HANDLING
- 4.4.4.5 SERVICE SEARCH TRANSACTION
- 4.4.4.6 SERVICE ATTRIBUTE TRANSACTION
- 4.4.4.3 SERVICE SEARCH ATTRIBUTE TRANSACTION
- 4.4.4.3.1 SDP_SERVICE_SEARCH_ATTR_REQ PDU
- 4.4.4.3.2 SDP_SERVICE_SEARCH_ATTR_RSP PDU
1.概念
服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征。整个 SDP 是基于 C/S 架构,架构图如下:
2术语
SDP 服务器所维护服务的所有信息都包含于一条服务记录中。该服务记录全部由一张服务属性表组成。如下图所示:
服务记录包括: 服务句柄 + 服务属性
服务记录句柄是一个32位数字,用于唯一标识SDP服务器中的每条服务记录。通常,每个句柄仅在每个SDP服务器内是唯一的。
2.1 SERVICE ATTRIBUTE
服务属性用于描述某一服务的一个特征。服务属性的实例如下:
服务属性 由两个组件组成:属性ID和属性值。
Attribute ID 是 1 个 16 位无符号整形的数字
Attribute Value:可变长度
2.3 UUID
UUID是一个通用唯一标识,UUID是一个128位值
Bluetooth_Base_UUID: 00000000-0000-1000-800000805f9b34fb
预分配范围中的UUID值具有表示为16位或32位值的别名。这些别名通常称为16位和32位Uuid,但每个别名实际上都表示128位UUID值.
16位或32位UUID转换成128为UUID:
128_bit_value = 16_bit_value * 2 96 + Bluetooth_Base_UUID
128_bit_value = 32_bit_value * 2 96 + Bluetooth_Base_UUID
蓝牙中的UUID:https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/
3 数据表示
SDP 定义了一种简单的机制来描述包含在属性 ID、属性 ID 范围和属性值中的数据,采用数据元(data element)表示。
数据元 包括两个部分: 1)数据头(header field) , 2)数据值(data field)
数据头 又包括两个部分: 数据类型描述符(type descriptor) 数据长度描述符(size descriptor)组成1byte.
数据描述符占字节的高5位,数据长度描述符栈字节的低3位
数据类型描述符:
数据长度描述符:
数据类型描述符合数据长度举例如下:
3.2 hci log
```java
35 03 19 12 00
35 = 0011 0101 数据类型描述符为:6 长度描述符为 5
03 长度
19 = 0001 1001 数据类型描述符为:3 长度描述符为1 (表示2字节UUID)
**35如下:**
![请添加图片描述](https://img-blog.csdnimg.cn/a9d2ea1d90e14e939ec232c8223110a3.bmp)
![请添加图片描述](https://img-blog.csdnimg.cn/dd178e1adeaf417a8253516df75e6208.bmp)
# 4 协议描述
## 4.1 数据格式
大端
## 4.2 数据格式
![请添加图片描述](https://img-blog.csdnimg.cn/f9410a1a1a984389ba51e462cc808573.bmp)
```java
数据格式:Header + Parameters
Header:PDUID + TransactionID + ParameterLength
TransID:传输消息的 ID,request 放可以在 0x0000~0xffff 之间取任意值,但是 response
要跟 request 一致
PLength:2字节
4.4.4.3 PARTIAL RESPONSES AND CONTINUATION STATE
…
4.4.4.4 ERROR HANDLING
…
4.4.4.5 SERVICE SEARCH TRANSACTION
…
4.4.4.6 SERVICE ATTRIBUTE TRANSACTION
…
4.4.4.3 SERVICE SEARCH ATTRIBUTE TRANSACTION
SDP_SERVICE_SEARCH_ATTR_REQ 事务综合 SDP_SERVICE_SEARCH_REQ 和 SDP_SERVICE_ATTR_REQ 二者功能于一个请求中。作为参数,它既包含服务搜索图,又包含 一 张 属 性 表 , 该 属 性 表 从 与 服 务 搜 索 图 匹 配 的 服 务 记 录 中 检 索 。
SDP_SERVICE_SEARCH_ATTR_REQ 及其应答与 SDP_ServiceSearch 和 SDP_ServiceAttribute 两
者相比,显得更复杂并且可能需要更多的字节。但是,使用 SDP_ServiceSearchAttributeRequest
可以减少总的 SDP 事务量,特别是当检索多条服务记录时。具体参数如下: