TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2540 BLE 1.4.2.2协议栈怎么清除已配对设备呢?

我现在清除配对设备的方法如下:

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:

你可以在这个下面去尝试删除绑定。

赞(0)
未经允许不得转载:TI中文支持网 » CC2540 BLE 1.4.2.2协议栈怎么清除已配对设备呢?
分享到: 更多 (0)