(原創)使用nRF51822/nRF51422創建一個簡單的BLE應用 ---入門實例手冊(中文)之三


3 最小BLE應用簡介

這個章節簡單介紹了在nRF51822芯片上使用S110 SoftDevice協議棧構建一個最小的BLE應用的過程。

3.1初始化介紹

有一些初始化函數通常在執行一個BLE應用之前調用,下面的表格中列出了這些初始化調用函數,在后面將對它們進行詳細的介紹。

 

大部分采用數據結構的形式作為輸入參數,這些數據結構包含一系列的配置和選項信息,閱讀代碼中的注釋能更好地理解它們。

在廣播開始之后,你就進入了main函數中的for循環。

3.2 協議棧S110 SoftDevice

為了使用獨特的射頻特性,你必須使能S110 SoftDevice協議棧。見《S110 nRF51822 SoftDevice Specification》(S110 nRF51822  SoftDevice協議棧說明書)中對硬件資源的詳細需求。

3.3 廣播

用於廣播的數據結構如下:

        ble_gap.h      中  ble_gap_conn_sec_mode_t

        ble_advdata.h   中  ble_advdata_t

err_code = sd_ble_gap_device_name_set(&device_name_sec_mode, DEVICE_NAME

strlen(DEVICE_NAME));

err_code = sd_ble_gap_appearance_set(BLE_APPEARANCE_UNKNOWN);

err_code = ble_advdata_set(&advdata);

注意:傳遞給sd_ble_gap_device_name_set()的安全模式僅適於設備本身的名字。

 

廣播參數(ble_gap_adv_params_t)必須通過sd_ble_gap_adv_start()來傳遞:

err_code = sd_ble_gap_adv_start(&m_adv_params);

3.4 連接參數

SDK提供了一個名為ble_conn_params的模塊用於管理連接參數更新,它通過SoftDevice API進行處理,包括請求的時間和第一次請求被拒絕再發送一個新的請求。

在初始化結構體ble_conn_params_init_t中,定義了更新過程的有關參數,例如,是否開始連接,什么開始寫入一個特定的CCCD,是否使用連接參數,發送更新請求的延時等等。

在初始化函數ble_conn_params_init()中,使用封裝了初始化連接參數(ble_gap_conn_params_t)的結構體ble_conn_params_init_t作為輸入參數進行連接參數初始化。

err_code = ble_conn_params_init(&cp_init);

       ble_conn_params SDK模塊確保與主機(集中器)的連接參數相適應,如果不適應,外圍設備將要求更改連接參數,超過設定的更新次數都沒有更新成功后,它就會斷開連接或者根據設置返回一個事件到應用層。

3.5 服務

服務可以通過sd_ble_gatts_service_add()進行添加,最好不要在應用層代碼中建立服務,而是在一個單獨的文件中建立服務。一個服務不是主服務就是次服務,但是在通常實際的應用中大部分使用主服務。變量service_uuid就是你想用於服務的UUID。變量service_handle是一個輸出變量,當創建一個服務的時候將會返回一個唯一的句柄值,這個句柄可以在以后用於識別不同的服務。

err_code = sd_ble_gatts_service_add( BLE_GATTS_SVC_TYPE_PRIMARY,

&p_lbs->service_uuid,

&p_lbs->service_handle );

3.6 特性

       特性可以通過sd_ble_gatts_characteristic_add()函數進行添加,它有4個參數。為了代碼清晰,這個函數應該只能出現在服務文件中,而不能出現在應用層中。

第1個參數是特性要加入的服務的句柄,第2個參數是特性的結構體,它是一個全局變量,它包含了特性可能用到的性質(讀,寫,通知等)。第3個參數是值屬性的描述,它包含了它的UUID,長度和初始值。第4個參數是返回的特性和描述符的唯一句柄,這個句柄可以在以后用於識別不同的特性。例如,在寫事件中用於識別哪一個特性被寫入。

err_code = sd_ble_gatts_characteristic_add( p_lbs->service_handle, &char_md,

&attr_char_value,

&p_lbs->led_char_handles);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM