2016-08-17 57 views
1

我正在嘗試使TI SensorTag(cc2650)無連接(只是不斷宣傳傳感器,如加速計,讀數)。傳感器數據如何嵌入TI SensorTag cc2650的廣告數據包中?

SensorTag.c文件中的基礎SensorTag項目,我可以看到static uint8_t advertData[],但我不知道我是否可以把動態傳感器數據在那兒(或者如果這是正確的做法或在哪裏可以找到GAP_ADTYPE_*名單,如果這需要)。

回答

2

我對這個設備一無所知,所以我的回答會相當一般。

是的,你可以通過廣告傳播你的傳感器的數據,這樣就不需要其他設備連接來查看傳感器的值。

這裏是廣告數據格式,如BLE 4.2核心規範第3卷C部分11.1所示。

BLE advertising data format

這裏有趣的是,你是最後一個嵌套的一部分,廣告類型和廣告數據,當然這些長度。

基本上你想要做的是,如果你有一個4字節的值,設置長度爲5(字節),1爲類型,4爲數據。

該類型本身必須是此處定義的GAP類型之一:Generic Access Profile。要宣傳您自己的數據,您必須選擇最後一個,製造商特定數據,這是0xFF。

關於你的源代碼,您使用的是我真的不能幫你了TI棧,但是如果它的工作方式相同,比我用過的其它層疊那麼它很可能是:

  1. 你可以把你的數據在advertData []
  2. 的間隙式看起來像GAP_ADTYPE_MANUFACTURER_SPECIFIC

當然的AD結構的長度在某處被指定。無論是指定整個數據包的長度,還是隻是告訴堆棧數據的長度(在advertData中),它都會計算(加1)AD結構的長度。

+0

相當有幫助解釋的東西! advertData最大尺寸= 31個字節的設備。我會看看我能否拼湊出一個有效的例子。 – ayman

+0

31字節是數據包的整體大小,在其中可以有一個或多個AD結構。所以如果有足夠的空間,你仍然可以宣傳一些服務的UUID,一些標誌或本地名稱。無論如何,我不知道它是由堆棧還是自己管理。這是正確的,因爲長度存在於協議中,因此在advertData中,您可能不需要在別處指定它,它將被解析。 – Tim

+1

哦,它寫在覈心規格的圖像上,但如果你不知道你可以在廣告響應中放置31個字節。如果掃描儀設備請求更多數據,則會發送此響應。但是核心規範還指出,儘管廣告數據包的部分廣播數據包發送的廣播用戶數據本質上通常是動態的,但掃描響應數據本質上通常是靜態的。 (Vol1,Part A,4.2.2.2) – Tim

0

由於您使用TI堆棧,請查找簡單BLE觀察器&簡單BLE廣播器示例。如果你不想創建連接到設備,它應該是一條路。

作爲TI文檔中所述

觀察是基本上其掃描的廣告消息 但不能發起連接的設備。另一方面,廣播公司是發送廣告消息但不可連接的設備。

您將在示例文檔和源代碼註釋中找到所需的全部內容。

+0

試圖做到這一點,讓設備將傳感器數據放在數據包中,以便其他設備知道它是否應該連接到它。我會盡力找到並查看BLE Broadcaster示例源代碼。 – ayman

+0

然後,您應該使用這一個http://processors.wiki.ti.com/index.php/LPRF_BLE_PeripheralBroadcaster作爲起點。我認爲它已經有很好的文檔記錄,但也要看代碼評論。 –

+0

我需要一個Observer,因爲有些其他設備需要連接到傳感器來激活GPIO。 – ayman