微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于CC254x 观察者模式下scan列表的问题

关于CC254x 观察者模式下scan列表的问题

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

cc254x中的观察者例程里面,simpleBLEObserverEventCB函数下有两个事件,分别是GAP_DEVICE_INFO_EVENT和GAP_DEVICE_DISCOVERY_EVENT。从名字来看,前者应该是scan到设备时候触发的事件,后者是scan结束时触发的事件。代码分别如下:

    case GAP_DEVICE_INFO_EVENT:
      {
        simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );
      }
      break;
    case GAP_DEVICE_DISCOVERY_EVENT:
      {
        // discovery complete
        simpleBLEScanning = FALSE;

        // Copy results
        simpleBLEScanRes = pEvent->discCmpl.numDevs;
        osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
                     (sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
        
        LCD_WRITE_STRING_VALUE( "Devices Found", simpleBLEScanRes,
                                10, HAL_LCD_LINE_1 );
        if ( simpleBLEScanRes > 0 )
        {
          LCD_WRITE_STRING( "<- To Select", HAL_LCD_LINE_2 );
        }

        // initialize scan index to last device
        simpleBLEScanIdx = simpleBLEScanRes;
      }
      break;

其中,在

GAP_DEVICE_INFO_EVENT事件中的simpleBLEAddDeviceInfo函数,已经把scan过程中得到的设备信息存入simpleBLEDevList中。为什么在GAP_DEVICE_DISCOVERY_EVENT事件中还要执行

osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
(sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );

重新写入simpleBLEDevList列表中去呢,是不是多此一举呢?另外discCmpl.pDevList的数据从哪里来的,没有找到相关的内容,莫非在lib中? 如果我要在scan过程中过滤掉某些rssi值设备,是在GAP_DEVICE_INFO_EVENT中过滤吗?但是,在GAP_DEVICE_DISCOVERY_EVENT事件中simpleBLEDevList又被重写了吧?

前辈你好,对于这个问题我也有同样的疑问,不知道你解决了没有啊?

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

网站地图

Top