大家好:
目前我在做的项目需要CC2541“同时”开启Observer和Peripheral GAP角色,基于Wiki上的 例程 “SimpleBLEPeripheralObserver”.在原始例程中,Observer角色的扫描过程是通过按键进行触发,我们的项目中需要随时或者频繁的一直开启者。所以,我将Observer的扫描过程开启通过自定义事件的方式放在SimpleBLEPeripheral_ProcessEvent中进行。如下:
uint16 SimpleBLEPeripheral_ProcessEvent( uint8 task_id, uint16 events )[ if(events & SBP_LAMP_OBSERVER_START) [ LCD_WRITE_STRING( "Discovering...", HAL_LCD_LINE_1 ); LCD_WRITE_STRING( "", HAL_LCD_LINE_2 ); GAPObserverRole_StartDiscovery( DEFAULT_DISCOVERY_MODE, DEFAULT_DISCOVERY_AC
tiVE_SCAN, DEFAULT_DISCOVERY_WHITE_LIST ); ]...
发送首次开始扫描事件的位置在peripheralStateNotificationCB的GAPROLE_STARTED的事件分支中,如下:
static void peripheralStateNotificationCB( gaprole_States_t newState )[ switch ( newState ) [ case GAPROLE_STARTED: [...... osal_set_event(simpleBLEPeripheral_TaskID,SBP_LAMP_OBSERVER_START); //开始新的扫描]后续连续开始扫描的位置在observerEventCB中,如下:static void observerEventCB( observerRoleEvent_t *pEvent )[.....case GAP_DEVICE_DISCOVERY_EVENT: //扫描过程结束事件 [ 。...... osal_set_event(simpleBLEPeripheral_TaskID,SBP_LAMP_OBSERVER_START); //开始新的扫描 break;通过iOS软件Light Bluei可以正常连接到CC2541,但是过一会,就会因为链接超时,蓝牙断开?求教各位大拿,有没有什么可能的原因或者解决方案? 多谢!