蓝牙智能眼镜数据通信协议
SMART BLUETOOTH LE GLASS PROFILE
版本历史
版本 | 时间 | 作者 | 描述 |
---|---|---|---|
1.0 | 20231010 | 胡伟 | 初始化文档 |
作者
姓名 | 邮箱 | 公司 |
---|---|---|
胡伟 | wei.hu@bi-ci.com | 上海大不自多信息科技有限公司 |
版权告知
本文档版权属于上海大不自多信息科技有限公司。
1. 概述
智能硬件蓝牙通信协议(以下简称本协议)用于规范化第三方硬件与行者/XOSS APP之间进行蓝牙数据传输和命令控制。我们定义传输服务以及三个数据传输通道,智能设备通过实现必须的服务和通道来与行者APP进行数据通信与传输。
1.1 描述依赖
基于蓝牙Generic Attribute Profile (GATT) 定义。
1.2 蓝牙规范和兼容性要求
本规范要求蓝牙版本4.0以及以上,支持低功耗蓝牙(BLE)。
1.3 专业术语
Bluetooth Glass Device:蓝牙设备,后面简称BG Device
Bluetooth Glass Profile:蓝牙配置,简称BG Profile
Bluetooth Glass Service:蓝牙服务,蓝牙层服务,简称BGS
Device Information Service:蓝牙标准设备信息服务,简称DIS
2 配置
2.1 规则
本规范定义了2个角色:BG Device,Collector。
BG Device 眼镜设备
Collector(APP or 码表):用户接受设备信息和控制设备
3 Bluetooth Glass设备要求
BG设备必须包含且仅包含一个Bluetooth Glass Service (简称BLS)
BG设备必须包含标准蓝牙的Device Information Service(简称DIS)
BG设备必须包含标准蓝牙的Battery Service (简称BS)
BG设备可选包含OTA Service (简称OTA)
3.1 Bluetooth Glass Service要求
3.1.1 低功耗传输要求
本节中描述Bluetooth Glass设备定义的Bluetooth Glass服务必须通过低功耗蓝牙传输(Low Energy)。
3.1.1.1 服务UUIDs 广播
Bluetooth Glass设备广播时,必须在广播信息中带有Bluetooth Glass Service的uuid信息,以增强用户使用体验,方便用户在发现时识别设备类型。
3.1.1.2 设备名称广播
为了增强用户体验,设备名称必须在广播时提供。
3.2 广播服务数据
本节定义了BL设备的广播信息内容,允许客户端通过广播信息确定设备类型。自 定义广播数据如下表:
广播数据字段 | 类型 | 大小 | 要求 |
---|---|---|---|
Service Data AD Type | UINT8 | 1 | M |
BGS UUID(short) | UINT16 | 2 | M |
Flags | UINT8 | 1 | M |
表
在广播信息中提供蓝牙标准的眼镜穿戴设备16bits Appearance Value=0x01C0
3.3 字节顺序Byte Ordering
本文档中当特征值或者描述值有多个字节组成时,定义如下:
LSB | Least Significant Bit(最低有效位) |
---|---|
LSO | Least Significant Octet(最低有效字节) |
MSB | Most Significant Bit(最高有效位) |
MSO | Most Significant Octet(最高有效字节) |
表
3.4 DIS要求
参考蓝牙官方标准协议,DIS服务UUID为0x180A,本设备需要的特征服务表定义如下:
特征 | UUID | 支持 | 描述 |
---|---|---|---|
Manufacturer Name String | 0x2A29 | M | 设备制造商的名称,写设备制造商为外界所熟识的名称 |
Model Number String | 0x2A24 | M | 由设备制造商定义,建议写为某个产品的型号 |
Serial Number String | 0x2A25 | M | 由制造商定义的产品编号,为每个产品赋一唯一的编号,可以按实际应用定义自己产品SN的格式。 |
Hardware Revision | 0x2A27 | M | 产品的硬件编号,建议使用三位数以点相隔,分别表示主版本号,副版本号,发行编号 |
Firmware Revision | 0x2A26 | M | 固件软件版本号,建议使用三位数以点相隔,分别表示主版本号,副版本号,发行编号 |
Software Revision | 0x2A27 | O | 应用软件版本号,建议使用三位数以点相隔,分别表示主版本号,副版本号,发行编号(偶数发行,奇数调试) |
System ID | 0x2A23 | O | 包含OUI( Oranizationally Unique Identifier)和一个由制造商为该产品编排的唯一编号 |
PnP ID | 0x2A50 | O | 包含由国标组织颁给制造商的编号,制造商定义的产品ID,由制造商定义的产品版本信息 |
表
3.5 BS要求
参考蓝牙官方标准协议,BS服务UUID为0x2A1B,本设备需要的特征服务表定义如下:
特征 | UUID | 支持 | 描述 |
---|---|---|---|
Battery Level | 0x2A19 | M | 电池电量 0~100 |
Battery Level Status | 0x2A24 | O | 电池电量状态定义,包括是否充电中 |
表
4. 蓝牙服务和特征
BGS 是设备的主要属性和功能,设备支持的服务和特征如下表:
Profile需求 | 章节 | 支持 |
---|---|---|
Service 发现 | 4.1 | 必需 |
BGS 服务发现 | 4.1 | 必需 |
DIS 服务发现 | 4.1 | 必需 |
特性发现 | 4.2 | 必需 |
BGS 服务特征发现 | 4.2.1 | 必需 |
DIS 服务特征发现 | 4.2.2 | 必需 |
4.1 服务发现
使用低功耗蓝牙传输时,Collector应该在遍历发现主服务,并比对出相应的uuid的服务。
Bluetooth Glass Service UUID:0xADB401C0-B1C6-11ED-AFA1-0242AC120002
Bluetooth Glass Service UUID(Short):01C0
4.2 特征发现
4.2.1 Bluetooth Glass 特征发现
Bluetooth Glass Characteristics包含以下特性
Characteristics | 支持 | 属性 | 描述 |
---|---|---|---|
Bluetooth Glass Feature | M | Read | 支持的特性 |
Bluetooth Glass Machine Status | M | Read, Notify | 当前状态,支持读和通知模式 |
Bluetooth Glass Control Point | O | Write, Indicate | 控制和设置设备,支持写和写响应 |
4.2.2 DIS特征发现
参考蓝牙官方标准协议
4.2.3 BS特征发现
参考蓝牙官方标准协议
4.3 Bluetooth Glass Features特征
特征UUID:0xADB40001-B1C6-11ED-AFA1-0242AC120001
Bluetooth Glass Feature特征用于描述本设备支持的特性。定义结构如下:
Feature | Glass Type | Glass Mode | Reserved |
---|---|---|---|
字段类型 | UINT16 | UINT16 | |
大小 | 2 octets | 2 octets | |
字节顺序 | LSO...MSO | LSO...MSO | |
单位 | None | None |
表
4.3.1 设备类型特性支持(Glass Type Feature)定义
当Glass Type Feature 字段中的某个位设置为 1 (True) 时,服务支持关联的功能。 如果服务不支持相关功能,则相关功能位应设置为 0(false),设备Type支持配置表:
Bit | 定义 | 值 |
---|---|---|
0 | Single | 0 - Not Support 1 - Support |
1 | Double | 0 |
2 | Reserved | 0 |
3 | Reserved | 0 |
4 | Reserved | 0 |
5 | Reserved | 0 |
6 | Reserved | 0 |
7 | Reserved | 0 |
8~15 | Reserved | 0 |
4.3.2 设备模式特性支持(Glass Mode Feature)定义
当Glass Mode Feature 字段中的某个位设置为 1 (True) 时,服务支持关联的功能。 如果服务不支持相关功能,则相关功能位应设置为 0(false),设备支持模式表如下:
Bit | 描述 | 值 |
---|---|---|
0 | 设备OFF | 0 - Not Support 1 - Support |
1 | 投影模式 | 0 - Not Support 1 - Support |
2 | 自定义模式 | 0 - Not Support 1 - Support |
3~15 | 保留 | 0 |
4.4 Bluetooth Glass Machine Status特征
Bluetooth Glass Machine Status特征用于描述本设备目前的设备状态。
特征UUID:0xADB40002-B1C6-11ED-AFA1-0242AC120002,定义结构如下:
Byte | 描述 | 大小 | 默认值 | 单位 |
---|---|---|---|---|
0 | Flags | 1 octet | ||
1 | Glass type 表 3-4 | 1 octet | ||
2 | Glass Mode Status 表 4-9 | 1 octet |
Flags field
Flag bit | Value = 0 | Value = 1 |
---|---|---|
0 | Glass type field not present | Glass type field present |
1 | Glass mode field not present | Glass mode field present |
2~7 | Resevred |
4.4.1 Light type
设备类型参考表
4.4.2 设备模式当前状态
1字节表示,每个已链接设备模式状态描述如下表:
值 | 定义 |
---|---|
0 | 设备关闭 |
1 | 投影 |
2 | 自定义 |
3~63 | 保留 |
4.5 Bluetooth Glass Control Point 特征
特征UUID:0xADB40003-B1C6-11ED-AFA1-0242AC120003,在Bluetooth Light Control Point 特征通道中,向本通道写入命令,命令的格式定义如下表:
LSO MSO
Op Code | Parameter | |
---|---|---|
Order | LSO...MSO | |
Type | UINT8 | Variable |
Size | 1 octet | 0~18 octets |
4.5.1 Operate Code 操作定义
4.5.1 Operate Code 操作定义
控制命令操作符号表
Op Code | 支持 | 定义 | 参数 | 描述 |
---|---|---|---|---|
0x00 | M | Request Control | N/A | 请求对设备的控制,响应码为0x80 |
0x01 | M | Reset | N/A | 请求重置设备的控制,响应码为0x80 |
0x02 | O | Set Glass Type | Glass Type: | 设置类型 |
0x03 | O | Set Glass Mode | Glass Mode: | 设置模式 |
0x04~0x09 | O | 保留 | ||
0x0A | O | Set Workout Data | 最长MTU—2字节 | 最长MTU—2字节 运动数据 |
0x0B | O | Set Navigation | 最长MTU—2字节 | 最长MTU—2字节 导航数据 |
0x0C~0X7F | N | 保留 | ||
0x80 | M | 响应代码 | 表 4-12 | 标记对Control Point的请求响应 |
0x81~0xDF | N | 保留 | ||
0xDF | O | 请求设备进入DFU状态 | N/A | 设备进入DFU状态,即断开,无返回值 |
0xF0~0xFF | N | 保留 |
表 4-11
MTU 是硬件设备和APP之间握手的单次最大包大小。
4.5.2 Response Code 操作定义
在Bluetooth Light Control Point 特征通道中响应数据格式如下:
Reponse CodeOp Code=0x80 | Request Op Code | Result Code | Response Parameter | |
---|---|---|---|---|
Order | LSO...MSO | |||
Type | UINT8 | UINT8 | UINT8 | |
Size | 1 octet | 1 octet | 1 octet | 0~17 octets |
表 4-12
4.5.3 Reslut Code 定义
Result Code | 定义 | Request Op Code | Response Parameter |
---|---|---|---|
0x00 | Reserved | N/A | N/A |
0x01 | 成功 | 表 4-11 | N/A |
0x02 | 不支持Op Code | 表 4-11 | N/A |
0x03 | 非法参数 | 表 4-11 | N/A |
0x04 | 失败 | 表 4-11 | N/A |
0x05 | 没有权限 | 表 4-11 | N/A |
0x06~FF | Reserved | N/A | N/A |
表 4-13
4.5.4 Workout Data 定义
WorkoutData 约束为1个字节数据类型和2个字节值类型:
Workout Data Type | Data Value | |
---|---|---|
Order | ||
Type | UINT8 | |
Size | 1 octet | 1~4 octets |
Workout data type 定义如下:
值 | Title | 定义 | Data Type | |
---|---|---|---|---|
0 | Type | 运动类型枚举 | UINT8 | |
1 | Sub Type | 子类型 | UINT8 | |
2 | Workout State | 状态 | UINT8 | 0, 记录中,1,暂停中 |
3 | Calories | UINT16 | ||
4 | Moving Time | UINT32 | ||
5 | Total Time | UINT32 | ||
6 | Paused Time | UINT32 | ||
7 | Distance | UINT32 | 单位米,scale: 100 | |
8 | Speed | UINT16 | 单位米/秒,scale: 1000 | |
9 | Avg Moving Speed | UINT16 | ||
10 | Avg Speed | UINT16 | ||
11 | Max Speed | UINT16 | ||
12 | Pace | UINT8 | ||
13 | Avg Pace | UINT8 | ||
14 | Max Pace | UINT8 | ||
15 | Elevation | UINT16 | 单位米 | |
16 | Grade | UINT8 | %,scale: 100 | |
17 | Elevation Gain | UINT32 | 单位米,scale: 100 | |
18 | Elevation Loss | UINT32 | 单位米,scale: 100 | |
19 | Avg Grade | UINT8 | %,scale: 100 | |
20 | VAM | UINT16 | 单位米,scale: 100 | |
21 | Heartrate | UINT8 | ||
22 | Max HR | UINT8 | ||
23 | AVG HR | UINT8 | ||
24 | % MAX HR | UINT8 | ||
25 | % LTHR | UINT8 | ||
26 | Cadence | UINT8 | ||
27 | Max Cadence | UINT8 | ||
28 | Avg Cadence | UINT8 | ||
29 | Power | UINT16 | watts | |
30 | Avg Power | UINT16 | ||
31 | Max Power | UINT16 | ||
32 | 3s Avg Power | UINT16 | ||
33 | 10s Avg Power | UINT16 | ||
34 | 30s Avg Power | UINT16 | ||
35 | % FTP | UINT8 | %,scale: 100 | |
36 | NP | UINT8 |
public enum WorkoutType:UInt {
case Generic = 0
case Walk = 1
case Running = 2
case Cycling = 3
case Hiking = 4
case Swimming = 5
case Skiing = 6
case Travel = 7
case Trainer = 8
case IndoorCycling = 11
case Virtual = 12
}
4.5.5 Navi Data 定义
TODO