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

CC2541使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &param )无法停止广播

我再做一个按键修改广播数据的代码,我现在的思想是:当我按下按键时候发出按键中断,在中断中使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &param )来停止广播,修改完广播数据以及其他参数后再使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &param )来开启广播。但是现在的情况是按下按键有广播了,如果广播时间不到,按下其他按键并不能改变广播数据,反而是延长了广播时间。只有当广播停止后,按下其他按键广播数据才会改变。我使用GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, INITIAL_ADV_TIMEOUT)来设定定时时间。

大概的意思就是,我需要按下按键1就发广播1,按下按键2就发送广播2.但是现在的情况是:我按下按键1,发出了1的广播包;但是此时1的广播包没有停止的话,我按下按键2,发的依然是1的广播包,而且时间还延长了(在1广播包不停止情况下频繁按下任意按键会一直广播1的广播包);只有当1的广播包停止,按下按键2才会发送2的广播包,其他也是同样情况。

我试过了先关闭一段时间再设置参数开启广播等方法,但是均没有效果。现在想不明白为什么会这样,难道广播停止一定要定时时间到自动停止而不能够,软件停止?

Viki Shi:

这个不一定是广播设置的问题,还可能是中断处理的问题,这方面排查过吗?

listen Huang:

回复 Viki Shi:

排查了,在广播时候是可以进入按键中断的。但是就是在中断中关闭不了广播。

listen Huang:

回复 Viki Shi:

我用SimpleBLEPeripheral进行了一个小实验,SimpleBLEPeripheral会一直广播,当我触发按键中断时候设置广播使能翻转,这时候能够实现广播的开关。但是在我的代码里,我使用了GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, intvalue )来设置广播超时时间,此时关闭广播无效,只能等到超时自动关闭。

那么现在我想问的是,是不是广播没有设置GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, intvalue )超时的时候,就能够使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &enable )来开关广播。而在设置了GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, intvalue )超时的时候,停止广播的操作不受用户控制,广播关闭只受广播超时控制。此时只能打开广播,而不能使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &enable )来关闭广播。是这么理解吗?

mingchao shi:

回复 listen Huang:

兄台,你的问题解决了吗?广播是怎么关闭的?

Susan Yang:

回复 mingchao shi:

您可以使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_temp_enable );来关闭广播

赞(0)
未经允许不得转载:TI中文支持网 » CC2541使用GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &param )无法停止广播
分享到: 更多 (0)