查看: 298|回复: 0
打印 上一主题 下一主题

BLE4.0之修改广播时间--红萝卜

[复制链接] qrcode

22

主题

24

帖子

76

积分

注册会员

Rank: 2

积分
76
楼主
跳转到指定楼层
发表于 2015-11-10 06:23 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、实验目的

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






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表