一、实验目的

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中)

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广播一次
 TGAP_LIM_DISC_ADV_INT_MIN, advInt );
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广播一次
TGAP_GEN_DISC_ADV_INT_MIN, advInt );
TGAP_GEN_DISC_ADV_INT_MAX, advInt );

五、总结

1、配置后参数后,只要广播使能,就要开始广播了;

2、在普通模式下,广播超时的配置作用在于关闭广播后,更新广播内容,再立即打开广播时,gapRole_AdvertOffTime为打开广播的延时时长;