蓝牙通信UUID

蓝牙低功耗BLE开发,无论是MCU端还是Android等APP端,都会涉及到一堆的UUID,对应着BLE协议栈GATT的Service、Characteristic、Descriptor。

开发者可以自定义这些128位的UUID,也可以采用Bluetooth SIG已定义的标准。

1.概念

    SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性。SDP只提供发现服务的机制,不提供使用这些服务的方法。每个蓝牙设备都需要一个SDP Service,只做Client的蓝牙设备除外。

2.ServiceRecord

每一个Service利用ServiceRecord来表示(具有唯一的32bit的Handle),每一个ServiceRecord由若干ServiceAttribute组成,由下图表示:


 

每一个ServiceAttribute的结构由下图所示:


 

Attribute ID是由Assigned Value定义好的,例如Record Handle Attribute的ID为0x0000。

正因为SDP Record由许多Attribute组成,所以,可以把Record看成AtributeList,这在后面的SDP resposne中会常用到。

设备通过SDP request来访问这些record的相关信息。这里有个很好的SDP实例,如下:


 

Service Class ID List描述了Service的类型,如0x00000000代表SDP service

Protocol Descriptior List 列出了可能使用这种Service的protocol

 

3.Data Element

Data Element是在SDP中定义的一种数据结构,用来表示ServiceAttribute的Value域。每一个data element由Type+Size两部分组成。

Type的定义如下图:

    

 

Size的定义如下图:




 

4.Service Class

每一个Service都是ServiceClass的一个实例,一个Service Record就是一个Service Class的实例,Service Class可以表示一个Record里的所有Attribute。每一个Service Class有一个ID,包含在ServiceClassIDList这个Attribute的value里,称之为UUID。

 

5.UUID

一个全局惟一的标识符,128bit。为了节省存储和传输开销,UUID的一些位已经固定,出现了16bit和32bit的两种UUID。这些不同bit的UUID可以相互转化,如下式:


主从通信需要配置统一的128bit基础UUID和对应的接收发送属性UUID。

6. 蓝牙里面使用的常用的UUID:

 

#蓝牙串口服务

SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'

 

LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}'

 

#拨号网络服务

DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}'

 

#信息同步服务

IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}'

 

SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB}'

 

#文件传输服务

OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}'

 

IrMCSyncCommandServiceClass_UUID = '{00001107-0000-1000-8000-00805F9B34FB}'

SDP_HeadsetServiceClass_UUID = '{00001108-0000-1000-8000-00805F9B34FB}'

CordlessTelephonyServiceClass_UUID = '{00001109-0000-1000-8000-00805F9B34FB}'

SDP_AudioSourceServiceClass_UUID = '{0000110A-0000-1000-8000-00805F9B34FB}'

SDP_AudioSinkServiceClass_UUID = '{0000110B-0000-1000-8000-00805F9B34FB}'

SDP_AVRemoteControlTargetServiceClass_UUID = '{0000110C-0000-1000-8000-00805F9B34FB}'

SDP_AdvancedAudioDistributionServiceClass_UUID = '{0000110D-0000-1000-8000-00805F9B34FB}'

SDP_AVRemoteControlServiceClass_UUID = '{0000110E-0000-1000-8000-00805F9B34FB}'

VideoConferencingServiceClass_UUID = '{0000110F-0000-1000-8000-00805F9B34FB}'

IntercomServiceClass_UUID = '{00001110-0000-1000-8000-00805F9B34FB}'

 

#蓝牙传真服务

FaxServiceClass_UUID = '{00001111-0000-1000-8000-00805F9B34FB}'

 

HeadsetAudioGatewayServiceClass_UUID = '{00001112-0000-1000-8000-00805F9B34FB}'

WAPServiceClass_UUID = '{00001113-0000-1000-8000-00805F9B34FB}'

WAPClientServiceClass_UUID = '{00001114-0000-1000-8000-00805F9B34FB}'

 

#个人局域网服务

PANUServiceClass_UUID = '{00001115-0000-1000-8000-00805F9B34FB}'

 

#个人局域网服务

NAPServiceClass_UUID = '{00001116-0000-1000-8000-00805F9B34FB}'

 

#个人局域网服务

GNServiceClass_UUID = '{00001117-0000-1000-8000-00805F9B34FB}'

 

DirectPrintingServiceClass_UUID = '{00001118-0000-1000-8000-00805F9B34FB}'

ReferencePrintingServiceClass_UUID = '{00001119-0000-1000-8000-00805F9B34FB}'

ImagingServiceClass_UUID = '{0000111A-0000-1000-8000-00805F9B34FB}'

ImagingResponderServiceClass_UUID = '{0000111B-0000-1000-8000-00805F9B34FB}'

ImagingAutomaticArchiveServiceClass_UUID = '{0000111C-0000-1000-8000-00805F9B34FB}'

ImagingReferenceObjectsServiceClass_UUID = '{0000111D-0000-1000-8000-00805F9B34FB}'

SDP_HandsfreeServiceClass_UUID = '{0000111E-0000-1000-8000-00805F9B34FB}'

HandsfreeAudioGatewayServiceClass_UUID = '{0000111F-0000-1000-8000-00805F9B34FB}'

DirectPrintingReferenceObjectsServiceClass_UUID = '{00001120-0000-1000-8000-00805F9B34FB}'

ReflectedUIServiceClass_UUID = '{00001121-0000-1000-8000-00805F9B34FB}'

BasicPringingServiceClass_UUID = '{00001122-0000-1000-8000-00805F9B34FB}'

PrintingStatusServiceClass_UUID = '{00001123-0000-1000-8000-00805F9B34FB}'

 

#人机输入服务

HumanInterfaceDeviceServiceClass_UUID = '{00001124-0000-1000-8000-00805F9B34FB}'

 

HardcopyCableReplacementServiceClass_UUID = '{00001125-0000-1000-8000-00805F9B34FB}'

 

#蓝牙打印服务

HCRPrintServiceClass_UUID = '{00001126-0000-1000-8000-00805F9B34FB}'

 

HCRScanServiceClass_UUID = '{00001127-0000-1000-8000-00805F9B34FB}'

CommonISDNAccessServiceClass_UUID = '{00001128-0000-1000-8000-00805F9B34FB}'

VideoConferencingGWServiceClass_UUID = '{00001129-0000-1000-8000-00805F9B34FB}'

UDIMTServiceClass_UUID = '{0000112A-0000-1000-8000-00805F9B34FB}'

UDITAServiceClass_UUID = '{0000112B-0000-1000-8000-00805F9B34FB}'

AudioVideoServiceClass_UUID = '{0000112C-0000-1000-8000-00805F9B34FB}'

SIMAccessServiceClass_UUID = '{0000112D-0000-1000-8000-00805F9B34FB}'

PnPInformationServiceClass_UUID = '{00001200-0000-1000-8000-00805F9B34FB}'

GenericNetworkingServiceClass_UUID = '{00001201-0000-1000-8000-00805F9B34FB}'

GenericFileTransferServiceClass_UUID = '{00001202-0000-1000-8000-00805F9B34FB}'

GenericAudioServiceClass_UUID = '{00001203-0000-1000-8000-00805F9B34FB}'

GenericTelephonyServiceClass_UUID = '{00001204-0000-1000-8000-00805F9B34FB}'

### 回答1: 经典蓝牙 UUID 列表是一组预定义的唯一标识符,用于识别经典蓝牙设备和服务。每个经典蓝牙设备和服务都有一个独特的 UUID,用于区分不同的设备和服务。 经典蓝牙 UUID 主要分为两类:服务 UUID 和特征 UUID。 服务 UUID 是用来标识蓝牙设备提供的不同服务,比如串口通信、音频传输等。一些常见的经典蓝牙服务 UUID 包括: 1. Serial Port Profile(SPP): 00001101-0000-1000-8000-00805F9B34FB 2. Audio Video Remote Control Profile(AVRCP): 0000110E-0000-1000-8000-00805F9B34FB 3. Hands-Free Profile(HFP): 0000111E-0000-1000-8000-00805F9B34FB 4. Object Push Profile(OPP): 00001105-0000-1000-8000-00805F9B34FB 特征 UUID 则用于标识特定服务中的不同特征或属性。每个服务可能有多个特征,并且每个特征同样有一个唯一的 UUID。比如,对于 SPP 服务,可以有以下特征 UUID: 1. Serial Port Data(Send/Receive): 00002A01-0000-1000-8000-00805F9B34FB 2. Serial Port Control(Open/Close): 00002A02-0000-1000-8000-00805F9B34FB 通过使用这些经典蓝牙 UUID,设备可以在扫描或连接时进行识别,并确保正确的服务和特征被使用。同时,应用程序开发人员可以根据这些 UUID 来开发相应的蓝牙功能,实现设备之间的无线通信和数据传输。总之,经典蓝牙 UUID 列表是连接和通信过程中的重要标识和参考。 ### 回答2: 经典蓝牙UUID列表是指用来标识蓝牙设备的通用唯一识别码。UUID(Universally Unique Identifier)是一个128位的数字,由16进制表示,将其分为5个部分。 第一个部分表示UUID的版本:一般为4位,常见的版本有1、2、3和4,分别用来区分生成UUID的算法。 第二个部分表示UUID的变体标识:也是4位,用于标识UUID的变种形式。 第三个部分是表示UUID的时间戳:占32位,记录生成UUID的日期和时间。 第四个部分是表示UUID的节点标识:占48位,一般是蓝牙设备的MAC地址的一部分。 最后一个部分是UUID名称的哈希编码:占16位,用于哈希编码UUID的名称。 经典蓝牙UUID列表包括一系列常用的UUID,用于标识特定的蓝牙服务、属性和功能。一些常见的经典蓝牙UUID包括: - Serial Port Profile (SPP):用于串口通信UUID,用于传输文本和命令等数据。 - Audio/Video Control Transport Protocol (AVCTP):用于控制音频和视频流的UUID。 - Hands-Free Profile (HFP):用于蓝牙耳机等设备的语音通信UUID。 - Object Push Profile (OPP):用于在蓝牙设备间传输文件的UUID。 - Personal Area Networking Profile (PAN):用于建立蓝牙网络连接的UUID。 - Human Interface Device Profile (HID):用于连接蓝牙鼠标、键盘等人机交互设备的UUID。 除了上述常用的UUID,还有许多其他用于特定蓝牙功能的UUID,每个都有唯一的标识符用于识别相应的服务或功能。这些UUID列表都被广泛使用于蓝牙设备和应用程序的开发中,以便识别和连接蓝牙设备。 ### 回答3: 经典蓝牙 UUID 列表包括以下几个常见的 UUID: 1. 通用属性配置 (GATT) 服务 UUID:00001801-0000-1000-8000-00805f9b34fb 这是一个用于从设备和主设备之间进行通信的标准服务 UUID。它可以用来管理连接、配置设备和执行其他通用功能。 2. 设备信息 (Device Information) 服务 UUID:0000180a-0000-1000-8000-00805f9b34fb 该服务 UUID 用于获取与设备相关的信息,例如设备名称、制造商名称、固件版本等。 3. 串口配置 (Serial Port Profile):00001101-0000-1000-8000-00805f9b34fb 这个 UUID 是用于创建串口连接的标准服务 UUID,它可以用于通过蓝牙与串口设备进行通信,如蓝牙耳机或蓝牙打印机。 4. 灯光服务 (Lighting Service):00001825-0000-1000-8000-00805f9b34fb 这个 UUID 用于控制灯光设备的服务,可以用来调整灯光的亮度、颜色和模式等。 5. 心率监测 (Heart Rate Monitor) 服务 UUID:0000180d-0000-1000-8000-00805f9b34fb 该服务 UUID 用于连接心率监测设备,可以监测心率数据并将其传输到主设备。 6. 健身机械 (Fitness Machine) 服务 UUID:00001826-0000-1000-8000-00805f9b34fb 这个 UUID 是用于连接健身机械设备的服务,可以获取健身数据,如步数、卡路里消耗和运动时间等。 请注意,这些是经典蓝牙 UUID 的一些常见示例,实际应用中可能会有其他自定义的 UUID 用于特定设备或服务。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值