BLE 協議棧之ibeacon廣播包羞澀初探

轉自: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(指示了發送設備的地址類型):

    廣播地址是否爲公共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()  函數中進行信道設置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章