참고자료: https://www.bluetooth.com/specifications/specs/core-specification-5-3/
* Bluetooth 전체 Architecture Layer는 "Bluetooth Architecture Layer" 참고
1. SDP(Service Discovery Protocol)란?
- 상대 블루투스 디바이스에서 지원하는 서비스를 알고자 할 때, 사용하는 프로토콜
- 보통 블루투스 연결할 때 사용된다.
2. SDP(Service Discovery Protocol) Role
- Client: 지원하는 서비스를 요청하는 쪽
- Sever: 지원하는 서비스를 제공하는 쪽
3. SDP 구조
- Sevice Record와 Service Attribute로 구성된다.
3-1. Sevice Record
- Service Class의 Service Attribute와, 모든 Service의 공통점인 Universal Service Attributes로 구성된다.
3-2. Service Attribute
- 하나의 Service를 설명
- 각 Service 는 Service Class의 instance(실제 값을 가지고 구현된 것)이다.
- Service Record의 Service Attribute의 포맷과 의미는, Service Record의 Service Class에 따라 다르다.
3-2-1. Service Attribute의 구성
- Attribute ID: 16-bit unsigned integer로 Service Record에 포함된 다른 Service Attribute와 구분할 때 사용된다.
- Attribute Value: Service Attribute의 실제 사용하는 값
- Service Attribute에 대한, 자세한 설명은 "SDP Service Attribute"를 참고
3-2-2. Service Attribute 포맷 예시
Service Attribute | 설명 |
ServiceClassIDList | Identifies the type of service represented by a service record. In other words, the list of classes of which the service is an instance - UUID 포맷 - Service Class의 ID - 해당 Service Record에 포함된 Service Attribute들의 의미와 포맷은, 여기서 선언한 Service Class를 기준으로 작성된다. |
ServiceID | Uniquely identifies a specific instance of a service - Service Attribute |
ProtocolDescriptorList | Specifies the protocol stack(s) that may be used to utilize a service |
ProviderName | The textual name of the individual or organization that provides a service |
IconURL | Specifies a URL that refers to an icon image that may be used to represent a service |
ServiceName | A text string containing a human-readable name for the service |
ServiceDescription | A text string describing the service |
4. Service Class
- 각 Service Attribute는 Service Class의 instance(실제 값을 가지고 구현된 것)이다.
- Service Class definition은 Service Record에 포함된 모든 Service Attribute의 definition을 제공한다.
- Service SubClass는 Service SuperClass의 Service Attribute를 보유한다.
4-1. Service SubClass 예시
- duplex 기능이 있는 color postscript printer의 Service Class
- PrinterServiceClass Service SuperClass가 3개의 SubClass를 가지는 것을 알 수 있다.
DuplexColorPostscriptPrinterServiceClassID, ColorPostscriptPrinterServiceClassID, PostscriptPrinterServiceClassID, PrinterServiceClassID |
5. SDP Client에서 SDP Server 접근방법
- Service Searching과 Services Browsing이 있다.
5-1. Service Searching
- Service Record의 Handle을 사용하여, 해당 Service Record에 포함된 Service Attribute를 탐색하는 방법
5-2. Services Browsing
- 아무런 정보 없이, Service Record의 설명을 통하여, Service Attribute를 탐색하는 방법
5-2-1. Services Browsing 예시
Service Name | Service Class | Attribute Name | Attribute Value |
Entertainment | BrowseGroupDescriptor | BrowseGroupList | PublicBrowseRoot |
GroupID | EntertainmentID | ||
News | BrowseGroupDescriptor | BrowseGroupList | PublicBrowseRoot |
GroupID | NewsID | ||
Reference | BrowseGroupDescriptor | BrowseGroupList | PublicBrowseRoot |
GroupID | ReferenceID | ||
Games | BrowseGroupDescriptor | BrowseGroupList | EntertainmentID |
GroupID | GamesID | ||
Movies | BrowseGroupDescriptor | BrowseGroupList | EntertainmentID |
GroupID | MoviesID | ||
Starcraft | Video Game Class ID | BrowseGroupList | GamesID |
A Bug’s Life | Movie Class ID | BrowseGroupList | MovieID |
Dictionary Z | Dictionary Class ID | BrowseGroupList | ReferenceID |
Encyclopedia X | Encyclopedia Class ID | BrowseGroupList | ReferenceID |
New York Times | Newspaper ID | BrowseGroupList | NewsID |
London Times | Newspaper ID | BrowseGroupList | NewsID |
Local Newspaper | Newspaper ID | BrowseGroupList | NewsID |
'블루투스 > SDP' 카테고리의 다른 글
AdditionalProtocolDescriptorList 예시 (0) | 2022.12.22 |
---|---|
SDP Service Attribute (0) | 2022.12.20 |