CC2541在BLE 1.4.2.2协议栈下的同时启用Peripheral和Observer角色时蓝牙经常连接超时断开
时间:10-02
整理:3721RD
点击:
大家好:
目前我在做的项目需要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_ACTIVE_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,但是过一会,就会因为链接超时,蓝牙断开?
求教各位大拿,有没有什么可能的原因或者解决方案? 多谢!