验证扫描仪的身份

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
9个帖子/ 0新
最后发表
hamiddhosseini
离线
最后一次露面:6个月,1个星期前
加入:2020-05-12 12:04
验证扫描仪的身份

你好,

是否有一种方法来检测先前配对的设备?

我正在使用这件事scan_request追踪的例子,ble_app_security.而且我能够打印出已发送扫描请求的设备的地址。但是,我想检查这个地址并知道何时配对并断开连接,请发送扫描请求。

是否有办法验证一个设备之前是否已经与之配对?

问候,

哈米德

设备:
PM_DIALOG.
离线
最后一次露面:22小时44分钟前
工作人员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

请查看SDK的ble_app_security示例。该示例使用SPI Flash或EEPROM存储绑定数据。一旦设备已经配对,所有配对/绑定信息都存储在非易失性存储器中,所以你可以在那里检查设备是否已经被配对。

谢谢,PM_DIALOG.

hamiddhosseini
离线
最后一次露面:6个月,1个星期前
加入:2020-05-12 12:04
是的,我可以看到

是的,我可以看到这个例子存储了之前配对的设备的数据。但是,我的问题是,在只有扫描仪地址的情况下,如何在扫描请求中检查这些数据?

PM_DIALOG.
离线
最后一次露面:22小时44分钟前
工作人员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

一旦得到了对端设备的BD地址,就应该检查存储在非易失性存储器中的配对信息。您能告诉我您有什么要求吗?您是否需要阻止对未配对的设备进行扫描?

谢谢,PM_DIALOG.

hamiddhosseini
离线
最后一次露面:6个月,1个星期前
加入:2020-05-12 12:04
你好,

你好,

为了提高服务质量,我们希望在配对用户发送扫描请求时触发一个事件。换句话说,我们不想阻止其他设备的扫描,我们只需要在配对的设备发送扫描请求时得到通知。
下面的代码是我为此目的而使用的,但我不确定这是否是正确的方法。(特别是对于遗留结对)

bool user_check_bonding(struct bd_addr peer_addr, uint8_t addr_type) {const struct app_sec_bond_data_env_tag *pbd = NULL;uint8_t bdaddr_type;//检查对等体的BD地址是否为公共或随机静态bdaddr_type = app_get_address_type(addr_type, peer_addr);if ((bdaddr_type == APP_PUBLIC_ADDR_TYPE) || (bdaddr_type == APP_RANDOM_STATIC_ADDR_TYPE) || (bdaddr_type == APP_ID_ADDR_TYPE)) {if (bdaddr_type == APP_ID_ADDR_TYPE){//根据对等体的BD地址搜索DB pbd = app_easy_security_bdb_search_entry(SEARCH_BY_ID_TYPE, (void *) peer_addr. addr_type);addr, BD_ADDR_LEN);} else{//根据对等体的BD地址搜索DB。pbd = app_easy_security_bdb_search_entry(SEARCH_BY_BDA_TYPE, (void *) peer_addr. db_search_entry);addr, BD_ADDR_LEN);} //如果在DB中找到peer如果(pbd){//存储设备绑定数据到安全环境//接受加密返回true;} //如果在DB中没有找到peer else{//拒绝加密,断开返回false;}} //检查对等体的BD地址是否为Resolvable Private address else if(bdaddr_type == APP_RANDOM_PRIVATE_RESOLV_ADDR_TYPE){//开始BD地址解析过程if(!user_app_easy_security_resolve_bdaddr(peer_addr)) {return false;}返回true;} //检查对等体的BD地址是否为不可解析的私有地址,否则{//拒绝加密,断开返回false; } }

您认为这将涵盖配对的所有情况(我们可能必须更改配对方法和安全级别,因此我希望此功能更通用)?

问候,

哈米德

hamiddhosseini
离线
最后一次露面:6个月,1个星期前
加入:2020-05-12 12:04
现在我可以搜索了

现在我可以搜索设备了,但我有一个新问题。如何识别扫描仪的地址类型?

PM_DIALOG.
离线
最后一次露面:22小时44分钟前
工作人员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

您是否意味着如何拍摄对等设备的BD地址?请参阅app_get_address_type()API,因为它返回BD地址的类型。

谢谢,PM_DIALOG.

hamiddhosseini
离线
最后一次露面:6个月,1个星期前
加入:2020-05-12 12:04
是的,我想知道

是的,我想知道扫描仪的地址类型。如前所述,我们可以在scan_request_track中获得扫描仪的地址。但是,我应该如何确定地址类型。

我实际上尝试过使用这个API,但是我被app_get_address_type()的输入参数卡住了,因为我应该向这个函数传递一个地址类型。

枚举app_addr_types app_get_address_type(uint8_t addr_type, struct bd_addr addr){类型定义枚举app_addr_types (* app_get_address_type_t)(uint8_t addr_type, struct bd_addr addr);if (addr_type == ADDR_RPA_PUBLIC) || (addr_type == ADDR_RPA_RAND) {return APP_ID_ADDR_TYPE;} else {app_get_address_type_t f = (app_get_address_type_t) (app_get_address_type_ROM);返回f (addr_type addr);}}

当我想知道地址时,我应该在这种地址类型中写什么?

PM_DIALOG.
离线
最后一次露面:22小时44分钟前
工作人员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

很抱歉耽搁了。中央大厦使用什么样的屋宇署地址?这视乎屋宇署的中央地址而定。

谢谢,PM_DIALOG.