本文的目標 :
- 了解BLE之間設備是如何工作的,有哪些主要流程,為后續深入BLE協議分析做准備。
現在以HRS(Heart Rate Sensor)為例來說明。硬件:Heart Rate Sensor,手機
-
Heart Rate Sensor:負責檢測心率等信息;
-
手機:同HRS通過BLE通信,搜集並展現出心率等信息
二者對應關系如下:
從協議的角度講,Heart Rate Sensor必須提供兩種服務(藍牙規范所定義):
-
Heart Rate Service:提供心率等服務,
-
Device Information Service提供設備信息服務。
連接圖:
手機就是充當Collector的角色;為了了解手機與HRS之間的交互流程,先來看手機端的操作:
手機操作經過三步:
-
搜索發現設備 My BLE,其藍牙地址是01:88:BE:51:41:44,此時手機只知道周圍有一個BLE設備;
-
連接該設備,並搜索發現設備提供的服務,發現其提供兩個服務:Heart Rate Service和Device Information Service
-
查看Heart Rate Service提供的服務和操作方法,可以看到,提供SensorLocation,HeartRate測量以及EnergyExpended功能,並且有一個STAR TNOTIFY開關。打開開關就能收到HeartRate Sensor通知的心率值,圖中的70bpm
這個過程如下:
Heart Rate Sensor對外廣播,手機掃描搜索周圍設備,並在收到Heart Rate Sensor的廣播數據后發起連接,連接成功后搜索其提供的服務,並發現HeartRate Sensor服務的特性和操作方法,進而獲取心率監測。
大致過程如下:
以下是整個過程對應的數據包,從中也可以印證:
廣播與連接:
2. 鏈路控制,例如更新鏈路參數
3. 發現服務(service),發現服務是一個過程,可能通過多次交互才能完成
4. 發現服務的特性(characteristics),發現特性也是一個過程,可能通過多次交互才能完成
5. 操作服務,這里包括手機讀或者寫Heartrate sesnsor提供的服務特性,Heart rate sesnsor的主動通知(Notify)方法:
6. 斷開連接
以上這個過程是一個典型的BLE設備之間的交互過程。幾個階段說明如下:(a)廣播與掃描:
一個設備要讓其他設備能發現,則必須向外廣播,而一個設備如果對廣播者感興趣,想進一步了解,則可以通過掃描該設備來進一步獲取該設備提供的信息,通過這個階段,掃描的設備已經基本清楚了廣播設備信息,以及提供的能力,從而可以判斷是否連接該設備。
(b)建立連接:當掃描者想與廣播者可以建立連接,那么設備之間就會有一個建立連接請求。
1) 在建立連接后,如果設備之間要設置一些連接信息或者獲取版本信息等等,這可以提供鏈路層定義的數據格式來發送數據實現,例如master更改連接參數,slave發起更新連接參數請求等等
2) 為了無線安全,例如數據加密,對數據完整性驗證,以及數據在傳送過程中有沒有被修改等,設備之間可以發起配對流程,該過程是可選實現的。
3) 建立連接請求后,為了能獲取設備提供的服務,讓客戶端能操作設備,那么就需要經歷一個設備服務發現過程,只有在這一步后,才能知道設備提供服務的具體操作方法以及操作handle。
4) 知道了設備的具體操作方法,就可以操作設備
5) 最后,設備任意一方可以發起斷開連接請求。
整個流程包括了廣播通道上的PDU(廣播和連接請求),以及數據通道上的PDU (L2CAP,ATT/GATT),后面具體章節將根據PDU類型來分析具體流程。
更多更新在微信公眾號:
