传统蓝牙服务问询协议SDP概念

原创 专注于无线通信的蓬勃 2020-08-17 08:22

零.概述

本文主要介绍传统蓝牙SDP的概念,SDP在整个协议栈中的架构,SDP的UUID,服务类,以及服务类属性介绍。

服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征。比如主动问询对方支持哪些蓝牙协议,或者单独问询对方蓝牙电话HFP

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

------------------------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):

蓝牙交流扣扣群:970324688

Github代码:

入手开发板:

蓝牙学习目录

------------------------------------------------------------------------------------------------------------------------------------------

二. SDP概念

服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征。比如主动问询对方支持哪些蓝牙协议,或者单独问询对方蓝牙电话HFP,在整个蓝牙中的架构如红框内:

整个SDP是基于C/S架构,主要是client发起request,server回送response,如下图:

三. SDP常用术语

1. 服务记录

服务是任何一个能够提供信息、执行动作、或代表另一实体控制资源的实体 。服务可以以软件、硬件、或硬软件混合的形式来实现。由 SDP 服务器所维护服务的所有信息都包含于一条服务记录中。该服务记录全部由一张服务属性表组成。如下图所示:

其中服务记录包括服务句柄 服务属性服务句柄是一个32位无符号整形的数字,整个sdp server中必须唯一服务属性如下小节。

2. 服务属性

服务属性用于描述某一服务的一个特征。服务属性的实例如下:

其中服务属性的格式如下:

其中属性ID是1个16位无符号整形的数字,属性值要看ID,来决定是什么格式,属性在后面介绍

总结起来,整个服务器应该包含如下结构(0条或者多条记录):

3.UUID

UUID 是经授权可在所有时空中保持唯一的通用定位符。UUID 可以分布的方式独立创建,而且不需要指定 UUID 的中心注册机构。UUID 值长度为 128 位。

为了减少存储压力,并便于 128 位 UUID 值的转换,UUID 值域已经为了常用和注册的目的进行预先分配。在该已分配域的第一个 UUID 作为蓝牙基 UUID,具有来自蓝牙号码分配文件的值 00000000-0000-1000-7007- 00805F9B34FB。在该已分配域的 UUID 值都具有 16 位或 32 位的别名。这些别名常被称为 16 位或 32位 UUID。但每一别名实际上都代表一个 128 位 UUID 。可以通过一个简单的数学运算计算 16 位或 32 位 UUID 的全部 128 位值。

128 位值 = 16 位值 × 2^96 蓝牙基 UUID

128 位值 = 32 位值 × 2^96 蓝牙基 UUID

通过对 16 位值进行零扩展,将 16 位 UUID 转换成为 32 位 UUID 格式。另外

一个转换方法是将 16 位值加到所有位都为零的 32 位 UUID 。

注 :可以直接对两个 16 位 UUID 或 32 位 UUID 或 128 位 UUID 进行比较,如果要对不同大小的 UUID 进行比较,短 UUID 必须在比较前转换成为长 UUID 格式。

具体协议的UUID如下,参考:

Base Universally Unique Identifier (UUID)

The Base UUID is used for calculating 128-bit UUIDs from “short UUIDs” (uuid16 and uuid32) as described in the SDP Specification. See Service Discovery Protocol (SDP) in the Bluetooth Core Specification.

NOTE: Currently all assigned short UUIDs are uuid16 types.

UUID Name UUID
BASE_UUID 00000000-0000-1000-8000-00805F9B34FB
Protocol Name UUID Protocol Specification
SDP 0x0001 Bluetooth Core Specification
UDP 0x0002 [NO USE BY PROFILES]
RFCOMM 0x0003 RFCOMM with TS 07.10
TCP 0x0004 [NO USE BY PROFILES]
TCS-BIN 0x0005 Telephony Control Specification / TCS Binary [DEPRECATED]
TCS-AT 0x0006 [NO USE BY PROFILES]
ATT 0x0007 Attribute Protocol
OBEX 0x0008 IrDA Interoperability
IP 0x0009 [NO USE BY PROFILES]
FTP 0x000A [NO USE BY PROFILES]
HTTP 0x000C [NO USE BY PROFILES]
WSP 0x000E [NO USE BY PROFILES]
BNEP 0x000F Bluetooth Network Encapsulation Protocol (BNEP)
UPNP 0x0010 Extended Service Discovery Profile (ESDP) [DEPRECATED]
HIDP 0x0011 Human Interface Device Profile (HID)
HardcopyControlChannel 0x0012 Hardcopy Cable Replacement Profile (HCRP)
HardcopyDataChannel 0x0014 See Hardcopy Cable Replacement Profile (HCRP)
HardcopyNotification 0x0016 Hardcopy Cable Replacement Profile (HCRP)
AVCTP 0x0017 Audio/Video Control Transport Protocol (AVCTP)
AVDTP 0x0019 Audio/Video Distribution Transport Protocol (AVDTP)
CMTP 0x001B Common ISDN Access Profile (CIP) [DEPRECATED]
MCAPControlChannel 0x001E Multi-Channel Adaptation Protocol (MCAP)
MCAPDataChannel 0x001F Multi-Channel Adaptation Protocol (MCAP)
L2CAP 0x0100 Bluetooth Core Specification

4. 服务类 

每一服务都是服务类的一个实例。服务类定义提供对所有包含于服务记录中属性的定义,而这些服务记录就代表一个类实例。每一属性定义将给出该属性 ID的数字值、该属性值的用法及其格式。服务记录包含服务类的专用属性,以及用于所有服务的通用属性。

每一服务类将指定一个唯一标识符 。 该服务类标识符包含于ServiceClassIDList 属性的属性值,并表示为 UUID。由于服务记录中的某些属性的格式和含义依赖于服务记录的服务类,因此 ServiceClassIDList 属性非常重要。在使用任一类指定属性之前,应检查或验证它们的值。由于服务记录的所有属性必须遵循所有的服务类,包含于 ServiceClassIDList 属性中的服务类标识符也与此有关。特别要说明的是,每一服务类都是另外一类的子类,该父类的标识符包含在 ServiceClassIDList 列表中。服务子类定义与其父类不同,子类中包含该其它子类特定的属性定义。ServiceClassIDList 属性中的服务类标识符,按照从底层类到高层类的顺序一一列出。

在定义本身是另一服务类子类的新服务类时,该新类将保留父类定义的所有属性。同时,也将定义专用于新服务类的其它属性。换句话说, 向已有服务类的某些实例添加新属性的机制将创建一个新的服务类,该服务类是已有服务类的子类。

有以下服务类,如excel

Service Class Name UUID Specification Allowed Usage
ServiceDiscoveryServerServiceClassID 0x1000 Bluetooth Core Specification Service Class
BrowseGroupDescriptorServiceClassID 0x1001 Bluetooth Core Specification Service Class
SerialPort 0x1101 Serial Port Profile (SPP)
NOTE: The example SDP record in SPP v1.0 does not include a BluetoothProfileDescriptorList attribute, but some implementations may also use this UUID for the Profile Identifier.
Service Class/ Profile
LANAccessUsingPPP 0x1102 LAN Access Profile
[DEPRECATED]
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
DialupNetworking 0x1103 Dial-up Networking Profile (DUN)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
IrMCSync 0x1104 Synchronization Profile (SYNC)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
OBEXObjectPush 0x1105 Object Push Profile (OPP)
NOTE: Used as both Service Class Identifier and Profile.
Service Class/ Profile
OBEXFileTransfer 0x1106 File Transfer Profile (FTP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
IrMCSyncCommand 0x1107 Synchronization Profile (SYNC)  
Headset 0x1108 Headset Profile (HSP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
CordlessTelephony 0x1109 Cordless Telephony Profile (CTP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
[DEPRECATED]
Service Class/ Profile
AudioSource 0x110A Advanced Audio Distribution Profile (A2DP) Service Class
AudioSink 0x110B Advanced Audio Distribution Profile (A2DP) Service Class
A/V_RemoteControlTarget 0x110C Audio/Video Remote Control Profile (AVRCP) Service Class
AdvancedAudioDistribution 0x110D Advanced Audio Distribution Profile (A2DP) Profile
A/V_RemoteControl 0x110E Audio/Video Remote Control Profile (AVRCP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class/ Profile
A/V_RemoteControlController 0x110F Audio/Video Remote Control Profile (AVRCP)
NOTE: The AVRCP specification v1.3 and later require that 0x110E also be included in the ServiceClassIDList before 0x110F for backwards compatibility.
Service Class
Intercom 0x1110 Intercom Profile (ICP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
[DEPRECATED]
Service Class
Fax 0x1111 Fax Profile (FAX)
NOTE: Used as both Service Class Identifier and Profile Identifier.
[DEPRECATED]
Service Class
Headset – Audio Gateway (AG) 0x1112 Headset Profile (HSP) Service Class
WAP 0x1113 Interoperability Requirements for Bluetooth technology as a WAP, Bluetooth SIG [DEPRECATED] Service Class
WAP_CLIENT 0x1114 Interoperability Requirements for Bluetooth technology as a WAP, Bluetooth SIG [DEPRECATED] Service Class
PANU 0x1115 Personal Area Networking Profile (PAN)
NOTE: Used as both Service Class Identifier and Profile Identifier for PANU role.
Service Class / Profile
NAP 0x1116 Personal Area Networking Profile (PAN)
NOTE: Used as both Service Class Identifier and Profile Identifier for NAP role.
Service Class / Profile
GN 0x1117 Personal Area Networking Profile (PAN)
NOTE: Used as both Service Class Identifier and Profile Identifier for GN role.
Service Class / Profile
DirectPrinting 0x1118 Basic Printing Profile (BPP) Service Class
ReferencePrinting 0x1119 See Basic Printing Profile (BPP) Service Class
Basic Imaging Profile 0x111A Basic Imaging Profile (BIP) Profile
ImagingResponder 0x111B Basic Imaging Profile (BIP) Service Class
ImagingAutomaticArchive 0x111C Basic Imaging Profile (BIP) Service Class
ImagingReferencedObjects 0x111D Basic Imaging Profile (BIP) Service Class
Handsfree 0x111E Hands-Free Profile (HFP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class / Profile
HandsfreeAudioGateway 0x111F Hands-free Profile (HFP) Service Class
DirectPrintingReferenceObjectsService 0x1120 Basic Printing Profile (BPP) Service Class
ReflectedUI 0x1121 Basic Printing Profile (BPP) Service Class
BasicPrinting 0x1122 Basic Printing Profile (BPP) Profile
PrintingStatus 0x1123 Basic Printing Profile (BPP) Service Class
HumanInterfaceDeviceService 0x1124 Human Interface Device (HID)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class / Profile
HardcopyCableReplacement 0x1125 Hardcopy Cable Replacement Profile (HCRP) Profile
HCR_Print 0x1126 Hardcopy Cable Replacement Profile (HCRP) Service Class
HCR_Scan 0x1127 Hardcopy Cable Replacement Profile (HCRP) Service Class
Common_ISDN_Access 0x1128 Common ISDN Access Profile (CIP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
[DEPRECATED]
Service Class / Profile
SIM_Access 0x112D SIM Access Profile (SAP)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class / Profile
Phonebook Access – PCE 0x112E Phonebook Access Profile (PBAP) Service Class
Phonebook Access – PSE 0x112F Phonebook Access Profile (PBAP) Service Class
Phonebook Access 0x1130 Phonebook Access Profile (PBAP) Profile
Headset – HS 0x1131 Headset Profile (HSP)
NOTE: See erratum #3507.
0x1108 and 0x1203 should also be included in the ServiceClassIDList before 0x1131 for backwards compatibility.
Service Class
Message Access Server 0x1132 Message Access Profile (MAP) Service Class
Message Notification Server 0x1133 Message Access Profile (MAP) Service Class
Message Access Profile 0x1134 Message Access Profile (MAP) Profile
GNSS 0x1135 Global Navigation Satellite System Profile (GNSS) Profile
GNSS_Server 0x1136 Global Navigation Satellite System Profile (GNSS) Service Class
​3D Display 0x1137​ ​3D Synchronization Profile (3DSP) Service Class​
​3D Glasses ​0x1138 ​3D Synchronization Profile (3DSP) ​Service Class
​3D Synchronization 0x1139​ ​3D Synchronization Profile (3DSP) ​Profile
​MPS Profile UUID ​0x113A ​Multi-Profile Specification (MPS) ​Profile
​MPS SC UUID ​0x113B ​Multi-Profile Specification (MPS) ​Service Class
​CTN Access Service​ ​0x113C​ ​Calendar, Task, and Notes (CTN) Profile ​Service Class
​CTN Notification Service​ ​0x113D ​​Calendar Tasks and Notes (CTN) Profile ​Service Class
​CTN Profile ​0x113E ​​Calendar Tasks and Notes (CTN) Profile ​Profile
PnPInformation 0x1200 Device Identification (DID)
NOTE: Used as both Service Class Identifier and Profile Identifier.
Service Class / Profile
GenericNetworking 0x1201 N/A Service Class
GenericFileTransfer 0x1202 N/A Service Class
GenericAudio 0x1203 N/A Service Class
GenericTelephony 0x1204 N/A Service Class
UPNP_Service 0x1205 Enhanced Service Discovery Profile (ESDP) [DEPRECATED] Service Class
UPNP_IP_Service 0x1206 Enhanced Service Discovery Profile (ESDP) [DEPRECATED] Service Class
ESDP_UPNP_IP_PAN 0x1300 Enhanced Service Discovery Profile (ESDP) [DEPRECATED] Service Class
ESDP_UPNP_IP_LAP 0x1301 Enhanced Service Discovery Profile (ESDP)[DEPRECATED] Service Class
ESDP_UPNP_L2CAP 0x1302 Enhanced Service Discovery Profile (ESDP)[DEPRECATED] Service Class
VideoSource 0x1303 Video Distribution Profile (VDP) Service Class
VideoSink 0x1304 Video Distribution Profile (VDP) Service Class
VideoDistribution 0x1305 Video Distribution Profile (VDP) Profile
HDP 0x1400 Health Device Profile Profile
HDP Source 0x1401 Health Device Profile (HDP) Service Class
HDP Sink 0x1402 Health Device Profile (HDP) Service Class
  (Max value 0xFFFF)  

 五.特定类属性 

具体参照,如图:

我们以截图的方式给出:

专注于无线通信的蓬勃 朝气蓬勃——不积跬步 无以至千里, 不积小流 无以成江海
评论
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 120浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 55浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 48浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 29浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 102浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 107浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 138浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 74浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 155浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦