微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540 BLE 1.4.2.2协议栈怎么清除已配对设备呢?

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

时间:10-02 整理:3721RD 点击:

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

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;

ouc qzy ,

死循环是不行的。

正确的做法是你应该等到连接断开完成后。

以simpleBLEPeripheral为例,在peripheralStateNotificationCB()里面,

连接断开后会自动到这里:case GAPROLE_WAITING:

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top