【BLE】CC2541之發現服務與特徵值
阿新 • • 發佈:2019-02-03
本篇博文最後修改時間:2017年01月06日,11:06。
一、簡介
本文以SimpleBLECentral工程為例,解析CC2541作為主機時是如何發現從機的服務和特徵值的。
二、實驗平臺
協議棧版本:BLE-CC254x-1.4.0
編譯軟體:IAR 8.20.2
硬體平臺:Smart RF(主晶片CC2541)
博主:甜甜的大香瓜
宣告:喝水不忘挖井人,轉載請註明出處。
原文地址:http://blog.csdn.NET/feilusia
聯絡方式:[email protected]
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜BLE之Android群:541462902
香瓜微控制器之STM8/STM32群:164311667甜甜的大香瓜的小店(淘寶店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i 四、實驗前提 1、在進行本文步驟前,請先閱讀以下博文: 暫無 2、在進行本文步驟前,請先實現以下博文:
暫無
五、基礎知識
1、服務和特徵值是什麼?
答:
一個工程可以有多個服務,比如按鍵服務、心率計服務、溫度計服務。
一個服務可以有多個特徵值,特徵值是主從機傳輸資料的媒介,像運人渡河的小船。
如果主機要想獲得按鍵服務的特徵值,必須先發現按鍵服務、再獲得按鍵服務的特徵值控制代碼、再根據特徵值控制代碼獲取特徵值。
六、程式碼解析
1、啟動發現服務事件
在連線完成時,主機會判斷是否之前獲取過特徵值控制代碼,如果沒有獲取到,則呼叫定時器進“START_DISCOVERY_EVT事件”開始發現服務。
2、發現服務事件
3、發現服務的函式
預設發現的是UUID為FFF0的服務。
4、發現服務的回撥函式
發現服務後,就會進入該函式。
此時可以通過特徵值的UUID來讀取對應的特徵值控制代碼。預設的是讀取CHAR1的特徵值控制代碼。
5、獲得特徵值控制代碼
讀到特徵值控制代碼後會再次進入該回調函式,此時將特徵值控制代碼儲存下來,隨口可用來操作特徵值。