微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 最新的cc2640 MultiRole作为从机时是否支持广播GAP_ADTYPE_ADV_NONCONN_IND与GAP_ADTYPE_ADV_IND的切换?

最新的cc2640 MultiRole作为从机时是否支持广播GAP_ADTYPE_ADV_NONCONN_IND与GAP_ADTYPE_ADV_IND的切换?

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

3个MultiRole设备不连接任何节点时GAP_ADTYPE_ADV_NONCONN_IND与GAP_ADTYPE_ADV_IND的切换正常,但是在下面所述的情况有问题:

ABC三个MultiRole设备A-->Central, B-->(Central+Peripheral), C-->Peripheral,连接情况是A连接B后B切换成GAP_ADTYPE_ADV_NONCONN_IND类型广播,B再连接C后C切换成GAP_ADTYPE_ADV_NONCONN_IND类型广播,作为从设备的全切换成GAP_ADTYPE_ADV_NONCONN_IND广播,此时操作C广播切换GAP_ADTYPE_ADV_NONCONN_IND与GAP_ADTYPE_ADV_IND的切换正常,但是B切换广播不成功;

广播切换步骤在按键处理回调中进行关闭广播和切换广播类型,

 if (keys & KEY_RIGHT)  // turn advertising on / off
    {
      uint8_t adv;
      adv = FALSE;
      err = GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &adv, NULL);
      if (adv_status) 
      {       
        uint8 adv_event_type = GAP_ADTYPE_ADV_IND;
        GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &adv_event_type, NULL);
        adv_status = 0;
      }
      else 
      {
        uint8 adv_event_type = GAP_ADTYPE_ADV_NONCONN_IND;
        GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &adv_event_type, NULL);
        adv_status = 1;
      }
      return;
    }

在下面函数中打开广播使能

static void simpleTopology_processRoleEvent(gapMultiRoleEvent_t *pEvent)

...

case GAP_END_DISCOVERABLE_DONE_EVENT:
{
if (gapRoleNumLinks(GAPROLE_AVAILABLE_LINKS) > 0)
{
 LCD_WRITE_STRING("Ready to Advertise", LCD_PAGE2);
}
else
{
 LCD_WRITE_STRING("Can't Adv : No links", LCD_PAGE2);
}
uint8_t adv = TRUE;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &adv, NULL);//打开广播使能
}
break;

现在遇到的问题是B设备在切换时关闭广播使能时返回bleIncorrectMode 0x12 //!< Not setup properly to perform that task后没有GAP_END_DISCOVERABLE_DONE_EVENT事件产生,A C设备切换正常;

问下TI工程师MultiRole是否支持B这种切换?处理的方式是否有问题?代码其余部分没有更改!

烧写官方MultiRole固件后以上述相同的连接方法也出现广播关闭时返回bleIncorrectMode 0x12不能关闭广播的情况!

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

网站地图

Top