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

CC2540广播间隔更新问题

大家好!

      最近用CC2540来发广播数据,上电后前10秒,间隔2秒广播一次。10秒后间隔3秒广播一次。但是用抓包软件看的一直都是2秒/次,也就是间隔更新失败。

      我用的是广播例程:SimpleBLEBroadcaster 

     程序采用POWER_SAVING模式,在主循环里延时10秒后,调用以下两种方法更新都不行,广播间隔还是2秒,所以想请大家指点一下,非常感激。

      方法一:参照初始化时设置广播间隔的程序,结果不行

      uint16 advInt = 4800;

      GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );
      GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );
      GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );
      GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );

      方法二:调用函数HCI_LE_SetAdvParamCmd(),结果广播间隔也还是2秒

      uint16 advIntervalMin = 4800; // Required adv interval.

      uint16 advIntervalMax = 4800; // Required adv interval. 

      uint8 advType = HCI_SCANNABLE_UNDIRECTED;

      uint8 ownAddrType = HCI_PUBLIC_DEVICE_ADDRESS; // Public addr.

      uint8 directAddrType = HCI_PUBLIC_DEVICE_ADDRESS; // Useless here.

      uint8 *directAddr = NULL;

      uint8 advChannelMap = HCI_ADV_CHAN_ALL;

      uint8 advFilterPolicy = HCI_ADV_WL_POLICY_ANY_REQ;

      HCI_LE_SetAdvParamCmd( advIntervalMin , 

                                                          advIntervalMax , 

                                                          advType , 

                                                          ownAddrType , 

                                                          directAddrType , 

                                                          directAddr , 

                                                          advChannelMap , 

                                                          advFilterPolicy );

      

Yan:

Xiaodong,

要修改广播参数,必须先停止广播,然后再修改,然后重新广播。你中间有停止吗?

Xiaodong Huang:

回复 Yan:

hi Yan:

      修改之前,我有先停止广播的,具体操作如下,请帮忙看一下,非常感谢!

      我采用的是广播例程: SimpleBLEBroadcaster

          上电后间隔2秒广播一次,上电10秒后,自动改成3秒广播1次,但看到的是一直都是2秒/次

uint16 advIntervalMin = 4800; // Required adv interval. uint16 advIntervalMax = 4800; // Required adv interval. uint8 advType = HCI_SCANNABLE_UNDIRECTED; uint8 ownAddrType = HCI_PUBLIC_DEVICE_ADDRESS; // Public addr. uint8 directAddrType = HCI_PUBLIC_DEVICE_ADDRESS; // Useless here. uint8 *directAddr = NULL; uint8 advChannelMap = HCI_ADV_CHAN_ALL; uint8 advFilterPolicy = HCI_ADV_WL_POLICY_ANY_REQ;

uint8 current_adv_enabled_status;uint8 new_adv_enabled_status;  GAPRole_GetParameter( GAPROLE_ADVERT_ENABLED, &current_adv_enabled_status );if( current_adv_enabled_status == TRUE ){    new_adv_enabled_status = FALSE;

    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status ); }

HCI_LE_SetAdvParamCmd(advIntervalMin,                                                   advIntervalMax,                                                   advType,                                                   ownAddrType,                                                   directAddrType,                                                   directAddr,                                                   advChannelMap,                                                   advFilterPolicy);

//change the GAP advertisement status to opposite of current statusnew_adv_enabled_status = TRUE;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status );

shen liu2:

回复 Xiaodong Huang:

我也更新了没有反应,请问您后来这个问题解决了么?怎么解决的?谢谢!

mark_xu:

回复 shen liu2:

要设置GAP参数

GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, DEFAULT_MID_ADV_INTERVAL_MIN ); GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, DEFAULT_MID_ADV_INTERVAL_MAX ); GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, DEFAULT_FAST_ADV_DURATION ); // Enable advertising GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &advEnable );

赞(0)
未经允许不得转载:TI中文支持网 » CC2540广播间隔更新问题
分享到: 更多 (0)