1. 程式人生 > 其它 >CH582 CH573 CH579 BLE indication 屬性

CH582 CH573 CH579 BLE indication 屬性

WCH提供CH582 CH573 CH579的SDK,SDK裡面包含了各種協議支援,其中就包含BLE。BLE協議裡,WCH提供了很多例程。其中simple peripheral例程是最為廣泛使用的一個,裡面提供了BLE最基本的各種read, write,notify屬性的特徵值,唯獨沒有indication屬性的特徵值。Indication 屬性和notify屬性類似,但又不一樣,它是需要BLE Client裝置收到資料後回覆確認的一種機制。

在ATT層協議框架內,擁有一組屬性的裝置稱為服務端(Server),讀寫該屬性值的裝置稱為客戶端(Client),Server和Client通過ATT PDU進行互動。屬性協議共有6種:

主機RX 從機TX 方向:

通知(Notify):從機端上傳資料給主機,不需要主機回覆一個響應

指示(Indicate):從機端上傳資料給主機,需要主機端發一個確認給伺服器

通知和指示之間不同之處在於指示有應用層上的確認,而通知沒有。

從機裝置流程

1. 開啟廣播

2. 被主機成功連線,並互動連線引數

3. 等待主機獲取服務

4. 等待主機成功使能notify功能

5. 從機給主機發送相應的notify資料包

本文基於WCH CH582  的SDK 的simple peripheral 例程實現indication。本文提供的方式適用於所有WCH的BLE系列的晶片。

1       BLE 特徵值的indication屬性

BLE特徵值的indication是由server端主動向client端傳送資料的一種方式,和notification方式類似,但indication不一樣的地方是需要client端收到資料後回覆confirm包給server端。這些行為都是在GATT層完成,並可以通知client應用層對方成功接收資料。由於有自動確認機制,indication在很多應用層級的協議制定中有比較廣泛應用。

2       CH582 indication的實現

本文基於CH582的SDK V1.60版本的simple peripheral 例程實現indication,在simple GATT service中的特徵值4上修改Notify屬性為indication

具體實現參考這個部落格,附帶原始碼連結

CH582晶片控制代碼指示\確認(Handle Value Indication\Confirmation) - SweetTea_lllpc - 部落格園 (cnblogs.com)