DA14580做主机
一、主機通訊過程包括:掃描、發出連接請求、建立連接、發現服務、交換數據。
1、掃描過程:
?應用層將GAPM_START_SCAN_CMD消息發送到堆棧,設備將開始掃描過程,并報告當前正在進行廣播的所有可用設備。廣播事件將被報告給.app_on_adv_report_ind指針指向的函數,即user_on_adv_report_ind( )函數。
?在user_on_adv_report_ind()的param參數里,可獲得廣播設備的地址和廣播數據,通過比較廣播數據或地址
?來選擇需要連接的廣播設備。
?
2、發出連接請求:
?在想要連接特定設備后,使用app_easy_gap_start_connection_to_set()來設置連接參數(廣播者地址、連接間隔、
監督超時、等等),
然后調用user_gapm_cancel()以取消掃描,并在掃描完成后使用app_easy_gap_start_connection_to()來發出
?連接請求消息GAPM_START_CONNECTION_CMD。
?
3、建立連接:
?當從機收到主機的連接請求后,如果確定要和主機連接,則它們之間將建立連接操作,這些都是協議棧自動完成的。
如果連接建立成功的話,主機將觸發GAPC_CONNECTION_REQ_IND消息。
?最終會調用gapc_connection_req_ind_handler()函數,該函數主要處理來自GAP的連接完成事件。
?函數user_on_connection()用來使能配置文件。
4、發現服務:
?函數執行過程
user_on_connection() ->app_prf_enable()?-> user_sps_enable()
->發送消息SPS_CLIENT_ENABLE_REQ
->回調 sps_client_enable_req_handler( )
-> prf_disc_svc_send_128( )
->發送消息GATTC_DISC_CMD ,類型為GATTC_DISC_BY_UUID_SVC即通過UUID發現服務,如果發現和給出的UUID相
匹配的服務,則會觸發GATTC_DISC_SVC_IND?消息然后調用gattc_disc_svc_ind_handler( )
-> 發現服務操作完成后自動觸發
GATTC_CMP_EVT消息 -> gattc_cmp_evt_handler( )
-> prf_disc_char_all_send()
->發送消息GATTC_DISC_CMD ,
類型為GATTC_DISC_ALL_CHAR即發現該服務所有的特征,如果發現特征則觸發GATTC_DISC_CHAR_IND消息
-> gattc_disc_char_ind_handler( )
->發現特征操作完成后自動觸GATTC_CMP_EVT消息
?-> gattc_cmp_evt_handler( )
?-> prf_disc_char_desc_send( )->發送消息GATTC_DISC_CMD ,
?類型為GATTC_DISC_DESC_CHAR即發現特征描述,如果發現特征描述則觸發GATTC_DISC_CHAR_DESC_IND消息
?->gattc_disc_char_desc_ind_handler( )
?->發現特征描述操作完成后自動觸GATTC_CMP_EVT消息
?-> gattc_cmp_evt_handler( )
?->如果所有的特征描述都發現完成,則調用sps_client_enable_cfm_send( )
?來使能從機特征配置,到這里發現服務的過程就結束了。
?
5、交換數據:
?主機通過服務提供的特征向從機寫入或讀出數據。
從機通過通知主機,將數據發送給主機
總結
以上是生活随笔為你收集整理的DA14580做主机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DA14580开发血迹12--完整Pro
- 下一篇: nRF52832 — 连接指定name、