轉自: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() 函數中進行信道設置。