(1)Master Link Key Command(没见用过)
使用这个命令可以强制使网络中的master设备使用自己的临时link key或者非永久性的link key,临时link key是用来加密广播消息的,非永久性link key是两个设备点对点进行数据交互时用来加密的。
如果网络中的所有slave都支持AES-CCM加密,但是Key_Flag设置的是使用临时key,此时会返回error:Command Disallowed (0x0C);
注意:如果网络中有至少一个设备不支持AES-CCM加密,Controller和Host都支持Secure Connections的设备是收不到加密广播消息的
如果网络中所有设备都支持AES-CCM加密,此时广播数据包是不加密的,所有的设备都可以接收到
参数说明:
Key_Flag(1 Octet):0x00表示使用非永久性link key,0x01表示使用临时link key
举例说明:(暂时没有)
(2)Master Link Key Complete Event(没见用过)
这个event表示Master的Link Key已经发生了改变
参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
Connection_Handle(2 Octet):表示ACL连接
Key_Flag(1 Octet):0x00表示使用非永久性link key,0x01表示使用临时link key
举例说明:(暂时没有)
(3)Read PIN Type Command
这个命令可以获取PIN_Type(可变的PIN code或者固定的PIN code)的配置
参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
PIN_Type(1 Octet):0x00表示可变的PIN code,0x01表示固定的PIN code
举例说明:(暂时没有)
(4)Write PIN Type Command
这个命令可以配置PIN Type
参数说明:
PIN_Type(1 Octet):0x00表示可变的PIN code,0x01表示固定的PIN code
返回参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
举例说明:(暂时没有)
(5)Read Stored Link Key Command
这个命令可以获取存储在BR/EDR Controller里面的link key
参数说明:
BD_ADDR(6 Octet):表示要获取那个远端设备对应的link key,如果Read_All_Flag=0x01时,表示获取所有的link key,此时这个地址可以忽略
Read_All_Flag(1 Octet):0x00表示获取BD_ADDR对应的link key,0x01表示获取所有的link key
返回参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
Max_Num_Keys(2 Octet):BR/EDR Controller里面存储的link key的总数
Num_Keys_Read(2 Octet):从BR/EDR Controller里面获取的link key的数量
注意:这个命令发出后,会返回>=0个Return Link Keys event,之后会返回Command Complete event
举例说明:(暂时没有)
(6)Return Link Keys Event(不懂为什么返回的link key是全0)
BR/EDR Controller收到Read_Stored_Link_Key command以后,如果BR/EDR Controller内有存储的link key,则BR/EDR Controller会使用Return Link Keys event向Host发送event中包含link key的数量以及BD_ADDR,但是link key不会返回具体的link key值,而是全0
注意:Read_Stored_Link_Key command以后,BR/EDR Controller可能会发送0个或者多个Return Link Keys event
参数说明:
Num_Keys(1 Octet):表示event中包含link key的数量
BD_ADDR[i](6 * Num_Keys Octet):表示存储的link key对应的远端设备地址
Link_Key[i](16 * Num_Keys Octet):全0
举例说明:(暂时没有)
(7)Write Stored Link Key Command
这个命令可以将1个或者多个link key存入BR/EDR Controller(存储数量是有限的,空间不足则不会存储,存储的顺序按照link key数组的顺序,数组开始的link key先存储)
参数说明:
参数说明:
Num_Keys_To_Write(1 Octet):表示想要存储的link key的数量
BD_ADDR[i](6 * Num_Keys Octet):表示存储的link key对应的远端设备地址
Link_Key[i](16 * Num_Keys Octet):表示与BD_ADDR相关的具体的link key值
返回参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
Num_Keys_Written(1 Octet):表示成功存储的link key的数量
注意:当设置为Secure Connections Only Mode时,不能存储link key
举例说明:(暂时没有)
(8)Delete Stored Link Key Command
这个命令可以删除存储在BR/EDR Controller里面的一个或者多个link key
参数说明:
BD_ADDR(6 Octet):表示删除与BD_ADDR相关的link key
Delete_All_Flag(1 Octet): 0x00表示只删除与BD_ADDR相关的link key,0x01表示删除所有的link key
返回参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
Num_Keys_Deleted(1 Octet):表示删除的link key的数量
举例说明:(暂时没有)
(9)Create New Unit Key Command
这个命令会产生一个新的unit key,所有新的连接会使用这个新的unit key,但是在之前已经建立的连接中还是会使用旧的unit key
返回参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
举例说明:(暂时没有)
(10)Refresh Encryption Key Command
Host可以使用这个命令来刷新encryption key,这个command使用时会暂停并重新开始加密
参数说明:
Connection_Handle(2 Octet):表示ACL连接
举例说明:(暂时没有)
(11)Encryption Key Refresh Complete Event
这个event表示Connection_Handle表示的ACL连接上Encryption Key已经刷新
注意:如果是伴随着change connection link key程序刷新link key,则这个event应该在Change Connection Link Key Complete event.之前;
如果是伴随着role switch程序刷新link key,则这个event应该在Role Change event之前
参数说明:
Status(1 Octet):0x00表示成功,其他值表示失败
Connection_Handle(2 Octet):表示ACL连接
举例说明:(暂时没有)