关于ble擦除绑定信息的问题

使用ch32v208芯片作为从机,主机也是同款芯片。

现在问题在从机上。

我按照博客园的相关博文编写的ble配对+绑定的代码。

配对、绑定、连接都正常。现在问题出现在删除从机存储的绑定信息上。


我配置了最大存储2条配对信息,最大作为2个从机角色。功能正常。

config.h配置如下:

#ifndef BLE_SNV
#define BLE_SNV                             TRUE
#endif
#ifndef BLE_SNV_ADDR
#define BLE_SNV_ADDR                        0x08077C00
#endif
#ifndef BLE_SNV_NUM
#define BLE_SNV_NUM                         2 //默认3
#endif

#ifndef PERIPHERAL_MAX_CONNECTION
#define PERIPHERAL_MAX_CONNECTION           2
#endif


清空配对信息时,我使用了如下方法:

// Erase bonding info
            GAPBondMgr_SetParameter(GAPBOND_ERASE_ALLBONDS, 0, NULL);
            GAPBondMgr_GetParameter(GAPBOND_BOND_COUNT, &bondingNum); // 获取绑定数量
            printf("bondingNum = %x\n", bondingNum);
            for (i = 0; i < bondingNum; i++)
            {
                p = tmos_snv_read(mainRecordNvID(i), sizeof(gapBondRec_t), buf); // 获取一个绑定MAC
                Peripheral_print_bon_list(buf);//串口打印
            }

得到的打印信息如下:

bondingNum = 1

Get white List MAC  = ff ff ff ff ff ff 


我的问题是:我清空了所有的配对信息,bondingNum不应该为0吗?在这种情况下再次进行配对则会出现问题,配对不上,配对上但是保存不了信息等。


通过重启单片机再次执行

 GAPBondMgr_SetParameter(GAPBOND_ERASE_ALLBONDS, 0, NULL);

则会恢复正常,bondingNum = 0

注意需要在蓝牙断开的情况下调用删除绑定操作,删除后可以1s读取1次绑定的数量,查看是否会有变化。


已确定为库bug,版本:CH32V20x_BLE_LIB_V1.40。等待官方更新库文件

暂时解决办法:绑定了几个设备则调用 GAPBondMgr_SetParameter(GAPBOND_ERASE_ALLBONDS, 0, NULL);几次。



只有登录才能回复,可以选择微信账号登录