BLE 有限可发现模式&普通可发现模式

-------------------------------------------------------simple_peripheral.c// General discoverable mode: advertise indefinitely

#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_GENERAL-------------------------------------------------------Gap.h

#define GAP_ADTYPE_FLAGS_LIMITED                0x01 //!< Discovery Mode: LE Limited Discoverable Mode#define GAP_ADTYPE_FLAGS_GENERAL                0x02 //!< Discovery Mode: LE General Discoverable Mode#define GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED    0x04 //!< Discovery Mode: BR/EDR Not Supported-------------------------------------------------------peripheral.c

#define DEFAULT_ADVERT_OFF_TIME       30000   // 30 secondsuint16_t advertOffTime = 0;GAPRole_SetParameter(GAPROLE_ADVERT_OFF_TIME, sizeof(uint16_t),&advertOffTime);-------------------------------------------------------Gap.h/**  * @brief Minimum time to remain advertising, when in general discoverable mode (ms) Setting this parameter to 0 turns off the timeout, thus allowing infinite advertising  * 保持广告的最小时间,当一般可发现模式(ms)将该参数设置为0时,关闭超时,从而允许无限广告  * default: 0  *  * range: 0-65535  */#define TGAP_GEN_DISC_ADV_MIN          0/**  * @brief Time to remain advertising in limited discovery mode (sec)  *  在有限的发现模式下(sec)继续做广告的时间  * default: 180  *  * range: 1-65535  */

#define TGAP_LIM_ADV_TIMEOUT           1

--------------------------------------------------------------低功耗蓝牙的发现模式主要分为有限可发现模式和普通(无限)可发现模式。注意发现模式的定义必须在广播数据的开头处,不能在扫描回应数据中定义。设备就处于有限可发现模式,当设备处于有限可发现模式时,很多人以及网上的一些资料提到广播会在使能打开之后的 30.72s 之后停止广播。但是实际测试并不是这样,而是180s在有限可发现模式下,默认是180s之后停止广播,如果想设置这个值,可以用下面的方式:GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, ADV_TIMEOUT );  为了实现在设置的时间或者是默认的时间之后,广播停止,过了一段时间(默认应该是 30s 之后),广播又重新开启了。出现这种情况的时候应关注“GAPROLE_ADVERT_OFF_TIME”的设置,如果不设置该值,就会出现停止广播 30s(默认值)之后重新广播的情况。--------------------------------------------------------------最常用的场景,一直持续广播

#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_GENERAL  // Duration of slow advertising duration in ms (set to 0 for continuous advertising)  

#define DEFAULT_SLOW_ADV_DURATION             0  GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, DEFAULT_SLOW_ADV_DURATION ); --------------------------------------------------------------广播使能开启之后,限制广播在 30s 之后停止,并且在应用部分没有使能打开的情况下不再广播#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_LIMITED uint16 gapRole_AdvertOffTime = 0;  GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );//GAPROLE_ADVERT_OFF_TIME设置的时间单位是ms,默认是30s uint16 ADV_TIMEOUT = 30;  GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, ADV_TIMEOUT );//设置的单位是s,不设置的话,默认是180s --------------------------------------------------------------广播使能开启之后,限制广播在 20s 之后停止,然后过 15s 之后自动重新广播,如此反复。#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_LIMITED  uint16 gapRole_AdvertOffTime = 15000;  GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );//GAPROLE_ADVERT_OFF_TIME设置的时间单位是ms,默认是30s  uint16 ADV_TIMEOUT = 20;  GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, ADV_TIMEOUT );//设置的单位是s,不设置的话,默认是180s 
 

猜你喜欢

转载自blog.csdn.net/qinrenzhi/article/details/84344954