linux下bluetooth编程(七)SDP协议

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux蓝牙内核协议是指作为Linux操作系统的一部分,在其内核中实现的一系列蓝牙相关协议和功能。这些协议包括了蓝牙核心规范以及各种蓝牙协议的实现,用于支持Linux系统与蓝牙设备之间的通信和交互。 蓝牙内核协议主要包括以下组成部分: 1. L2CAP(逻辑链路控制和适配):提供面向连接和面向无连接的逻辑数据链路,并在数据包上提供流控制、定时和可靠数据传输等功能。 2. SCO(同步连接导向):用于支持蓝牙音频和传真等应用,提供一种带宽有限但实时性要求高的同步数据通信。 3. HCI(主机控制接口):作为内核和蓝牙控制器之间的接口,提供控制和配置蓝牙硬件设备的功能。 4. RFCOMM(串行端口传输协议):用于模拟串行端口的传输方式,使得蓝牙设备可以像传统串口设备一样进行通信。 5. SDP(服务发现协议):用于在蓝牙设备之间发现和获取服务的信息,以便进行通信和配对。 6. HID(人机接口设备协议):用于支持蓝牙键盘和鼠标等人机接口设备的连接和通信。 蓝牙内核协议Linux操作系统中实现蓝牙功能的重要组成部分,它使得Linux能够与各种蓝牙设备进行通信,并提供了一系列协议和功能支持。通过这些协议Linux用户可以方便地连接、配对和传输数据到蓝牙设备,实现无线通信和接口控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值