微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541在BLE 1.4.2.2协议栈下的同时启用Peripheral和Observer角色时蓝牙经常连接超时断开

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,但是过一会,就会因为链接超时,蓝牙断开?

求教各位大拿,有没有什么可能的原因或者解决方案? 多谢!

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

网站地图

Top