你好呀,
有没有办法检测先前配对的设备?
我正在使用这件事scan_request跟踪器示例和ble_app_security.而且我能够打印出已发送扫描请求的设备的地址。但是,我想检查这个地址并知道何时配对并断开连接,请发送扫描请求。
有没有办法验证设备是否先前是否配对?
问候,
汉米德
嗨哈米德,
请检查SDK的BLE_APP_SECURY示例。该示例使用SPI闪存或EEPROM来存储绑定数据。一旦设备配对,所有配对/绑定信息都存储在非易失性存储器中,因此如果设备先前已配对,则可以检查此处。
谢谢,PM_DIALOG.
是的,我可以看到该示例存储先前配对设备的数据。但是,我的问题是如何在扫描请求上检查这些数据,在那里我们只有扫描仪的地址?
获取对等设备的BD地址后,您应检查存储到非易失性存储器中的配对信息。你能告诉我你的要求是什么吗?您是否需要阻止从不配对的设备扫描?
为了提高服务质量,我们希望一旦配对的用户发送扫描请求,我们就想要触发事件。换句话说,我们不想阻止从其他设备扫描,一旦配对设备发送了扫描请求,我们才需要通知。以下代码是我为此目的使用的是什么,但我不确定这是正确的方法。(特别是遗留配对)
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);如果((bdaddr_type == APP_PUBLIC_ADDR_TYPE)||(bdaddr_type == APP_RANDOM_STATIC_ADDR_TYPE)||(bdaddr_type == APP_ID_ADDR_TYPE)){如果(bdaddr_type == APP_ID_ADDR_TYPE){//搜索DB由对等的BD地址PBD = app_easy_security_bdb_search_entry(SEARCH_BY_ID_TYPE,(空隙*)peer_addr.addr,bd_addr_len);} else {//搜索db by peer的bd地址pbd = app_easy_security_bdb_search_entry(search_by_bda_type,(void *)peer_addr.addr,bd_addr_len);如果在DB(PBD){//存储设备绑定数据到安全环境//接受加密返回true;} //如果在DB else {//拒绝加密中未找到对等体,则断开连接返回false;检查对等体的BD地址是否是可解析的私有地址else others(bdaddr_type == app_random_private_resolv_addr_type){// start bd地址解析过程(!user_app_easy_security_resolve_bdaddr(peer_addr)){return false;} return true; } // Check if peer's BD address is non-Resolvable Private Address else { // Reject encryption, disconnect return false; } }
您认为这将涵盖配对的所有情况(我们可能必须更改配对方法和安全级别,因此我希望此功能更通用)?
好的,现在我能搜索设备,但我有一个新问题。如何识别扫描仪的地址类型?
您是否意味着如何拍摄对等设备的BD地址?请参阅app_get_address_type()API,因为它返回BD地址的类型。
是的,我想知道扫描仪的地址类型。正如我们之前讨论的那样,我们可以在scan_request_track中拥有扫描仪的地址。但是,我应该如何确定地址类型。
我实际上尝试过使用此API,但我陷入了App_Get_address_type()的输入参数,因为我应该将地址类型传递给此函数。
enum app_addr_types app_get_address_type(uint8_t addr_type,struct bd_addr addr){typedef enum 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);}}
当我想知道地址时,我应该为此地址类型提供什么?
为延迟道歉。中央使用是什么样的BD地址?这取决于中央BD地址。
嗨哈米德,
请检查SDK的BLE_APP_SECURY示例。该示例使用SPI闪存或EEPROM来存储绑定数据。一旦设备配对,所有配对/绑定信息都存储在非易失性存储器中,因此如果设备先前已配对,则可以检查此处。
谢谢,PM_DIALOG.
是的,我可以看到该示例存储先前配对设备的数据。但是,我的问题是如何在扫描请求上检查这些数据,在那里我们只有扫描仪的地址?
嗨哈米德,
获取对等设备的BD地址后,您应检查存储到非易失性存储器中的配对信息。你能告诉我你的要求是什么吗?您是否需要阻止从不配对的设备扫描?
谢谢,PM_DIALOG.
你好呀,
为了提高服务质量,我们希望一旦配对的用户发送扫描请求,我们就想要触发事件。换句话说,我们不想阻止从其他设备扫描,一旦配对设备发送了扫描请求,我们才需要通知。
以下代码是我为此目的使用的是什么,但我不确定这是正确的方法。(特别是遗留配对)
您认为这将涵盖配对的所有情况(我们可能必须更改配对方法和安全级别,因此我希望此功能更通用)?
问候,
汉米德
好的,现在我能搜索设备,但我有一个新问题。如何识别扫描仪的地址类型?
嗨哈米德,
您是否意味着如何拍摄对等设备的BD地址?请参阅app_get_address_type()API,因为它返回BD地址的类型。
谢谢,PM_DIALOG.
是的,我想知道扫描仪的地址类型。正如我们之前讨论的那样,我们可以在scan_request_track中拥有扫描仪的地址。但是,我应该如何确定地址类型。
我实际上尝试过使用此API,但我陷入了App_Get_address_type()的输入参数,因为我应该将地址类型传递给此函数。
当我想知道地址时,我应该为此地址类型提供什么?
嗨哈米德,
为延迟道歉。中央使用是什么样的BD地址?这取决于中央BD地址。
谢谢,PM_DIALOG.