第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

(1)Read LMP Handle Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个命令用来读取与Connection_Handle(SCO或者eSCO)相关联的LMP Handle

参数说明:

Connection_Handle(2 Octet):必须是SCO或者eSCO连接

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Connection_Handle(2 Octet):与参数中的Connection_Handle应该是一样的

LMP_Handle(1 Octet):与Connection_Handle相关联的LMP handle

Reserved(4 Octet):必须是0

举例说明:(暂时没有)

(2)Read Transmit Power Level Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个命令用来读取Connection_Handle(ACL连接)表示的连接的Transmit_Power_Level的值

参数说明:

Connection_Handle(2 Octet):表示读取哪个ACL连接的Transmit_Power_Level值

Type(1 Octet):0x00表示读取当前的Transmit Power Level,0x01表示读取最大的Transmit Power Level.

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Connection_Handle(2 Octet):表示读取哪个ACL连接的Transmit_Power_Level值

Transmit_Power_Level(1 Octet):表示读到的Transmit Power Level值,取值范围-30至20

举例说明:(暂时没有)

(3)Read Link Quality Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个command用来读取Handle(ACL)连接的Link_Quality值(0-255),这个值表示两个BR/EDR Controllers之间的链路质量,值越大质量越好

参数说明:

Handle(2 Octet):表示一个ACL连接

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Handle(2 Octet):表示一个ACL连接

Link_Quality(1 Octet):表示读到的Link_Quality值,取值范围0至255

举例说明:(暂时没有)

(4)Read RSSI Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

对于BR/EDR controller,这个命令用来读取Handle表示的ACL连接的RSSI(Received Signal Strength Indication)的值,RSSI的值其实是和Golden Receive Power Range进行对比的(RSSI>0表示比Golden Receive Power Range的上限高多少dB,RSSI < 0表示比Golden Receive Power Range的下线低多少dB,RSSI=0表示在Golden Receive Power Range的范围内),

注意:RSSI的值由蓝牙硬件决定的。

Golden Receive Power Range的下限是高于接收器灵敏度-56dBm到6 dB之间,上限比下限高20dB(精确度+/- 6 dB)(The lower threshold level corresponds to a received power between -56 dBm and 6 dB above the actual sensitivity of the receiver. The upper threshold level is 20 dB above the lower threshold level to an accuracy of +/- 6 dB不知道这么翻译对不对)

对于LE传输,这个Handle表示一个LE连接,RSSI表示的是就是接收信号强度(精度± 6 dB),返回127表示无法读取

参数说明:

Handle(2 Octet):表示一个Connection_Handle

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Handle(2 Octet):表示一个Connection_Handle

RSSI(1 Octet):对于BR/EDR范围是-128至127dB,对于LE范围是-127至20dBm(无法读取返回127)

举例说明:(暂时没有)

(5)Read Clock Offset Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个命令用来获取与远端设备的时钟偏移,这个时钟偏移可以加速本地设备与远端设备建立连接时的paging程序,这个Connection_Handle必须是一个ACL连接

参数说明:

Connection_Handle(2 Octet):表示一个ACL连接

注意:当controller接收到这个命令后,会返回一个command status,如果本地设备是master并且LM已经通过LMP消息获取到了时钟偏移,会返回一个Read Clock Offset Complete event

举例说明:(暂时没有)

(6)Read Clock Offset Complete Event

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个event表示Link Manager已经根据Connection_Handle(ACL连接)获取到了时钟偏移信息

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Connection_Handle(2 Octet):表示一个ACL连接

Clock_Offset(2 Octet):表示时钟偏移,Bits 14-0分别对应CLKNslave-CLK的Bits 16-2

CLKNslave-CLK我的理解是:slave的时钟-本地时钟

举例说明:(暂时没有)

(7)Read Clock Command

第一部分:HCI协议(八)具体的HCI command和event(15、LINK INFORMATION一般不用)

这个命令用来从BR/EDR Controller获取蓝牙时钟(这是个估值)

Which_Clock=0,用来读取本地的蓝牙时钟,这时候Connection_Handle会被忽略,所以可以是无效的值,返回的Clock就是本地蓝牙时钟,同时Accuracy=0

Which_Clock=1,这时Connection_Handle是一个有效的ACL连接,如果本地设备是slave,则读取的是远端master的时钟,如果本地设备是master,则读取的是本地设备的时钟

注意:蓝牙时钟最小精确度是250ppm,一天大约是22s

参数说明:

Connection_Handle(2 Octet):表示获取哪个连接的蓝牙时钟

Which_Clock(1 Octet):0x00表示本地时钟(Connection_Handle可以是无效值,会被忽略),0x00表示网络时钟(Connection_Handle是有效值)

返回参数说明:

Status(1 Octet):0x00表示成功,其他表示失败

Connection_Handle(2 Octet):表示获取哪个连接的蓝牙时钟

Clock(4 Octet):表示蓝牙时钟

Accuracy(2 Octet):表示时钟误差,0xFFFF表示不知道时钟误差,时钟误差Accuracy = ±这个值 * 0.3125 msec (1 Bluetooth Clock)

举例说明:(暂时没有)

相关文章:

  • 2021-04-04
  • 2021-11-20
  • 2021-06-07
  • 2022-01-04
  • 2021-09-29
  • 2021-04-21
  • 2021-10-11
  • 2021-04-02
猜你喜欢
  • 2021-09-19
  • 2021-07-16
  • 2021-10-07
  • 2021-04-16
  • 2021-08-18
  • 2021-10-12
  • 2021-11-25
相关资源
相似解决方案