• 【SDP协议】


    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
    
    • 1

    预分配范围中的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
    
    • 1
    • 2
    • 3
    • 4

    蓝牙中的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字节
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    请添加图片描述

    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 事务量,特别是当检索多条服务记录时。具体参数如下:

    4.4.4.3.1 SDP_SERVICE_SEARCH_ATTR_REQ PDU
    4.4.4.3.2 SDP_SERVICE_SEARCH_ATTR_RSP PDU
  • 相关阅读:
    pve独显直连
    AC自动机
    【微服务】Docker的基本操作
    布谷鸟搜索算法的改进及其在优化问题中的应用(Matlab代码实现)
    go-zero jwt 鉴权快速实战
    常见React Hooks 钩子函数用法
    WPS的JS宏如何实现全文件路径字符串中截取文件名(excel)
    算法提升:图的拓扑排序算法
    《基于区块链的数据资产评估实施指南》技术研讨会成功召开
    牛客网刷题训练(三)
  • 原文地址:https://blog.csdn.net/weixin_41477306/article/details/130904179