平台:nordic nrf5283x系列
SDK版本:nRF5 17.02
問題:在主機中根據示例設定short_name filter,正常編譯運作,但過濾政策不起作用
解決:通過咨詢nordic社群,獲得解答:nordic Q&A連結 : https://devzone.nordicsemi.com/f/nordic-q-a/74026/how-to-filter-the-scanned-broadcasters-by-short-name
1.確定正确設定了從機廣播設定(advertising_init)中的裝置名稱類型(name_type)以及長度
2.確定正确設定了主機掃描政策,根據示例中的(name filter)改即可
3.確定nrf_ble_scan_filter_set函數傳遞參數中p_data結構體變量類型是nrf_ble_scan_short_name_t,即使用nrf_ble_scan_short_name_t結構體變量作為傳遞給p_data的變量類型,并正确初始化
4.關鍵:在給.p_short_name指派時,比從機short name多一個字元,
舉例:
nrf_ble_scan_short_name_t m_short_name_filter =
{
//從機裝置名為"Nordic_UART",應該按如下方式指派
.p_short_name = “Nordic_UART1”,
.short_name_min_len = 11
};
//向掃描器添加裝置短名稱過濾器
err_code = nrf_ble_scan_filter_set(&m_scan,
SCAN_SHORT_NAME_FILTER,
&m_short_name_filter);
APP_ERROR_CHECK(err_code);
//使能過濾器
err_code = nrf_ble_scan_filters_enable(&m_scan,
NRF_BLE_SCAN_SHORT_NAME_FILTER,
false);
APP_ERROR_CHECK(err_code);