uint32_t conn_mw_ble_gap_addr_set(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 addr; ble_gap_addr_t * p_addr = &addr; uint32_t err_code = NRF_SUCCESS; uint32_t sd_err_code; err_code = ble_gap_addr_set_req_dec(p_rx_buf, rx_buf_len, &p_addr); SER_ASSERT(err_code == NRF_SUCCESS, err_code); sd_err_code = sd_ble_gap_addr_set(p_addr); err_code = ble_gap_addr_set_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
static uint32_t gap_address_change(void) { uint32_t err_code; ble_gap_addr_t addr; #ifdef NRF51 err_code = sd_ble_gap_address_get(&addr); #elif NRF52 err_code = sd_ble_gap_addr_get(&addr); #else #endif VERIFY_SUCCESS(err_code); // Increase the BLE address by one when advertising openly. addr.addr[0] += 1; #ifdef NRF51 err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &addr); #elif NRF52 err_code = sd_ble_gap_addr_set(&addr); #else #endif VERIFY_SUCCESS(err_code); return NRF_SUCCESS; }
ret_code_t im_id_addr_set(ble_gap_addr_t const * p_addr) { #if (NRF_SD_BLE_API_VERSION == 2) ret_code_t ret; ble_gap_addr_t current_addr; NRF_PM_DEBUG_CHECK(p_addr != NULL); (void) sd_ble_gap_address_get(¤t_addr); ret = address_set_v2(BLE_GAP_ADDR_CYCLE_MODE_NONE, (ble_gap_addr_t *)p_addr); if (ret != NRF_SUCCESS) { return ret; } if ( current_addr.addr_type == BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE || current_addr.addr_type == BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE) { // If currently using privacy, it must be re-enabled. // We force AUTO when privacy is enabled. ret = address_set_v2(BLE_GAP_ADDR_CYCLE_MODE_AUTO, ¤t_addr); if (ret != NRF_SUCCESS) { return ret; } } memcpy(&m_current_id_addr, p_addr, sizeof(ble_gap_addr_t)); return NRF_SUCCESS; #else return sd_ble_gap_addr_set(p_addr); #endif }