一、實驗目的
1、本篇介紹如何實現任何設定廣播時間的方法;
二、概述
1、限制廣播:在配置爲限制廣播的模式下,可以廣播一段時間後不再廣播或廣播一段時間後間隔一段時間再重新廣播;
2、普通廣播:在配置爲普通廣播的模式下,會一直廣播,可以設定廣播間隔,如100(ms)廣播一次,無期限持續廣播;
3、模式選擇:需要持續廣播,選擇普通廣播,不需要持續廣播,選擇限制模式;
4、考慮到功耗問題,能選擇限制廣播,就不要選擇普通廣播,因爲普通廣播無期限廣播很耗電;
5、設置廣播間隔,根據情景合理設置廣播間隔,在不影響主機需要快速發現從機的情況下,廣播間隔越長,功耗越低;
三、試驗平臺
1、藍牙協議棧:1.3.2
2、軟件平臺:IAR For 8051 8.10.3
5、硬件平臺:Smart RF開發板(從機),Android_Lightblue(主機)
四、實驗步驟
一、限制模式1、模式配置(SimpleBLEPeripheral.c中)
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
2、配置廣播超時、廣播保持時間和廣播間隔(SimpleBLEPeripheral.c中)
//如果廣播超時設置爲0,廣播到設定時間之後不再廣播,進入等待狀態,等待下次廣播使能重新廣播
//如果不設置,默認廣播超時30s(單位爲ms),廣播設定時間後,進入等待狀態,廣播超時時間30s後重新廣播,一直循環
uint16 gapRole_AdvertOffTime = 0;
GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime ); //廣播超時
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );//廣播使能
GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT ,10);//保持廣播時間 unit for second,默認180S
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );// 掃描迴應內容
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );// 廣播內容
// Set advertising interval
uint16 advInt = DEFAULT_ADVERTISING_INTERVAL; //廣播間隔默認100ms廣播一次
GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );
GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );
1、模式配置(SimpleBLEPeripheral.c中)
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL
2、配置廣播間隔(SimpleBLEPeripheral.c中)
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable ); //廣播使能
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );// 掃描迴應內容
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );// 廣播內
// Set advertising interval
uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;//廣播間隔默認100ms廣播一次
GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );
GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );
五、總結
1、配置後參數後,只要廣播使能,就要開始廣播了;
2、在普通模式下,廣播超時的配置作用在於關閉廣播後,更新廣播內容,再立即打開廣播時,gapRole_AdvertOffTime爲打開廣播的延時時長;