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

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

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 completesimpleBLEScanning = FALSE;// Copy resultssimpleBLEScanRes = 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 devicesimpleBLEScanIdx = 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又被重写了吧?

Tony_Stark:

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

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC254x 观察者模式下scan列表的问题
分享到: 更多 (0)