低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议

来源:互联网 发布:mysql读写分离mycat 编辑:程序博客网 时间:2024/04/29 07:34

SDP的全称是Service Discovery Protocol,中文是服务发现协议。SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。在蓝牙系统中.客户只有通过服务发现协议才能获得设备信息、服务信息及服务特征,才能在此基础上建立相互间的连接。通过这个协议,应用程序可以发现哪些服务可用以及服务的特性是什么。

    SDP服务器-客户端模型:


客户端通过发送SDP请求给服务器查询服务以及服务的属性。

SERVICE RECORD包含了SDP Server的所有信息,它由一系列的service attributes组成,如图:


service record句柄是32位的数,它在每个service中必须唯一,但在不同service中可以相同。代表服务器本身的句柄值0x00000000在研有SDP服务器上都是有效的。服务记录句柄值保留范围:OxO0000001~0x0000FFFF。

    在SDP协议中,一个service records的添加和删除不会通知SDP客户端。当L2CAP连接和SDP服务器建立后,一个service record handle一直有效直到服务器删除了它,客户端的将返回一个无效service handle的错误。

    service attribute描述了服务的特性。它由属性ID和属性值组成。属性ID 是一个16位无符号整数,以便区别于服务记录中的其他服务属性。服务类属性由属性ID和属性值组成。属性值是一千长度可变的字段。它的含义由属性记录中枢应的属性ID和服务类确定。

    UUID是一个128位无符号整数,但在蓝牙协议栈中仅使用16位,蓝牙uuid的 基数(Bluetooth—Base—uuid),其值为00000000-0000—1000—7007—00805F9B34FB。

    如果客户端得到了属性记录句柄,就可以容易得到属性内容。可以使用SDP服务搜索得到服务记录句柄,记录句柄SDP提供了基于UUIDs的服务记录搜索功能,它允许客户获取指定的服务记录旬柄。

    服务搜索样本(SDP Pattern)用于确定服务记录是否匹配的UUID一列表。

    服务浏览用于查看服务器提供的服务。


0 0
原创粉丝点击