藍芽廣播資料格式和動態改變

2022-07-07 20:54:11 字數 1528 閱讀 5709

廣播內容的自定義是藍芽ble開發的基本技能,使用者最多能夠設定31位元組。但是使用者定義是必須要遵循ble協議的。另外,ibeacon應用和一些特定的應用要利用廣播來傳遞資料,而且不同時間段的廣播內容還會改變,如ibeacon的major/minor和電量顯示等待。本文即闡述藍芽的廣播資料格式和動態改變。

一、廣播資料格式

總共31位元組,由乙個或者多個廣播結構單元組成,每個單元由長度length、廣播內容型別ad type、廣播資料ad data組成;長度為ad type加上ad data的長度,不包括長度自身所佔位元組。

二、常見廣播內容型別ad type

1.flag

ad type是0x1,代表廣播模式。lelimited discoverable(ad data是0x0)是有限時間廣播,而general discoverable(ad data是0x1)是無限廣播,直到被主動停止廣播。

發射功率,主機根據它和rssi就可以計算主機到從機的距離,ibeacon室內定位即是利用這點。

5. local name

裝置名稱

常見的廣播內容型別就是上面五種,其他的不常見就不講了。

三、廣播動態改變

動態改變其實跟各個藍芽單晶元的sdk事件處理機制有關,但是對於cc2541、da14580和nrf52832等平台來說,他們的處理基本是一樣的:

1)要想改變廣播內容,必須先停止廣播,再進行廣播內容更新,然後重新廣播生效。

2)必須要等到底層ble協議棧完全停止廣播後,傳送確認資訊給應用層之後,才能改變廣播內容並重新廣播。

以da14580來舉例,其在一直廣播過程中,在需要改變廣播內容時,要先向gapm(廣播屬於gap層管理)傳送gapm_cancel_cmd取消廣播,底層處理完會受到乙個gapm_cmp_evt完成的事件,在該事件處理中修改廣播內容,並重新傳送gapm_start_advertise_cmd命令開始廣播。

四、廣播timeout

對於da14580來說,其預設是一直廣播下去的,直到被取消或者轉到連線狀態。如果希望只廣播一定時間就進入睡眠,則需要定義乙個timer。

對於nrf52832來說,其介面內建乙個定時器,可以設定無線廣播,也可以設定乙個時間,時間到了就會收到乙個timeout事件。

韋東山藍芽學習筆記(1)各層資料格式

下層對上層的資料,加上頭部資訊,頭部資訊包含,從哪一層發出,到哪一層接收。相當於每經過一層,都會外包一層頭部資訊。鏈路層的資料分為兩種 廣播包的頭部資訊固定,為乙個特定值 資料報的頭部資訊是隨機數,這個隨機數是每次連線後產生的,斷開後再次連線,就會改變 在資料報中,除去頭部的隨機數,通過llid來分...

理解和使用Json資料格式

花括號 括起來的資料是乙個物件。中括號 括起來的資料們是乙個陣列。簡單看看這個json資料。cmds cmd1 cmd2 cmd3 obj2 首先先看清你看到的是乙個物件還是乙個陣列。obj1 和 obj2 就是物件。而物件中的files 和 cmds 就是陣列。物件中的元素可以使用 key val...

關於MNIST資料格式和matlab讀取問題

剛剛加入csdn,獻上自己關於mnist的理解和簡單地操作 因為一些格式的問題,matlab不識別這種檔案,所以我自己用二進位制檔案閱覽器檢視之後,重新生成了二進位制檔案,在此過程中,只是變換了檔案格式,沒有破壞原始資料。稍後我會穿上新的訓練樣本和測試樣本。mnist一共有四個檔案 1.train ...