1. 程式人生 > >Bluetooth協議棧學習之SDP

Bluetooth協議棧學習之SDP

服務發現協議(SDP或Bluetooth SDP)在藍芽協議棧中對藍芽環境中的應用程式有特殊的含意,發現哪個服務是可用的和確定這些可用服務的特徵。SDP定義了bluetooth client發現可用bluetooth server服務和它們的特徵的方法。這個協議定義了客戶如何能夠尋找基於特定屬性的服務而不讓客戶知道可用服務的任何知識。SDP提供發現新服務的方法,在當客戶登入到正在操作的藍芽伺服器的一個區域時是可用的時。

 

SDP提供了一套SDP server和SDP client之間的通訊方法。 SDP server維護著一個服務條目列表,這個列表存放著SDP server對應的服務以及服務特性。每個服務條目對應一個單獨的服務。SDP client可以通過傳送請求得到SDP server維護的這個服務條目list.

 

如果SDP client或者聯絡於client之上的應用程式決定使用某個service,則開啟一個針對此服務的連線到服務提供者去使用此服務。SDP只是提供偵測service以及特性的方法,但不提供如何使用這些service的方法.

 

每個bluetooth device最多有一個SDP server. 如果某個device只作為client.則不需要擁有SDP server.而一個bluetooth device可以同時為SDP client和SDP server.

 

服務條目(Service Record):

一個service就是某個實體提供一些資訊,執行某種動作,或控制資源代表另一個實體。一個service可以由軟體,硬體或軟硬體結合提供。

SDP server維護的service條目包含在service record中。

SDP server中,每個service record由一個32位數與別的record區別。注意,只是在這個SDP server內。

 

當SDP server新增或刪除某個service時,不會主動提供給client.

 

Service 屬性:

每個屬性描述一個service的特徵。

service屬性包含兩部分:

attribute ID + attribute Value.

屬性ID是一個16bit的值,用來和Service record內的其它屬性區別開來。

 

 

Service Class:

每個server是 service class的一個例項。service class定義了service(此class的例項)的每個特性。屬性對應attribute ID,屬性value的格式,

每個service classs也指定為一個的識別符號。這個識別符號被包含在屬性ServiceClassIDList中。並描述為UUID。

 

 

Search for service:

service search功能允許SDP client得到包含在service record 中的service 屬性。

可以使用屬性的Universally Unique Identifiers1 (UUIDs)得到屬性。