Bluetooth協(xié)議棧學(xué)習(xí)之SDP
作者: Sam (甄峰) sam_code@hotmail.com
?
SDP(service discoveryprotocol:服務(wù)發(fā)現(xiàn)協(xié)議)提供了一個方法,讓應(yīng)用程序檢測哪些服務(wù)是可用的并探測這些可用服務(wù)的特性。
服務(wù)發(fā)現(xiàn)協(xié)議(SDP或BluetoothSDP)在藍(lán)牙協(xié)議棧中對藍(lán)牙環(huán)境中的應(yīng)用程序有特殊的含意,發(fā)現(xiàn)哪個服務(wù)是可用的和確定這些可用服務(wù)的特征。SDP定義了bluetoothclient發(fā)現(xiàn)可用bluetoothserver服務(wù)和它們的特征的方法。這個協(xié)議定義了客戶如何能夠?qū)ふ一谔囟▽傩缘姆?wù)而不讓客戶知道可用服務(wù)的任何知識。SDP提供發(fā)現(xiàn)新服務(wù)的方法,在當(dāng)客戶登錄到正在操作的藍(lán)牙服務(wù)器的一個區(qū)域時是可用的時。
?
SDP提供了一套SDP server和SDP client之間的通訊方法。 SDPserver維護著一個服務(wù)條目列表,這個列表存放著SDPserver對應(yīng)的服務(wù)以及服務(wù)特性。每個服務(wù)條目對應(yīng)一個單獨的服務(wù)。SDPclient可以通過發(fā)送請求得到SDP server維護的這個服務(wù)條目list.
?
如果SDPclient或者聯(lián)系于client之上的應(yīng)用程序決定使用某個service,則打開一個針對此服務(wù)的連接到服務(wù)提供者去使用此服務(wù)。SDP只是提供偵測service以及特性的方法,但不提供如何使用這些service的方法.
?
每個bluetooth device最多有一個SDP server. 如果某個device只作為client.則不需要擁有SDPserver.而一個bluetooth device可以同時為SDP client和SDP server.
?
服務(wù)條目(Service Record):
一個service就是某個實體提供一些信息,執(zhí)行某種動作,或控制資源代表另一個實體。一個service可以由軟件,硬件或軟硬件結(jié)合提供。
SDP server維護的service條目包含在service record中。
SDP server中,每個service record由一個32位數(shù)與別的record區(qū)別。注意,只是在這個SDPserver內(nèi)。
?
當(dāng)SDP server添加或刪除某個service時,不會主動提供給client.
?
Service 屬性:
每個屬性描述一個service的特征。
service屬性包含兩部分:
attribute ID + attribute Value.
屬性ID是一個16bit的值,用來和Service record內(nèi)的其它屬性區(qū)別開來。
?
?
Service Class:
每個server是 service class的一個實例。serviceclass定義了service(此class的實例)的每個特性。屬性對應(yīng)attribute ID,屬性value的格式,
每個serviceclasss也指定為一個的標(biāo)識符。這個標(biāo)識符被包含在屬性ServiceClassIDList中。并描述為UUID。
?
?
Search forservice:
service search功能允許SDP client得到包含在service record 中的service屬性。
可以使用屬性的Universally Unique Identifiers1 (UUIDs)得到屬性。





