我尽可能地跟踪连接管理器。它显示一个BOND请求如下:
/ /开始配对键
====> [13:34:39.042] Tx <====
Src任务:0x3f (TASK_APP)
夏令时任务:0xe (TASK_GAPC)
Msg Id: 0x3812 (GAPC_BOND_CMD)
Oob: 0 x0
Io Cap: 0x3
身份验证:0 x1
密钥大小:0x10
iKey Dist: 0x1
rKey Dist: 0x1
sec_req: 0 x0
有效载荷:12 38 0e 00 3f 00 08 00 0b 03 00 01 10 01 01 00
据我所知,负载中的0x0b是GAPC_BOND_CMD命令的命令操作GAPC_BOND。在连接管理器中接收到以下两个响应:
====> [13:34:40.656] Rx <====
Src任务:0x000e (TASK_GAPC)
Dst任务:0x003f (TASK_APP)
Msg Id: 0x3815 (GAPC_BOND_IND)
信息:0 x7
数据。身份验证:0 x30
数据。原因:0 x30
====> [13:34:40.676] Rx <====
Src任务:0x000e (TASK_GAPC)
Dst任务:0x003f (TASK_APP)
Msg Id: 0x3813 (GAPC_BOND_REQ_IND)
要求:0 x7
auth_req: 0 x10
key_size: 0 x10
tk_type: 0 x10
有效载荷:13 38 3f 00 0e 00 02 00 07 10
第一个是显示LTK,至少如果你相信信息值7 = GAPC_LTK_EXCH。
就我所知,在我的债券申请中我做了完全相同的事情但我得到了一个非常不同的结果;而不是一个GAPC_LTK_EXCH,我得到一个GAPC_IRK_EXCH(而且我没有得到一个GAPC_BOND_REQ_IND,在所有)!
这是我的请求:
struct gapc_bond_cmd * bond_cmd = KE_MSG_ALLOC(gapc_bond_cmd,
KE_BUILD_ID (TASK_GAPC,设备- > conidx), TASK_APP,
gapc_bond_cmd);
arch_printf("\r\n Starting Pairing and Bonding at time %u", lld_evt_time_get());
bond_cmd - >操作= GAPC_BOND;//这是0x0b
bond_cmd - >配对。oob = GAP_OOB_AUTH_DATA_NOT_PRESENT;//这是0x00
bond_cmd - >配对。iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT;//这是0x03
bond_cmd - >配对。auth = GAP_AUTH_REQ_NO_MITM_BOND;//这是0x01
bond_cmd - >配对。key_size = 16;//这是0x10
bond_cmd - >配对。ikey_dist = GAP_KDIST_IDKEY;//加密密钥在分配0x01
bond_cmd - >配对。rkey_dist = GAP_KDIST_IDKEY;//不确定这是什么,但也是0x01
bond_cmd - >配对。sec_req = GAP_NO_SEC;//最小设备安全要求为0x00
ke_msg_send (bond_cmd);
其中GAP_KDIST_IDKEY = 1。就我所知,这个请求和连接管理器中显示的请求没有区别(下面重复)
Src任务:0x3f (TASK_APP)
夏令时任务:0xe (TASK_GAPC)
Msg Id: 0x3812 (GAPC_BOND_CMD)
Oob: 0 x0
Io Cap: 0x3
身份验证:0 x1
密钥大小:0x10
iKey Dist: 0x1
rKey Dist: 0x1
sec_req: 0 x0
有效载荷:12 38 0e 00 3f 00 08 00 0b 03 00 01 10 01 01 00
解决了我自己的问题。不是我,是别人的眼睛。GAP_KDIST_IDKEY应该是GAP_KDIST_ENCKEY。有多少天我看着它却没看到?
嗨,大脑,
你能告诉我这个案子你用的是什么源代码吗?以及如何使用Connection Manager来获取这些索引。真的,我正在工作的DSPS源代码,但我不知道如何使用连接管理器得到索引的绑定。
感谢和问候,
蓝色的