(5)Create Connection Cancel Command
这个命令用来取消一个正在进行的连接(注意:这个连接是本地BR/EDR Controller使用Create_Connection命令发起的)
如果基带层的连接已经建立,但是本地BR/EDR Controller还没有发送Connection Complete event给host,这时候本地设备会断开连接同时发送Command Complete event(status是“Success”)给host
如果连接已经建立,本地BR/EDR Controller也已经发送了Connection Complete event,然后本地BR/EDR Controller会发送Command Complete event(status是0x0B即ACL Connection already exists)给host
如果Create_Connection_Cancel命令中的BD_ADDR跟之前Create Connection 中的BD_ADDR不一样,那么本地BR/EDR Controller会发送Command Complete event(status是0x02即Unknown Connection Identifier)
(0x02).
发送Create_Connection_Cancel命令以后,本地BR/EDR Controller还是会发送Connection Complete event,如果连接被取消,那么Connection Complete event重的status为0x02(Unknown Connection Identifier)
If the cancellation was successful, the Connection Complete event
will be generated with the error code Unknown Connection Identifier (0x02).
参数说明:
BD_ADDR(6 Octet):Create_Connection命令中设置的设备地址
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF error code
BD_ADDR(6 Octet):Create_Connection命令中设置的设备地址
举例说明:(暂时没有)
(6)Connection Complete Event
Connection Complete event可以用来通知host连接已经建立,也会通知host连接失败(status表示连接失败的原因)
参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF error code
Connection_Handle(2 Octet):取值范围0x0000-0x0EFF,只有前12bit有效,表示操作的是哪个连接
BD_ADDR(6 Octet):表示远端设备地址
Link_Type(1 Octet):表示连接的类型0x00表示SCO连接,0x01表示ACL连接
Encryption_Enabled(1 Octet):0x00表示Link level encryption disabled,0x01表示Link level encryption enabled.
举例说明:
0x04:表示HCI Event Packet
0x03:表示Connection Complete Event
0x0b:表示Parameter_Total_Length即11个byte
0x00:表示status是success
0x0003:表示Connection_Handle=0x0003
0xeb 0x01 0xce 0x55 0x36 0x34:表示远端设备地址BD_ADDR,即远端设备地址是0x34:0x36:0x55:0xce:0x01:0xeb
0x01:表示Link_Type=0x01即ACL连接
0x00:表示Encryption_Enabled=0x00即Link level encryption disabled.
(7)Disconnect Command
Disconnection command用来断开一个已经存在的连接,Connection_Handle表示断开哪个连接,Reason表示断开连接的原因,远端Controller将会接收到这个Reason参数(在远端设备的Disconnection Complete event里面),注意SCO/eSCO连接应该在ACL连接之前断开
参数说明:
Connection_Handle(2 Octet):取值范围0x0000-0x0EFF,只有前12bit有效,表示操作的是哪个连接
Reason(1 Octet):表示断开连接的原因,取值有这些:
Authentication Failure error code (0x05)
Other End Terminated Connection error codes (0x13-0x15)
Unsupported Remote Feature error code(0x1A)
Pairing with Unit Key Not Supported error code (0x29)
Unacceptable Connection Parameters error code (0x3B)
举例说明:
Command如下:
0x01:表示HCI Command Packet
0x0406:表示是HCI_Disconnect command
指令的OGF是0x01即0000 01
OCF是0x0006即00 0000 0110
所以整个opcode是0000 0100 0000 0110即0x0406
0x03:表示Parameter_Total_Length=3,即参数总长度是3个byte
0x0003:表示Connection_Handle=0x0003
0x13:表示连接断开的原因,0x13即Remote User Terminated Connection
对应的Event:
Command stauts event:
0x04:表示HCI Event Packet
0x0f:表示这个event是command status event
0x04:表示Parameter_Total_Length即4个byte
0x00:表示status是success
0x01:表示Num_HCI_Command_Packets
0x0406:表示是HCI_Disconnect command
Disconnection Complete event
0x04:表示HCI Event Packet
0x05:表示这个event是Disconnection Complete event
0x04:表示Parameter_Total_Length即4个byte
0x00:表示status是success
0x0003:表示Connection_Handle=0x0003
0x16:表示是连接断开的原因,0x16表示Connection Terminated By Local Host
(8)Disconnection Complete Event
当连接断开的时候,本地Controller会发送Disconnection Complete event,注意当物理连接失败的时候也会返回这个event
参数说明:
Status(1 Octet):0x00表示连接断开成功;0x01-0xFF表示连接断开失败
Connection_Handle(2 Octet):取值范围0x0000-0x0EFF,只有前12bit有效,表示具体是哪个连接断开了
Reason(1 Octet):表示断开连接的原因,注意,如果status表示连接断开失败,那么这个参数需要忽略
举例说明:
Disconnection Complete event
0x04:表示HCI Event Packet
0x05:表示这个event是Disconnection Complete event
0x04:表示Parameter_Total_Length即4个byte
0x00:表示status是success
0x0003:表示Connection_Handle=0x0003
0x16:表示是连接断开的原因,0x16表示Connection Terminated By Local Host
(9)Read Page Timeout Command
这个命令用来获取Page_Timeout得值,Page_Timeout表示本地发起连接请求时,本地Link Manager等待远端设备page回复的最大时间,如果超过这个时间,远端设备没有page响应,则此次连接请求就失败了
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
Page_Timeout(2 Octet):取值范围0x0001 to 0xFFFF,默认值是0x2000,具体超时时间是N * 0.625 msec
举例说明:(暂时没有)
(10)Write Page Timeout Command
这个命令用来配置Page_Timeout
参数说明:
Page_Timeout(2 Octet):取值范围0x0001 to 0xFFFF,默认值是0x2000,具体超时时间是N * 0.625 msec
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
举例说明:
Command如下:
0x01:表示HCI Command Packet
0x0C18:表示是HCI_Write_Page_Timeout command
指令的OGF是0x03即0000 11
OCF是0x0018即00 0001 1000
所以整个opcode是0000 1100 0001 1000即0x0C18
0x02:表示Parameter_Total_Length=2,即参数总长度是2个byte
0x2000:表示Page_Timeout=0x2000,即0.625 * 8192=5120ms
对应的Event(Command Complete event):
0x04:表示HCI Event Packet
0x0e:表示这个event是command complete event
0x04:表示Parameter_Total_Length即4个byte
0x01:表示Num_HCI_Command_Packets
0x0C18:表示是HCI_Write_Page_Timeout command
0x00:表示status是success
(11)Read Page Scan Activity Command
这个命令用来读取Page_Scan_Interval和Page_Scan_Window的值,Page_Scan_Interval改变,可能改变Page_Scan_Repetition_Mode
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
Page_Scan_Interval(2 Octet):表示两次page scan的时间间隔,即从上一次page开始到下一次page scan开始,取值范围是0x0012 – 0x1000(默认值是0x0800),即Page _Scan_Interval * 0.625ms
Page_Scan_Window(2 Octet):表示Page scan持续的时间,取值范围是0x0011 - 0x1000(默认值是0x0012),即Page _Scan_Window * 0.625ms,Page_Scan_Window<= Page_Scan_Interval
举例说明:(暂时没有)
(12)Write Page Scan Activity Command
这个命令用来配置Page_Scan_Interval和Page_Scan_Window,Page_Scan_Interval改变,可能改变Page_Scan_Repetition_Mode
参数说明:
Page_Scan_Interval(2 Octet):表示两次page scan的时间间隔,即从上一次page开始到下一次page scan开始,取值范围是0x0012 – 0x1000(默认值是0x0800),即Page _Scan_Interval * 0.625ms
Page_Scan_Window(2 Octet):表示Page scan持续的时间,取值范围是0x0011 - 0x1000(默认值是0x0012),即Page _Scan_Window * 0.625ms,Page_Scan_Window<= Page_Scan_Interval
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
举例说明:(暂时没有)
(13)Page Scan Repetition Mode Change Event
这个event表示远端BR/EDR Controller已经成功改变了自己的Page_Scan_Repetition_Mode (SR)
参数说明:
BD_ADDR(6 Octet):发送Connection Request Event的设备地址
Page_Scan_Repetition_Mode(1 Octet):0x00表示R0,0x01表示R1,0x02表示R2
举例说明:(暂时没有)
(13)Read Page Scan Type Command
这个命令用来获取本地BR/EDR Controller的Page Scan Type
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
Page_Scan_Type(1 Octet):0x00表示标准Scan (默认使用这种模式),0x01表示隔行Scan
举例说明:(暂时没有)
(14)Write Page Scan Type Command
这个命令用来配置本地BR/EDR Controller的Page Scan Type
参数说明:
Page_Scan_Type(1 Octet):0x00表示标准Scan (默认使用这种模式),0x01表示隔行Scan
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
举例说明:
Command如下:
0x01:表示HCI Command Packet
0x0C47:表示是HCI_Write_Page_Scan_Type command
指令的OGF是0x03即0000 11
OCF是0x0047即00 0100 0111
所以整个opcode是0000 1100 0100 0111即0x0C47
0x01:表示Parameter_Total_Length=1,即参数总长度是1个byte
0x01:表示Page_Scan_Type=0x01,即隔行scan
对应的Event(Command Complete event):
0x04:表示HCI Event Packet
0x0e:表示这个event是command complete event
0x04:表示Parameter_Total_Length即4个byte
0x01:表示Num_HCI_Command_Packets
0x0C47:表示是HCI_Write_Page_Scan_Type command
0x00:表示status是success
(15)Read Connection Accept Timeout Command
这个命令用来获取Connection_Accept_Timeout的值
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
Conn_Accept_Timeout(2 Octet):这个参数表示从本地BR/EDR Controller发送Connection Request event开始到自动拒绝连接请求的时间,取值范围是0x0001到0xB540(默认值是0x1F40),对应的时间是Conn_Accept_Timeout * 0.625 ms
举例说明:(暂时没有)
(16)Write Connection Accept Timeout Command
这个命令用来配置Connection_Accept_Timeout的值
参数说明:
Conn_Accept_Timeout(2 Octet):这个参数表示从本地BR/EDR Controller发送Connection Request event开始到自动拒绝连接请求的时间,取值范围是0x0001到0xB540(默认值是0x1F40),对应的时间是Conn_Accept_Timeout * 0.625 ms
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
举例说明:(暂时没有)
(17)Read Hold Mode Activity Command
这个命令用来获取Hold_Mode_Activity的值
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
Hold_Mode_Activity(1 Octet):这个参数用来设置在BR/EDR Controller进入hold模式时需要暂停哪些活动(Periodic Inquiry, Inquiry Scan和Page Scan),可以使用位与的方式设置多个活动,当所有连接都进入Hold Mode时,Hold_Mode_Activity才有效,0x00表示保持当前的Power State,0x01表示暂停Page Scan,0x02表示暂停Inquiry Scan,0x04表示暂停Periodic Inquiries
举例说明:(暂时没有)
(18)Write Hold Mode Activity Command
这个命令用来配置Hold_Mode_Activity的值
参数说明:
Hold_Mode_Activity(1 Octet):这个参数用来设置在BR/EDR Controller进入hold模式时需要暂停哪些活动(Periodic Inquiry, Inquiry Scan和Page Scan),可以使用位与的方式设置多个活动,当所有连接都进入Hold Mode时,Hold_Mode_Activity才有效,0x00表示保持当前的Power State,0x01表示暂停Page Scan,0x02表示暂停Inquiry Scan,0x04表示暂停Periodic Inquiries
返回参数说明:
Status(1 Octet):0x00表示success;0x01-0xFF表示失败
举例说明:(暂时没有)