CC2540如何使从机广播一段时间自己停下来?使用GAP_ADTYPE_FLAGS_LIMITED没有任何效果啊
你好。我想用从机实现一个广播20秒停下的功能,可是我实验了GAPROLE_ADVERT_OFF_TIME,TGAP_LIM_ADV_TIMEOUT都没有作用
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT, 20);
uint16 gapRole_AdvertOffTime = 20000;
GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );
从机都是一直在广播,没有停止
另外我想问下:
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 );
这四个参数有什么作用和我之前的设置有关系么?
allen,
你是在哪里设置这些参数的呢?
参考一下下面代码, 从hiddev.c中提出来的,在HIDAdvRemote项目中:
#define HID_HIGH_ADV_INT_MIN 32
#define HID_HIGH_ADV_INT_MAX 48
#define HID_HIGH_ADV_TIMEOUT 5
static void hidDevHighAdvertising( void )
{
uint8 param;
VOID GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, HID_HIGH_ADV_INT_MIN );
VOID GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, HID_HIGH_ADV_INT_MAX );
VOID GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, HID_HIGH_ADV_TIMEOUT );
// Setup adverstising filter policy first
param = GAP_FILTER_POLICY_WHITE;
VOID GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), ¶m );
param = TRUE;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), ¶m );
}
楼主问题解决了吗?
想要实现你所描述的功能,你需要将你Device的Avertising设置为Limited Discovered Mode,具体设置方法如下:
1. 在advertData 中加入此AD string:
0x02,
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_LIMITED| GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
2. 调用 GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );函数
其实在第2步里,调用的是GAP_UpdateAdvertisingData函数,至于为什么这个API函数可以设置Avertising模式,我猜测可能是这个函数接收到传递的advertData 后,会检查里面的每个AD string,然后做相应的设置。
另外,gapRole_AdvertOffTime 应该设置为0
1、首先保证你的广播模式是Limited Discoverable mode即:
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
2、设置广播超时参数(TGAP_LIM_ADV_TIMEOUT),即:
//Maximum time to remain advertising, when in Limited Discoverable mode. unit is seconds
#define USER_DEF_ADV_TIMEOUT 30
GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, USER_DEF_ADV_TIMEOUT );
3、祝你好运!
为什么gapRole_AdvertOffTime要设为0,这个参数干什么的?
