以master角色执行Bonding功能

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
dhirajp15
离线
最后看到:1年11个月前
加入:2016-06-08 15:26
以master角色执行Bonding功能

嗨,对话框中,
我有两个由da14583组成的设备BLE central和外设,它们在连接上交换数据。我想实现bonding功能,所以我按照tutorial_5 ble_security_sample .pdf中的建议在外设侧做了更改。但是在中央方面,我找不到实现绑定的过程。我也通过了sps_host示例,但没有实现。通过RW-BLE-GAP-IS.pdf,我了解到绑定过程需要使用GAPC_BOND_CMD命令从主端启动。我已经通过GAPC_SECURITY_CMD请求外接安全,并在master上成功接收到GAPC_SECURITY_IND指示。我需要帮助编写一个过程,在安全请求时从master启动bonding功能。
谢谢,

问候,
Dhiraj

设备:
MT_dialog
离线
最后看到:1周6天前
工作人员
加入:2015-06-08 34
嗨dhirajp15,

嗨dhirajp15,

annihilate没有例子,将指导您通过一个中央的安全程序,但随着文档表明你需要发出GAPC_BOND_CMD为了启动程序,这样你可以尽快发送GAPC_BOND_CMD GAPC_SECURITY_IND被触发的处理程序。所以你可以创建一个回调函数来发送GAPC_BOND_CMD,如下所示:

struct gapc_bond_cmd *味精;
msg = (struct gapc_bond_cmd *) KE_MSG_ALLOC(gapc_bond_cmd, TASK_GAPC,TASK_APP, gapc_bond_cmd);

然后在.app_on_security_req_ind钩子中附加回调函数。

Thansk MT_dialog

dhirajp15
离线
最后看到:1年11个月前
加入:2016-06-08 15:26
嗨MT_Dialog,

嗨MT_Dialog,
我使用Justworks安全级别绑定以下配置:
Static const struct security_configuration user_security_configuration = {
.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT,
.key_size = KEY_LEN,
.iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT,
.auth = GAP_AUTH_REQ_NO_MITM_BOND,
.sec_req = GAP_SEC1_NOAUTH_PAIR_ENC,
.ikey_dist = GAP_KDIST_SIGNKEY,
.rkey_dist = GAP_KDIST_ENCKEY,
.tk = {
。key = {0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0},
},
.csrk = {
xab。key = {0, 0 xab 0 x45 0 x55 0 x23 0 x01, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0, 0 x0},
},
};
我实现了GAPC_BOND_CMD在user_catch_rest处理程序cb上的GAPC_SECURITY_IND建议。因此外设获得配对请求并提供配对响应。在此之后,我在中心设备上获得app_on_pairing_succsucceeded回调。我还通过msg_param->info==GAPC_LTK_EXCH接收GAPC_BOND_IND,这里我发起GAPC_ENCRYPT_CMD发送之前接收到的长期密钥。进一步,我收到app_on_encryption_ind回调,后面跟着GAPC_CMP_EVT, msg_param->operation==GAPC_ENCRYPT和msg_param->status =00,这表示加密已经完成,没有错误。这是在中心设备上实现绑定的正确方法吗?还有什么命令我没听到吗?

谢谢,
问候,
dhiraj

MT_dialog
离线
最后看到:1周6天前
工作人员
加入:2015-06-08 34
嗨dhirajp15,

嗨dhirajp15,

如果我正确理解你描述的顺序是什么,与GAPC_LTK_EXCH GAPC_BOND_IND到来时,这意味着设备获得LTK键,当你收到,关键你应该存储它,不启动GAPC_ENCRYPT_CMD(什么样的钥匙是分布在空气取决于应用程序)。GAPC_ENCRYPT命令是为了加密链接键过程结束后,和配对成功,如果你想加密与LTK而不是TK(这是当前的加密链接),然后你可以发送一个加密命令。例如,可以在app_on_pairing_succeeded中发送加密命令。

由于MT_dialog

dhirajp15
离线
最后看到:1年11个月前
加入:2016-06-08 15:26
嗨MT_dialog,

嗨MT_dialog,
谢谢你的帮助。我按照建议做了修改,成功地完成了粘合过程。如果我不想重复配对过程(假设我有绑定数据存在- LTK,Ediv,randnb), RW_BLE_GAP_IS.pdf建议:
当收到安全请求指示时,链路主人可以决定启动配对或加密
根据其债券数据”。- 95页。
所以在主端如果我收到GAPC_SECURITY_IND,我应该保持一个检查是否发出GAPC_BOND_CMD或GAPC_ENCRYPT_CMD(先前绑定)??
谢谢,
问候,
Dhiraj

MT_dialog
离线
最后看到:1周6天前
工作人员
加入:2015-06-08 34
嗨dhirajp15,

嗨dhirajp15,

由于绑定完成,然后设备断开,这意味着两个设备都绑定了,并保留了它们的绑定数据,所以不需要再次执行绑定过程来重新连接安全。所以当设备绑定时,中央应该发出加密命令来加密链路,所以主服务器应该检查它是否绑定,以便发出绑定命令或加密命令。

由于MT_dialog

dhirajp15
离线
最后看到:1年11个月前
加入:2016-06-08 15:26
嗨MT_Dialog,

嗨MT_Dialog,
谢谢你的帮助!
问候,
Dhiraj