uint32_t conn_mw_ble_gap_scan_start(uint8_t const * const p_rx_buf, uint32_t rx_buf_len, uint8_t * const p_tx_buf, uint32_t * const p_tx_buf_len) { SER_ASSERT_NOT_NULL(p_rx_buf); SER_ASSERT_NOT_NULL(p_tx_buf); SER_ASSERT_NOT_NULL(p_tx_buf_len); ble_gap_addr_t * pp_addr_tab[BLE_GAP_WHITELIST_ADDR_MAX_COUNT]; ble_gap_irk_t * pp_irk_tab[BLE_GAP_WHITELIST_IRK_MAX_COUNT]; ble_gap_whitelist_t whitelist; whitelist.addr_count = BLE_GAP_WHITELIST_ADDR_MAX_COUNT; whitelist.pp_addrs = pp_addr_tab; whitelist.irk_count = BLE_GAP_WHITELIST_IRK_MAX_COUNT; whitelist.pp_irks = pp_irk_tab; ble_gap_scan_params_t scan_params; scan_params.p_whitelist = &whitelist; ble_gap_scan_params_t * p_scan_params = &scan_params; uint32_t err_code = NRF_SUCCESS; uint32_t sd_err_code; err_code = ble_gap_scan_start_req_dec(p_rx_buf, rx_buf_len, &p_scan_params); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_scan_start(p_scan_params); err_code = ble_gap_scan_start_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t conn_mw_ble_gap_scan_start(uint8_t const * const p_rx_buf, uint32_t rx_buf_len, uint8_t * const p_tx_buf, uint32_t * const p_tx_buf_len) { SER_ASSERT_NOT_NULL(p_rx_buf); SER_ASSERT_NOT_NULL(p_tx_buf); SER_ASSERT_NOT_NULL(p_tx_buf_len); uint32_t err_code = NRF_SUCCESS; uint32_t sd_err_code; ble_gap_scan_params_t scan_params; ble_gap_scan_params_t * p_scan_params = &scan_params; #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 ble_data_t adv_report_buffer; ble_data_t * p_adv_report_buffer = &adv_report_buffer; mp_scan_data = conn_ble_gap_ble_data_buf_alloc(SCAN_BUFFER_ID); adv_report_buffer.p_data = mp_scan_data; adv_report_buffer.len = SER_MAX_ADV_DATA; err_code = ble_gap_scan_start_req_dec(p_rx_buf, rx_buf_len, &p_scan_params, &p_adv_report_buffer); SER_ASSERT(err_code == NRF_SUCCESS, err_code); if (p_adv_report_buffer) { conn_ble_gap_scan_data_set(p_adv_report_buffer->p_data); } sd_err_code = sd_ble_gap_scan_start(p_scan_params, p_adv_report_buffer); if (sd_err_code != NRF_SUCCESS) { conn_ble_gap_scan_data_unset(true); } err_code = ble_gap_scan_start_rsp_enc(sd_err_code, p_adv_report_buffer, p_tx_buf, p_tx_buf_len); #else err_code = ble_gap_scan_start_req_dec(p_rx_buf, rx_buf_len, &p_scan_params); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_scan_start(p_scan_params); err_code = ble_gap_scan_start_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len); #endif SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }