您的位置:首页 > 运维架构 > Linux

实战Linux Bluetooth编程 Class of Device(转)

2013-01-23 14:53 483 查看
在设备被发现阶段,设备的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: