微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540如何使从机广播一段时间自己停下来?使用GAP_ADTYPE_FLAGS_LIMITED没有任何效果啊

CC2540如何使从机广播一段时间自己停下来?使用GAP_ADTYPE_FLAGS_LIMITED没有任何效果啊

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

你好。我想用从机实现一个广播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 ), &param );

param = TRUE;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &param );
}

楼主问题解决了吗?

想要实现你所描述的功能,你需要将你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,这个参数干什么的?

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

网站地图

Top