廣播與掃描事件

在Nordic SDK中,可以很方便的配置設(shè)備的廣播時間。當(dāng)廣播超時后,會有哪些處理呢?下面就來介紹下。

1. 廣播事件

廣播相關(guān)的配置在advertising_init()函數(shù)中完成。包含廣播數(shù)據(jù),廣播相關(guān)模式和時間配置,回調(diào)函數(shù)的配置。

1.1 廣播數(shù)據(jù)

SDK中的廣播數(shù)據(jù)內(nèi)容參考ble_advdata_t結(jié)構(gòu)體??砂O(shè)備名稱,外觀,UUID,廠商自定義數(shù)據(jù)等。

1.2 廣播時間配置

廣播時間配置,兩個重要的時間:廣播間隔,廣播時間。
廣播間隔表示兩次廣播的時間間隔,一般為200-1000ms。廣播時間為整個廣播階段的時間,一般為幾十到上百秒。

/**< The advertising interval (in units of 0.625 ms. This value corresponds to 187.5 ms). */
#define APP_ADV_INTERVAL                    300  

/**< The advertising duration (180 seconds) in units of 10 milliseconds. */
#define APP_ADV_DURATION                    18000

1.3 回調(diào)函數(shù)

回調(diào)函數(shù)在初始化函數(shù)中設(shè)置,后續(xù)廣播相關(guān)的事件處理都在此函數(shù)中處理?;卣{(diào)函數(shù)中常用的事件有兩個:BLE_ADV_EVT_FAST,BLE_ADV_EVT_IDLE。
前者表示廣播開始,一般不常用。后者標(biāo)示廣播結(jié)束,即APP_ADV_DURATION超時。此時可以讓設(shè)備進入低功耗狀態(tài),也可以讓設(shè)備繼續(xù)進行廣播。


2. 掃描事件

掃描功能的初始化在scan_init()函數(shù)中進行,主要包含:基本參數(shù)配置、掃描過濾配置。

2.1 基本參數(shù)

掃描相關(guān)的參數(shù)一般打包為一個結(jié)構(gòu)體,如下所示。

/**< Scan parameters requested for scanning and connection. */
static ble_gap_scan_params_t const m_scan_param =
{
    .active        = 0x01,
    .interval      = NRF_BLE_SCAN_SCAN_INTERVAL,
    .window        = NRF_BLE_SCAN_SCAN_WINDOW,
    .filter_policy = BLE_GAP_SCAN_FP_WHITELIST,
    .timeout       = SCAN_DURATION_WITELIST,
    .scan_phys     = BLE_GAP_PHY_1MBPS,
};

初始化時,還會配置一個回調(diào)函數(shù),用于處理掃描過程中的事件。全面的事件介紹可在枚舉nrf_ble_scan_evt_t中查看。產(chǎn)品研發(fā)中,可能會用部分事件處理,下面簡單說明。
NRF_BLE_SCAN_EVT_FILTER_MATCH:初始化使能掃描過濾后,掃描到符合條件的設(shè)備,會產(chǎn)生此事件。
NRF_BLE_SCAN_EVT_SCAN_TIMEOUT:掃描超時后,會產(chǎn)生此事件。此事件處理中,可以繼續(xù)掃描,也可以不做處理。

2.2 掃描過濾

掃描支持多種過濾,具體選項可在nrf_ble_scan_filter_type_t結(jié)構(gòu)體中查看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容