广播常用设置
1、 设置广播通道 37、38、39
默认三个广播通道全部打开
// GAP_ADVCHAN_DEFINES GAP Advertisement Channel Map
#define GAP_ADVCHAN_37 0x01 //!< Advertisement Channel 37
#define GAP_ADVCHAN_38 0x02 //!< Advertisement Channel 38
#define GAP_ADVCHAN_39 0x04 //!< Advertisement Channel 39
#define GAP_ADVCHAN_ALL (GAP_ADVCHAN_37 | GAP_ADVCHAN_38 | GAP_ADVCHAN_39) //!< All Advertisement Channels Enabled
//添加至Broadcaster_Init() 广播初始化函数中
uint8_t init_adv_channel_map = GAP_ADVCHAN_37;
GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8_t ), &init_adv_channel_map );
2、设置广播间隔
// What is the advertising interval when device is discoverable (units of 625us, 160=100ms)
#define DEFAULT_ADVERTISING_INTERVAL 160
EVT中的广播模式的例程,都是不可连接的广播包,最低广播间隔为100ms
3、开启/关闭广播
//添加至Broadcaster_Init() 广播初始化函数中
/* 开启广播 */
uint8_t initial_advertising_enable = TRUE;
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &initial_advertising_enable );
/* 关闭广播 */
uint8_t initial_advertising_enable = FALSE;
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &initial_advertising_enable );
4、设置有限可发现模式 (GAP_ADTYPE_FLAGS_LIMITED)
//设置GAP_ADTYPE_FLAGS 为有限可发现模式
0x02, // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_LIMITED | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, //默认180s后关闭广播
/* 修改广播时长(广播x秒后停止) */
uint16_t adv_timeout = 5; //单位为秒
GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT, adv_timeout );
- 如需限制广播在 5s 之后停止,然后 60s 之后自动重新广播,如此反复,可添加一个定时事件,每 (60+5)s 开启一次广播。
5、普通发现模式 (GAP_ADTYPE_FLAGS_GENERAL)
//设置GAP_ADTYPE_FLAGS 为普通可发现模式
0x02, // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_GENERAL | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, //默认一直广播
/* 修改广播时长(广播x秒后停止) */
uint16_t adv_timeout = 8000; //单位为0.625ms 5s
GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, adv_timeout );
6、动态更新广播数据
extern bStatus_t GAP_UpdateAdvertisingData( uint8_t taskID,uint8_t adType,uint8_t dataLen,uint8_t *pAdvertData );
- taskID: 请求更改广播任务的ID
- adType:TRUE更改广播数据,FALSE更改扫描回复数据
- datalen:数据长度
- *pAdvertData:数据指针
7、修改广播MAC地址
Pproperties -> C/C++ General -> Paths and Symbols -> Symbols -> GNU C
添加宏定义
BLE_MAC == TRUE
通常在xx_main.c文件中,定义了MacAddr[6]数组,用于自定义MAC地址。
#if (defined (BLE_MAC)) && (BLE_MAC == TRUE)
u8C MacAddr[6] =
{ 0x84,0xC2,0xE4,0x03,0x02,0x02};
#endif