本文轉載自“甜甜的大香瓜”的博客
一、簡介
本篇以SimpleBLECentral工程爲例,解析CC2541作爲主機時是如何發現從機的服務和特徵值的。
二、實驗平臺
協議棧版本:BLE-CC254x-1.3.2
編譯軟件:IAR 8.20.2
硬件平臺:smart RF開發板
三、服務和特徵值
一個工程可以有多個服務,比如按鍵服務、心率計服務、溫度計服務。
一個服務可以有多個特徵值,特徵值是主從機傳輸數據的媒介,像運人渡河的小船。
如果主機要想獲得按鍵服務的特徵值,必須先發現按鍵服務、再獲得按鍵服務的特徵值句柄、再根據特徵值句柄獲取特徵值。
四、代碼解析
1、啓動發現服務事件
在連接完成時,主機會判斷是否之前獲取過特徵值句柄,如果沒有獲取到,則調用定時器進“START_DISCOVERY_EVT事件”開始發現服務。
2、發現服務事件
3、發現服務的函數
默認發現的是UUID爲FFF0的服務。
4、發現服務的回調函數
發現服務後,就會進入該函數。
此時可以通過特徵值的UUID來讀取對應的特徵值句柄。默認的是讀取CHAR1的特徵值句柄。
5、獲得特徵值句柄
讀到特徵值句柄後會再次進入該回調函數,此時將特徵值句柄保存下來,隨口可用來操作特徵值。