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

配置从机建立连接后继续广播,如何改变此时的广播间隔?

hi,

我最近测试了CC2541 peripheralbroadcaster工程以及CC2650 multi-role工程,都可以实现在连接后继续广播的功能。但无论如何改 DEFAULT_ADVERTISING_INTERVAL,没建立连接时候的广播都正常,但连接后的广播间隔就会降到1.3s。(间隔的数字不是抓包得到的,是我看电流的峰值得来的,但很多人的帖子印证我的结果,不会错

https://e2e.ti.com/support/wireless_connectivity/f/538/t/410860

https://e2e.ti.com/support/wireless_connectivity/f/538/p/124491/741026#741026

)所以我想知道,是否能修改建立连接后的广播频率?因为我就发现固件里一开始初始化的时候配置了一下ADVERTISING_INTERVAL,

// Set advertising interval
{
uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

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 );
}

还有其他参数要配置吗?

kai

Yan:

kai,

因为这是固定的,正确的应该是TGAP_CONN_ADV_INT_MIN 和 TGAP_CONN_ADV_INT_MAX,但 在库里面这两个有对应设置好的默认值,就是1.28s,你从应用层怎么设置也没有,GAP底层调用的时候就是直接用默认值。

当然也不是没有办法,其实很简单,你直接用HCI命令就行,不要用gap的接口,gap本质上也是调用HCI的命令。

HCI_LE_SetAdvParamCmd(),就是你想要的,在hci.h里面。

2541可以直接这么干。

2640还不行,因为iCall里面并没有把这条命令直接链接到stack工程里面。你要是自己愿意花点精力把这条命令模仿其他命令加到iCall里面去那当然也行。

Kai Zhao:

回复 Yan:

Hi Y,

我尝试在peripheral.c的 GAPRole_ProcessEvent()里面调用HCI_LE_SetAdvParamCmd()和HCI_LE_SetAdvEnableCmd()但都没成功,代码如下:

uint16 advIntervalMin = 80 ; uint16 advIntervalMax = 80 ; uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND ; uint8 ownAddrType = HCI_PUBLIC_DEVICE_ADDRESS; uint8 directAddrType = HCI_PUBLIC_DEVICE_ADDRESS; uint8 *directAddr = NULL; uint8 advChannelMap = gapRole_AdvChanMap; uint8 advFilterPolicy = gapRole_AdvFilterPolicy;

HCI_LE_SetAdvParamCmd(advIntervalMin,advIntervalMax,advType,ownAddrType,directAddrType,directAddr,advChannelMap,advFilterPolicy );hciStatus_t temp=HCI_LE_SetAdvEnableCmd( HCI_ENABLE_ADV);

我检查返回的hciStatus 是0,但收不到广播。如果用GAP的接口打开广播后,单独调用HCI_LE_SetAdvParamCmd()也不起作用。不知道是我哪里弄错了?

Kai

赞(0)
未经允许不得转载:TI中文支持网 » 配置从机建立连接后继续广播,如何改变此时的广播间隔?
分享到: 更多 (0)