实战Linux Bluetooth编程 (七) SDP协议

转载 2011年01月08日 18:18:00

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。

服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。这个协议定义了客户如何能够寻找基于特定属性的服务而不让客户知道可用服务的任何知识。SDP提供发现新服务的方法,在当客户登录到正在操作的蓝牙服务器的一个区域时是可用的时。

Service discovery机制提供client应用程序侦测server应用程序提供的服务的能力,并且能够得到服务的特性。服务的品质包含服务type或服务class.

SDP也提供SDP server与SDP client之间的通讯。SDP server维护着一个服务条目(service record)列表.每个服务条目描述一个单独的服务属性。 SDP client可以通过发送SDP request来得到服务条目。

如果一个client或者依附于client之上的应用程序决定使用某个service. 它创建一个单独的连接到service提供者。 SDP 只提供侦测Service的机制,但不提供如何利用这些Service的机制。Sam觉得,这里其实是说:SDP只提供侦测Service的办法,但如何用,SDP不管。

每个Bluetooth Device最多只能拥有一个SDP Server。如果一个Bluetooth Device只担任Client,那它不需要SDP Server。但一个Bluetooth Device可以同时担当SDP Server和SDP client.

Service Record(Service 条目):

一个service是一个实体为另一个实体提供信息,执行动作或控制资源。一个service可以由软件,硬件或软硬件结合提供。

所有的Service信息都包含于一个Service Record内。一个Service Record 包含一个Service attribute(Service属性) list.


在一个SDP Server内,每个Service Record拥有一个32-bit的唯一性数据。通常,这个唯一性只是在每个SDP Server内部。 如果SDP Server S1 和SDP Server S2拥有同样的一个Service Record。那他们在不同SDP Sever内的独特数值并不一定相同。

SDP在SDP Server增加或减少Service Record时,并不会通知SDP client.

Service Attribute(Service 属性):

每个Service属性描述servcie的特性.一个Service Attribute由2部分:

Attribute ID + Attribute Value。


Attribute ID:16-bit无符号整数,用于区别一个Service Record内的其它属性。

Attribute Value:Attribute值。

Service Class:

每个Service 都是某个Service Class的实例. Service Class定义了Service Record中包含的Service 属性。属性ID,属性值都被定义好了。

每个Service Class也有一个独特ID。这个Service Class标识符包含在属性值ServiceClassIDList属性中。并描绘为UUID。自从Service Record中的属性格式以及含义依赖于Service Class后,ServiceClassIDList属性变得非常重要。

Searching For Service:

Service Search transaction(事务?)允许client得到Service Record Handle。一旦SDP Client得到Service Record Handle,它就可以请求这个Record内具体属性的值。

如果某个属性值UUID,则可以通过查找UUID查到这个属性。

UUID: universally unique identifier.(唯一性标识符)

SDP协议栈使用request/response模式工作,每个传输过程包括一个request protocol data unit(PDU)和一个response PDU. SDP使用L2CAP连接传输数据。在发送Request PDU但未收到Response PDU之前,不能向同一个server再发送Request PDU。

 PDU:protocol Data unit

 

 PDU ID:用来识别PDU。


TransactionID:

用来识别Request PUD以及Response PUD。并用来对比某个Response PUD是否对应着Request PUD。

 

相关文章推荐

实战Linux Bluetooth编程 (七) SDP协议

作者:Sam (甄峰) sam_code@hotmail.com   Service DiscoveryProtocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。...

linux下bluetooth编程(七)SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。 服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝...

linux下bluetooth编程(七)SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。 服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中...

实战Linux Bluetooth编程(九) SDP层编程

此作者还有些有关Bluetooth相关文章并没有转载,请到原址查找更多内容。 ==========================================================...

实战Linux Bluetooth编程(九) SDP层编程

作者:Sam(甄峰)  sam_code@hotmail.com   先前的章节谈过SDP协议。但没有具体讲如何编程。 BlueZ提供的SDP API,常见的如下:   1. sdp_se...

实战Linux Bluetooth编程(一) 协议栈概述

最近开始看Bluetooth啦,看到一个好的系列文章,在这转载了。 作者:Sam (甄峰) sam_code@hotmail.com   Sam一年前在Linux下写了一...

实战Linux Bluetooth编程(一) 协议栈概述

作者:Sam (甄峰) sam_code@hotmail.com   Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决...

实战Linux Bluetooth编程(一) 协议栈概述

实战Linux Bluetooth编程(一) 协议栈概述 作者:Sam (甄峰) sam_code@hotmail.com   Sam一年前在Linux下写了一个类似Windows下...

实战Linux Bluetooth编程(一) 协议栈概述

Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API记录下来。这几天又想,这样还不够,...

实战Linux Bluetooth编程(一) 协议栈概述

Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API记录下来。这几天又想,这样还不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)