在设备被发现阶段,设备的Class of device被提供出来。指出此设备是何种类型,以及支持哪些服务。
回想前面HCI章节所说,Inquiry时,会返回找到的设备信息,其中包括BDADDR等。其中dev_class字段就是Class of Device.
typedef struct {
bdaddr_t bdaddr;
uint8_t pscan_rep_mode;
uint8_t pscan_period_mode;
uint8_t pscan_mode;
uint8_t dev_class[3];
uint16_t clock_offset;
} __attribute__ ((packed)) inquiry_info;
Class of Device parameter包括:
Bluetooth Device Class:主class和次class
Bluetooth Service Type.
至于Class of Device 哪些位表达什么意思,可以从以下网页找到详细说明:
https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
以下用4个典型例子来说明:
dev_class[0] : Octer1. (此项存疑)
dev_class[1]: Octer2
dev_class[2]: Octer3.
例1:
class[0] = 4
class[1] = 1
class[2] = 3E
Class[1] = 1 指明第8位为1。查网页,表明是(计算机(台式机、笔记本、PDA、organizer ....))
Class[0] = 4 指明第2位为1。表明:台式机工作站
Class[2] = 3E. 表明17-21位均为1。
17 | 网络(LAN、Ad hoc ...) |
18 | 渲染(打印、扬声器 ...) |
19 | 捕捉(扫描仪、麦克风 ...) |
20 | 对象传输(v-Inbox、v-Folder ...) |
21 | 音频(扬声器、麦克风、耳机服务 ...) |
表明这是一台台式机,支持以上各种服务。
例2:
class[0] = 4
class[1] = 1
class[2] = 0
Class[1] = 1 指明第8位为1。查网页,表明是(计算机(台式机、笔记本、PDA、organizer ....))
Class[0] = 4 指明第2位为1。表明:台式机工作站
表明这是一台台式机。 但什么都不支持。
例3:
class[0] = 80
class[1] = 25
class[2] = 0
先看主设备:class[1] = 25, 表明8,10,13 位为1。
8,10位为1 表明是 配件(鼠标、游戏杆、键盘 .....)
13位为1:有限可发现模式 (Sam: 并不是一直可见,而是按键后才可见)
再看次设备:class[0] = 80, 表明第7位为1。表明指向设备。呵呵,就是鼠标了。
例4:
class[0] =4
class[1] = 25
class[2] = 0
先看主设备:class[1] = 25, 表明8,10,13 位为1。
8,10位为1 表明是 配件(鼠标、游戏杆、键盘 .....)
13位为1:有限可发现模式 (Sam: 并不是一直可见,而是按键后才可见)
再看次设备:class[0] = 4, 表明第3位为1。表明游戏杆。
=========================================================================================================================
基带的分配编号确定查询访问码和设备/服务类别(CoD)字段。
查询访问码(IAC)是寻找蓝牙设备和服务的第一个过滤层。定义多个IAC的主要目的是限制查看范围内的设备时响应的数量。
# | LAP值 | 用途 |
---|---|---|
0 | 0x9E8B33 | 通用/无限查询访问码 (GIAC) |
1 | 0x9E8B00 | 有限的专用查询访问码 (LIAC) |
2 63 | 0x9E8B01-0x9E8B32, 0x9E8B34-0x9E8B3F | 留待将来使用 |
表1:查询访问码:
有限查询访问码 (LIAC) 仅用于限定的时段,在两边均已明确要进入此状态的情况下使用,通常由用户操作。有关 LIAC 使用的详细说明,请参考通用访问配置文件。
相反,允许持续扫描通用查询访问码 (GIAC) 并在查询时响应。
设备/服务类别 (CoD) 字段的格式可以改变。格式通过 CoD 中的“格式类型字段”指明。格式类型字段的长度为变量,以不同于“11”的两位数结束。版本字段从CoD的最低有效位开始,并向上延伸。
在CoD的“format #1”(格式类型字段 = 00)中,11位分配为位掩码(可以设定多个位),每个位对应于一个高级别的通用服务类别。当前定义了7种类别。主要是“公共服务”属性。其余的11位用于指示设备类别和其他的设备特定特性。任何保留的但未分配的位,如在主要服务类字段中,应设为0。
主要和次要设备类用于定义Bluetooth SIG成员希望与其应用程序相关联的设备通用系列。不应仅根据主要或次要设备类的分配而作出有关任何应用的特定功能或特性的假设。
位数 | 主要服务类 |
---|---|
13 | 有限可发现模式[Ref #1] |
14 | (保留) |
15 | (保留) |
16 | 定位(位置标识) |
17 | 网络(LAN、Ad hoc ...) |
18 | 渲染(打印、扬声器 ...) |
19 | 捕捉(扫描仪、麦克风 ...) |
20 | 对象传输(v-Inbox、v-Folder ...) |
21 | 音频(扬声器、麦克风、耳机服务 ...) |
22 | 电话(无绳电话、调制解调器、耳机服务 ...) |
23 | 信息(WEB 服务器、WAP 服务器) |
表2:主要服务类
[Ref #1:请参阅通用访问配置文件(请参阅相关核心规格中的通用访问配置文件)]
主要设备类段是定义蓝牙设备的最高粒度级别。设备的主要功能用于确定主要类分组。有32种不同的主要类。此主要类字段的分配在表中进行了定义。
12 | 11 | 10 | 9 | 8 | 主要设备类 |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 其他 [Ref #2] |
0 | 0 | 0 | 0 | 1 | 计算机(台式机、笔记本、PDA、organizer ....) |
0 | 0 | 0 | 1 | 0 | 电话(手机、无绳、支付电话、调制解调器 ...) |
0 | 0 | 0 | 1 | 1 | LAN/网络接入点 |
0 | 0 | 1 | 0 | 0 | 音频/视频(耳机、扬声器、立体声、视频显示、VCR..... |
0 | 0 | 1 | 0 | 1 | 配件(鼠标、游戏杆、键盘 .....) |
0 | 0 | 1 | 1 | 0 | 成像(打印、扫描仪、相机、显示 ...) |
0 | 0 | 1 | 1 | 1 | 可穿戴 |
0 | 1 | 0 | 0 | 0 | 玩具 |
0 | 1 | 0 | 0 | 1 | 健康 |
1 | 1 | 1 | 1 | 1 | 未分类:未指定设备代码 |
X | X | X | X | X | 所有其他保留值 |
表3:主要设备类
[Ref #2:用于更多特定的主要设备类代码不适合的位置(但仅在此文档中指定)。没有指定主要类代码的设备在“分类”之前可以使用全为1的代码]
“次要设备类字段”(CoD 中的位7至2)应仅在主要设备类(但独立于服务类字段)环境中解释。因此随着“主要设备类字段”的值变动,位的意义也会改变。当次要设备类字段指示设备类时,则应报告主要设备类,例如也可以用作无绳手持设备的手机应在次要设备类字段中使用“Cellular”。
7 | 6 | 5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 未分类,未指定设备代码 |
0 | 0 | 0 | 0 | 0 | 1 | 台式机工作站 |
0 | 0 | 0 | 0 | 1 | 0 | 服务器类计算机 |
0 | 0 | 0 | 0 | 1 | 1 | 膝上型电脑 |
0 | 0 | 0 | 1 | 0 | 0 | 手持 PC/PDA (clamshell) |
0 | 0 | 0 | 1 | 0 | 1 | 掌上型 PC/PDA |
0 | 0 | 0 | 1 | 1 | 0 | 可穿戴计算机(手表大小) |
0 | 0 | 0 | 1 | 1 | 1 | 平板电脑 |
X | X | X | X | X | X | 所有其他保留值 |
表4:用于“计算机”主要类的子设备类字段
7 | 6 | 5 | 4 | 3 | 2 | 次要设备类字段 - 电话主要类 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 未分类,未指定设备代码 |
0 | 0 | 0 | 0 | 0 | 1 | 手机 |
0 | 0 | 0 | 0 | 1 | 0 | 无绳 |
0 | 0 | 0 | 0 | 1 | 1 | 智能手机 |
0 | 0 | 0 | 1 | 0 | 0 | 有线调制解调或语音网关 |
0 | 0 | 0 | 1 | 0 | 1 | 通用 ISDN 接入 |
X | X | X | X | X | X | 所有其他保留值 |
表5:“电话”主要类的子设备类
7 | 6 | 5 | CoD次要设备类 |
---|---|---|---|
0 | 0 | 0 | 完全可用 |
0 | 0 | 1 | 1%至17%的利用率 |
0 | 1 | 0 | 17%至33%的利用率 |
0 | 1 | 1 | 33%至50%的利用率 |
1 | 0 | 0 | 50%至67%的利用率 |
1 | 0 | 1 | 67%至83%的利用率 |
1 | 1 | 0 | 83%至99%的利用率 |
1 | 1 | 1 | 无可用服务 |
X | X | X | 所有其他保留值 |
表6:LAN/网络接入点负载因素字段
精确的负载公式未标准化。依赖每个 LAN /网络接入点实施来确定报告为利用率百分比的内部条件。对数字仅有的要求是反应方格内通信资源持续增长的利用率。建议:定位多个 LAN/网络接入点的客户应尝试连接到报告最低负载的一个接入点。
4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|
0 | 0 | 0 | 未分类(其他值不适用时使用此值) |
X | X | X | 所有其他保留值 |
表7:LAN/网络接入点的保留子字段
7 | 6 | 5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 未分类,未指定代码 |
0 | 0 | 0 | 0 | 0 | 1 | 可穿戴耳机设备 |
0 | 0 | 0 | 0 | 1 | 0 | 免提设备 |
0 | 0 | 0 | 0 | 1 | 1 | (保留) |
0 | 0 | 0 | 1 | 0 | 0 | 麦克风 |
0 | 0 | 0 | 1 | 0 | 1 | 扬声器 |
0 | 0 | 0 | 1 | 1 | 0 | 耳机 |
0 | 0 | 0 | 1 | 1 | 1 | 便携式音频 |
0 | 0 | 1 | 0 | 0 | 0 | 汽车音频 |
0 | 0 | 1 | 0 | 0 | 1 | 机顶盒 |
0 | 0 | 1 | 0 | 1 | 0 | HiFi 音频设备 |
0 | 0 | 1 | 0 | 1 | 1 | VCR |
0 | 0 | 1 | 1 | 0 | 0 | 摄像机 |
0 | 0 | 1 | 1 | 0 | 1 | 便携式摄像放像一体机 |
0 | 0 | 1 | 1 | 1 | 0 | 视频监控 |
0 | 0 | 1 | 1 | 1 | 1 | 视频显示器和扬声器 |
0 | 1 | 0 | 0 | 0 | 0 | 视频会议 |
0 | 1 | 0 | 0 | 0 | 1 | (保留) |
0 | 1 | 0 | 0 | 1 | 0 | 游戏/玩具 |
X | X | X | X | X | X | 所有其他保留值 |
表8:“音频/视频”主要类的子设备类
7 | 6 | CoD次要设备类位数 |
---|---|---|
0 | 0 | 非键盘/非指向设备 |
0 | 1 | 键盘 |
1 | 0 | 指向设备 |
1 | 1 | 键盘/指向套装设备 |
表9:外围设备主要类键盘/指向设备字段
位6和7独立地指定鼠标、键盘或鼠标套装/键盘设备。这些可能在多功能设备中通过低位组合在一起。
5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 未分类设备 |
0 | 0 | 0 | 1 | 游戏杆 |
0 | 0 | 1 | 0 | 游戏垫 |
0 | 0 | 1 | 1 | 遥控 |
0 | 1 | 0 | 0 | 传感设备 |
0 | 1 | 0 | 1 | 数字转换器表 |
0 | 1 | 1 | 0 | 读卡器(例如 SIM 卡读卡器) |
0 | 1 | 1 | 1 | 数码笔 |
1 | 0 | 0 | 0 | 掌上条形码扫描仪、无线射频识别等 |
1 | 0 | 0 | 1 | 手持手势输入设备(如“手持式操作器(Wand)”) |
X | X | X | X | 所有其他保留值 |
表10:外围设备主要类别的次要类位2至5
7 | 6 | 5 | 4 | CoD次要设备类位数 |
---|---|---|---|---|
X | X | X | 1 | 显示器 |
X | X | 1 | X | 相机 |
X | 1 | X | X | 扫描仪 |
1 | X | X | X | 打印机 |
X | X | X | X | 所有其他保留值 |
表11:成像主要类位4至7
位 4 至 7 独立地指定显示器、相机、扫描仪或打印机。这些可以组合在一个多功能设备中。
3 | 2 | CoD次要设备类位数 |
---|---|---|
0 | 0 | 未分类,默认 |
X | X | 所有其他保留值 |
表12:成像主要类位2至3
位2和3得到保留
次要类段是定义蓝牙设备的粒度最低级别。有64 种不同的次要类。
7 | 6 | 5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 腕表 |
0 | 0 | 0 | 0 | 1 | 0 | 寻呼机 |
0 | 0 | 0 | 0 | 1 | 1 | 夹克 |
0 | 0 | 0 | 1 | 0 | 0 | 头盔 |
0 | 0 | 0 | 1 | 0 | 1 | 眼镜 |
X | X | X | X | X | X | 所有其他保留值 |
7 | 6 | 5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 机器人 |
0 | 0 | 0 | 0 | 1 | 0 | 车辆 |
0 | 0 | 0 | 0 | 1 | 1 | 玩具娃娃/玩具人 |
0 | 0 | 0 | 1 | 0 | 0 | 控制器 |
0 | 0 | 0 | 1 | 0 | 1 | 游戏 |
X | X | X | X | X | X | 所有其他保留值 |
7 | 6 | 5 | 4 | 3 | 2 | CoD次要设备类位数 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 未定义 |
0 | 0 | 0 | 0 | 0 | 1 | 血压监测器 |
0 | 0 | 0 | 0 | 1 | 0 | 温度计 |
0 | 0 | 0 | 0 | 1 | 1 | 体重仪 |
0 | 0 | 0 | 1 | 0 | 0 | 血糖仪 |
0 | 0 | 0 | 1 | 0 | 1 | 脉搏血氧仪 |
0 | 0 | 0 | 1 | 1 | 0 | 心率/脉搏率监测器 |
0 | 0 | 0 | 1 | 1 | 1 | 健康数据显示器 |
0 | 0 | 1 | 0 | 0 | 0 | 计步器 |
0 | 0 | 1 | 0 | 0 | 1 | 人体成分分析仪 |
0 | 0 | 1 | 0 | 1 | 0 | 尖峰吐气流速测量仪 |
0 | 0 | 1 | 0 | 1 | 1 | 药物监测计 |
0 | 0 | 1 | 1 | 0 | 0 | 假膝 |
0 | 0 | 1 | 1 | 0 | 1 | 踝关节假体 |
0 | 0 | 1 | 1 | 1 | 0 | 通用健康管理器 |
0 | 0 | 1 | 1 | 1 | 1 | 个人移动设备 |
X | X | X | X | X | X | 所有其他保留值 |