第一部分:HCI协议(八)具体的HCI command和event(4、CONTROLLER INFORMATION)

4、CONTROLLER INFORMATION

这里只记录常用的几个command和event(LE的先不记录)

(1)Read Local Version Information Command

这个command用来获取本地Controller的版本信息

返回参数说明(Command Complete event):

Status(1 Octet):0x00表示success;0x01-0xFF error code

HCI Version(1 Octet):定义HCI层的版本信息

HCI Revision(2 Octet):具体根据实现来定

LMP Version(1 Octet):定义LMP或者PAL层的版本信息

Manufacturer_Name(2 Octet):指定生产商

LMP Subversion(2 Octet):具体根据实现来定

举例说明:

Command如下:

0x01:表示HCI Command Packet

0x1001:表示是HCI_Read_Local_Version_Information command

指令的OGF是0x04即0001 00

OCF是0x0001即00 0000 0001

所以整个opcode是0001 0000 0000 0001即0x1001

0x00:表示Parameter_Total_Length=0,即没有参数

对应的Event(Command Complete event):

0x04:表示HCI Event Packet

0x0e:表示这个event是command complete event

0x0c:表示Parameter_Total_Length即12个byte

0x01:表示Num_HCI_Command_Packets

0x1001:表示是HCI_Read_Local_Version_Information command

0x00:表示status是success

0x07:HCI Versio是core 4.1,具体参考https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface/

0x0000:HCI Revision=0x0000

0x07:LMP Version是core 4.1,具体参考https://www.bluetooth.com/specifications/assigned-numbers/link-manager/

0x001d:Manufacturer_Name是Qualcomm;具体参考 https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/

0x07d3:LMP Subversion=0x07d3

(2)Read Local Supported Commands Command

这个command用来获取本地Controller支持的HCI commands supported;

返回参数说明:

Status(1 Octet):0x00表示success;0x01-0xFF error code

Supported_Commands(64 Octet):每个bit代表一个command,0表示不支持,1表示支持

具体command和相应bit位定义如下:

 

举例说明:

Command如下:

0x01:表示HCI Command Packet

0x1002:表示是HCI_Read_Local_Supported_Commands command

指令的OGF是0x04即0001 00

OCF是0x0002即00 0000 0010

所以整个opcode是0001 0000 0000 0010即0x1002

0x00:表示Parameter_Total_Length=0,即没有参数

对应的Event(Command Complete event):

0x04:表示HCI Event Packet

0x0e:表示这个event是command complete event

0x44:表示Parameter_Total_Length即68个byte

0x01:表示Num_HCI_Command_Packets

0x1002:表示是HCI_Read_Local_Supported_Commandscommand

0x00:表示status是success

后面的64byte表示Supported_Commands

(3)Read Local Supported Features Command

这个command用来获取本地BR/EDR Controller支持的LMP features

返回参数说明:

Status(1 Octet):0x00表示success;0x01-0xFF error code

LMP_Features(8 Octet):每个bit代表一个LMP features,0表示不支持,1表示支持

注意:这个命令不经常使用,而是直接使用HCI_Read_Local_Extended_Features,这个指令中参数Page number设置成0和HCI_Read_Local_Supported_Features的效果是一样的。具体的LMP_Features在下一个指令列出。

(4)Read Local Extended Features Command

这个command用来获取具体Page number里面的extended LMP features.

参数说明:

Page number(1 Octet):用来设置获取某一页的LMP features/extended LMP features;Page number为0时,获取的就是Read Local Supported Features command返回的LMP features

返回参数说明:

Status(1 Octet):0x00表示success;0x01-0xFF error code

Page number(1 Octet):表示这是返回的第Page number页的LMP features/extended LMP features

Maximum Page Number(1 Octet):最多有多少页

Extended_LMP_Features(8 Octet): 每个bit代表一个LMP features/extended LMP features,0表示不支持,1表示支持

具体LMP features(page 0)和相应bit位定义如下:

具体extended LMP features(page 1)和相应bit位定义如下:

具体extended LMP features(page 2)和相应bit位定义如下:

举例说明:

Command如下:

0x01:表示HCI Command Packet

0x1004:表示是HCI_Read_Local_Extended_Features command

指令的OGF是0x04即0001 00

OCF是0x0004即00 0000 0100

所以整个opcode是0001 0000 0000 0100即0x1004

0x01:表示Parameter_Total_Length=1,即有1个byte的参数

0x00:表示Page number=0

对应的Event(Command Complete event):

0x04:表示HCI Event Packet

0x0e:表示这个event是command complete event

0x0e:表示Parameter_Total_Length即14个byte

0x01:表示Num_HCI_Command_Packets

0x1004:表示是HCI_Read_Local_Extended_Features command

0x00:表示status是success

0x00:表示page number=0

0x02:表示Maximum Page Number=2

0xff 0xfe 0x8f 0xfe 0xd8 0x3f 0x5b 0x87:表示LMP features

下面是问询第1页和第二页的command和对应command complete event

第1页

第2页

(5)Read BD_ADDR Command

如果是BR/EDR Controller,这个command用来获取Bluetooth Controlleraddress(BD_ADDR)

如果是LE Controller,这个command用来获取Public Device Address,如果 Controller没有Public Device Address,将返回0x000000000000

如果是BR/EDR/LE Controller, Public Device Address和BD_ADDR是同一个值

返回参数说明:

Status(1 Octet):0x00表示success;0x01-0xFF error code

BD_ADDR(6 Octet):Controller的地址

举例说明:

Command如下:

0x01:表示HCI Command Packet

0x1009:表示是HCI_Read_BD_ADDR command

指令的OGF是0x04即0001 00

OCF是0x0009即00 0000 1001

所以整个opcode是0001 0000 0000 1001即0x1009

0x00:表示Parameter_Total_Length=0,即没有参数

对应的Event(Command Complete event):

0x04:表示HCI Event Packet

0x0e:表示这个event是command complete event

0x0a:表示Parameter_Total_Length即10个byte

0x01:表示Num_HCI_Command_Packets

0x1009:表示是HCI_Read_BD_ADDR command

0x00:表示status是success

0x5d 0x7e 0x03 0x44 0x04 0x44:表示controller的蓝牙地址(注意:蓝牙地址应该是反过来的即0x44:0x04:0x44:0x03:0x7e :0x5d)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值