uint32_t conn_mw_ble_gap_adv_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_addr_t * p_addresses[BLE_GAP_WHITELIST_ADDR_MAX_COUNT]; ble_gap_addr_t addresses[BLE_GAP_WHITELIST_ADDR_MAX_COUNT]; ble_gap_irk_t * p_irks[BLE_GAP_WHITELIST_IRK_MAX_COUNT]; ble_gap_irk_t irks[BLE_GAP_WHITELIST_IRK_MAX_COUNT]; ble_gap_addr_t peer_addr; ble_gap_whitelist_t whitelist; ble_gap_adv_params_t adv_params; ble_gap_adv_params_t * p_adv_params; uint32_t i = 0; for (i = 0; i < BLE_GAP_WHITELIST_ADDR_MAX_COUNT; i++) { p_addresses[i] = &(addresses[i]); } for (i = 0; i < BLE_GAP_WHITELIST_IRK_MAX_COUNT; i++) { p_irks[i] = &(irks[i]); } whitelist.pp_addrs = &p_addresses[0]; whitelist.pp_irks = &p_irks[0]; adv_params.p_peer_addr = &peer_addr; adv_params.p_whitelist = &whitelist; p_adv_params = &adv_params; err_code = ble_gap_adv_start_req_dec(p_rx_buf, rx_buf_len, &p_adv_params); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_adv_start(p_adv_params); err_code = ble_gap_adv_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_adv_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; #if NRF_SD_BLE_API_VERSION > 5 uint8_t conn_cfg_tag; uint8_t adv_handle; err_code = ble_gap_adv_start_req_dec(p_rx_buf, rx_buf_len, &adv_handle, &conn_cfg_tag); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_adv_start(adv_handle, conn_cfg_tag); #else ble_gap_addr_t peer_addr; ble_gap_adv_params_t adv_params; ble_gap_adv_params_t * p_adv_params; adv_params.p_peer_addr = &peer_addr; p_adv_params = &adv_params; #if NRF_SD_BLE_API_VERSION >= 4 uint8_t conn_cfg_tag; err_code = ble_gap_adv_start_req_dec(p_rx_buf, rx_buf_len, &p_adv_params, &conn_cfg_tag); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_adv_start(p_adv_params, conn_cfg_tag); #else err_code = ble_gap_adv_start_req_dec(p_rx_buf, rx_buf_len, &p_adv_params); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_adv_start(p_adv_params); #endif #endif err_code = ble_gap_adv_start_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }