Jieli-Tech / fw-AC63_BT_SDK

Firmware for Generic Bluetooth SDK(AC63 series), Support AC631N/AC635N/AC636N/AC637N/AC632N, compatible with AC69 series without audio support.
Apache License 2.0
167 stars 97 forks source link

如何判断对端是否已经配对(Gitee提问无回复) #183

Closed alittleray closed 1 year ago

alittleray commented 1 year ago

SDK版本: 2.1.0 芯片型号: AC6329C 选用的cbp工程: AC632N_hid 配置的板级: CONFIG_BOARD_AC6329C_DEMO 问题的分类标签: 蓝牙(BLE&EDR) 问题具体描述: 手机和设备配对之后,每次手机通过App连接设备,我需要判断一下设备与手机之前的配对是否还存在。 1、当连接完成后,设备通过 ble_list_check_addr_is_exist 函数判断当前连接的手机是否在已配对列表。 2、但是,如果手机上取消了配对,此时手机和设备连接之后,设备端通过连接地址检查配对表,该配对信息还是存在的,因为存了VM。 3、走读了ble_hogp.c相关代码,发现hogp_event_packet_handler函数中GATT_COMM_EVENT_ENCRYPTION_CHANGE这个事件。双方第一次配对会走这里(first pair);双方配对信息都存在,连接之后也会走这里(reconnect);如果未配对或一方删除配对信息,那么就是只是连接完成,不会走这里。 请问,设备和手机连接后,我可以根据上面第3点判断双方已配对吗(设备和手机已配对,且配对信息都存在且有效)?

JL-MinXian commented 1 year ago

1、如果回连成功,那就是配对信息存在而且有效;GATT_COMM_EVENT_ENCRYPTION_CHANGE消息有个status状态为0,则标识配对加密成功。 2、如果手机删除配对信息,一般会重新走 first pair 的流程的。设备端就是重新写入新的配对信息。