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

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

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

 

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

 

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

 

若是一个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. ci

 

 

Service Record(Service 条目)资源

一个service是一个实体为另外一个实体提供信息,执行动做或控制资源。一个service能够由软件,硬件或软硬件结合提供。 it

 

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

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

 

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。

相关文章
相关标签/搜索