BLE 协议栈之ibeacon广播包羞涩初探

Ibeacon

 数据定义:一小片数据段广播信息。它不需要配对

 数据包括周围环境温度,位置信息,自身的感应信息。

 

广播功率设定

 

#defineLL_EXT_TX_POWER_MINUS_23_DBM    0

#defineLL_EXT_TX_POWER_MINUS_6_DBM     1

#defineLL_EXT_TX_POWER_0_DBM             2

#defineLL_EXT_TX_POWER_4_DBM             3

  #define GAP_ADTYPE_POWER_LEVEL     0x0A //!< TX Power Level: 0xXX:-127 to +127 dBm

下面的函数定义在hci.h 

 

 

 

 

广播数据包:

Preamble(报头):0xff    (固定)

Access Address:0x8e89bed6  (固定)

Packet Payload

        Head(2byte):用来描述数据包的类别和PDU的类别

             PDU Type: 

 

      定义为0010 ADV_NONCONN_IND时,lightblue 扫描时将不能显示(不确定是否能发现数据)搜所到的从机,但usb dongle 可以检测到当前设备发射的数据。

     定义为ADV_SCAN_IND

 

 

 

         定义为 0110 ADV_SCAN_IND ,lightblue进行扫描时可以随时发现从机,并显示出回复数据。

         定义为ADV_SCAN_IND

 

 

 

TxAdd(指示了发送设备的地址类型):

    广播地址是否为公共publicTxADD =0)还是随机地址(TxADD=1

                    Public 地址:是遵循IEEE 802标准,被IEEE协会认证的MAC地址

                    Random 地址(适用于特定连接的设备):

                                 1 static 静态地址,除非掉电改变否则无法更改

                                 2 Private (随时改变)

                                                     resolvable address:来源于MAC地址

                                                     non-resolvableaddress:程序改变

 

RxAdd此字节被用于保留,并不适用于此基站 

Length数据长度。

 

 

 

广播数据类型 

      Data Type Value  定义在Gap.h 中。

 

     数据定义结构:

     数据长度 标志位 数据内容

        用户定义31个字节:

Flag 被蓝牙核心编程规范Core Specification所规定。

 

#define GAP_ADTYPE_FLAGS_LIMITED                0x01 //!< Discovery Mode: LE Limited Discoverable Mode  广播180

#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   默认设置

对于ADV_NONCONN_IND等不需要连接回复数据的可以省略。

 

 

Manufacturer Specific Data 厂商定义制造字节

定义在 #define GAP_ADTYPE_MANUFACTURER_SPECIFIC       0xFF

 

最大允许字节长度25~28byte

 

广播间隔:

无连接广播间隔不能小于100ms 

有连接广播间隔不能小于20ms

 

功耗:

在使用UART,SPI,I2C是会增加其功耗,甚至会超出低功耗蓝牙协议规定的功耗。

 

 

广播类别设定(PDU type):

//uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND;   // use non-connectable advertisements

在广播时不允许广播数据和回复数据的发送

 

uint8 advType = GAP_ADTYPE_ADV_SCAN_IND; // use scannable unidirected advertisements

在广播时允许进行请求数据和回复数据的发送

 

广播信道:

 

 

 

定义在gap.h

#define GAP_ADVCHAN_37  0x01  //!< Advertisement Channel 37

#define GAP_ADVCHAN_38  0x02  //!< Advertisement Channel 38

#define GAP_ADVCHAN_39  0x04  //!< Advertisement Channel 39

GAPRole_Init()  函数中进行信道设置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值