CC2540主機事件回調函數

CC2540的主機程序爲我們提供了事件回調函數,即static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent ),所謂的回調函數是在GAP狀態發生改變時調用,用來對GAP初始化、設備發現、設備連接、斷開連接等事件進行處理。該函數是在設備初始化階段註冊的。

我們跟蹤simpleBLERoleCB進行查看:



也就是在這個事件處理的過程中一共註冊了兩個回調函數,分別是RSSI回調和事件回調。我們主要看事件回調函數。



回調函數採用switch語句實現,現在我們對他的各個情況進行分析。

1、GAP_DEVICE_INIT_DONE_EVENT



初始化完成事件,它是在GAPCentralRole_StartDevice初始化完成後執行的:


2、GAP_DEVICE_INFO_EVENT:



第一個if語句開啓UUID過濾器。第二個if語句在接收到的pEvtData中查找SIMPLEPROFILE_SERV_UUID,如果查找到就保留地址和類型。需要提醒的一點是在這個函數後面我們也可以提取pEvtData中的其他數據。比如可以把一些數據放到廣播中發出來,然後再這個地方進行接收。這就免去了連接的麻煩。

3、GAP_DEVICE_DISCOVERY_EVENT:



在第一個if語句中,如果沒有開啓UUID的過濾器,就把底層接收到到的消息傳到列表中。消息中包含着從機的地址、類型、數據信息等。下面的代碼是在LCD中顯示。

4、GAP_LINK_ESTABLISHED_EVENT:



如果設備連接成功,那麼就把參數改成設備連接成功的參數並且如果句柄值沒有讀到過,則進行發現服務事件。如果連接失敗,就把連接參數改爲空閒的狀態。

5、GAP_LINK_TERMINATED_EVENT



連接參數全部設爲空閒時的值。

6、GAP_LINK_PARAM_UPDATE_EVENT



進行參數更新,在GAPCentralRole_UpdateLink函數執行後調用。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章