【SDP协议】

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 架构,架构图如下:
【SDP协议】_第1张图片

2术语

SDP 服务器所维护服务的所有信息都包含于一条服务记录中。该服务记录全部由一张服务属性表组成。如下图所示:
【SDP协议】_第2张图片

服务记录包括: 服务句柄 + 服务属性
服务记录句柄是一个32位数字,用于唯一标识SDP服务器中的每条服务记录。通常,每个句柄仅在每个SDP服务器内是唯一的。

2.1 SERVICE ATTRIBUTE

服务属性用于描述某一服务的一个特征。服务属性的实例如下:
【SDP协议】_第3张图片

服务属性 由两个组件组成:属性ID和属性值。
【SDP协议】_第4张图片
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位

请添加图片描述数据类型描述符:

【SDP协议】_第5张图片
数据长度描述符:

【SDP协议】_第6张图片
数据类型描述符合数据长度举例如下:

【SDP协议】_第7张图片

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字节

【SDP协议】_第8张图片

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协议】_第9张图片
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 事务量,特别是当检索多条服务记录时。具体参数如下:

4.4.4.3.1 SDP_SERVICE_SEARCH_ATTR_REQ PDU
4.4.4.3.2 SDP_SERVICE_SEARCH_ATTR_RSP PDU

你可能感兴趣的:(bluetooth,sdp,bluetooth,协议,SDP,BT)