我现在清除配对设备的方法如下:
GAPRole_TerminateConnection();
//死循环延时5秒
GAPBondMgr_SetParameter( GAPBOND_ERASE_ALLBONDS, 0, NULL );
//死循环延时5秒
HAL_SYSTEM_RESET();
但是清除不了,尝试去掉死循环延时也不行,我单步调试时,发现执行gapbondmgr.c中的GAPBondMgr_SetParameter方法时,判断GAP_NumActiveConnections()不等于0,但是当时明明设备是断开的状态啊,不知道什么情况,请问应该怎么清除设备
case GAPBOND_ERASE_ALLBONDS:
if ( len == 0 )
{
// Make sure there's no active connection
if ( GAP_NumActiveConnections() == 0 ) //此条件不满足
{
// Erase all bonding records
VOID gapBondMgrEraseAllBondings();
// See if NV needs a compaction
VOID osal_snv_compact( NV_COMPACT_THRESHOLD );
// Make sure Bond RAM Shadow is up-to-date
gapBondMgrReadBonds();
}
else
{
eraseAllBonds = TRUE;
}
}
else
{
ret = bleInvalidRange;
}
break;
Yan:
ouc qzy ,
死循环是不行的。
正确的做法是你应该等到连接断开完成后。
以simpleBLEPeripheral为例,在peripheralStateNotificationCB()里面,
连接断开后会自动到这里:case GAPROLE_WAITING:
你可以在这个下面去尝试删除绑定。