在设备被发现阶段,设备的Class of device被提供出来。指出此设备是何种类型,以及支持哪些服务。 网络
回想前面HCI章节所说,Inquiry时,会返回找到的设备信息,其中包括BDADDR等。其中dev_class字段就是Class of Device. ui
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; htm
Class of Device parameter包括: 对象
Bluetooth Device Class:主class和次class
Bluetooth Service Type. 游戏
至于Class of Device 哪些位表达什么意思,能够从如下网页找到详细说明: get
https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm io
如下用4个典型例子来讲明: table
dev_class[0] : Octer1. (此项存疑) class
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。代表游戏杆。