天天看點

nordic/nrf52 SDK主機設定short name filter(簡稱過慮)

平台: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);