BLE 协议栈之ibeacon广播包羞涩初探
来源:互联网 发布:深入分析java web pdf 编辑:程序博客网 时间:2024/05/20 10:11
转自:http://blog.csdn.net/xiaoleiacmer/article/details/43308699
感谢xiaoleiacm,在学习中,经常来查阅,可是每次查阅都不太容易找到。就自己转过来了,方便查找!!
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(指示了发送设备的地址类型):
广播地址是否为公共public(TxADD =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() 函数中进行信道设置。
- BLE 协议栈之ibeacon广播包羞涩初探
- BLE 协议栈之ibeacon广播包羞涩初探
- BLE 协议栈之ibeacon广播包羞涩初探
- BLE 协议栈之ibeacon广播包羞涩初探
- BLE协议栈之OSAL初探
- ble广播包解析
- 【BLE】CC2541之主机端获取广播包数据
- 【BLE-CC2640】CC2640之主机端获取广播包数据
- iBeacon初探
- iBeacon初探
- ble学习笔记八---------ble协议栈之简介
- ble学习笔记十一-----------ble协议栈之led试验
- ble学习笔记十四---------ble协议栈之按键事件
- 【BLE】CC2541之广播MAC
- 【BLE】CC2541之动态广播
- BLE之广播参数初始化
- Android BLE开发之Android手机搜索iBeacon基站
- android蓝牙4.0(BLE)开发之ibeacon初步
- 这几个工具能让你做的初创企业分布图变得更好
- AutoCompleteTextView与MultiAutoCompleteTextView学习笔记
- Fisher最优分割法+c代码
- 面向对象设计原则详解:迪米特法则
- Android存储访问及目录
- BLE 协议栈之ibeacon广播包羞涩初探
- 面试宝典第三版第八章8.2正确程序
- Linux下Qt开发环境的搭建
- 黑马程序员---iOS基础---C语言中的结构体等问题
- mysql主从复制之已存在的库
- linux笔记
- hdu 1166
- 【暑期基础】O HDU 2014 青年歌手大奖赛 评委会打分
- MD5 加密算法主思想