uint32_t conn_mw_ble_gap_addr_get(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_get_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_get(p_addr); err_code = ble_gap_addr_get_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len, p_addr); 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; }
/** * @brief Function for encoding device address to Bluetooth Carrier Configuration EP record. * * This fuction is used to encode device address to Bluetooth Carrier Configuration EP record. * * @param[in] p_encoded_data Pointer to the buffer where encoded data will be returned. * @param[in] max_len Available memory in the buffer. * * @retval NRF_SUCCESS If the encoding was successful. * @retval NRF_ERROR_NO_MEM If available memory was not enough. * @retval NRF_ERROR_xxx If any other error occured. */ static ret_code_t nfc_ep_oob_bluetooth_device_address_encode(uint8_t * const p_encoded_data, uint16_t max_len) { ret_code_t err_code = NRF_SUCCESS; ble_gap_addr_t device_address; memset(&device_address, 0x00, sizeof(device_address)); if (NFC_EP_OOB_REC_GAP_ADDR_LEN > max_len) { return NRF_ERROR_NO_MEM; } /* Get BLE address */ #if (NRF_SD_BLE_API_VERSION == 2) err_code = sd_ble_gap_address_get(&device_address); if (err_code != NRF_SUCCESS) { return err_code; } #endif #if (NRF_SD_BLE_API_VERSION == 3) err_code = sd_ble_gap_addr_get(&device_address); if (err_code != NRF_SUCCESS) { return err_code; } #endif /* Encode Bluetooth EP device address */ memcpy(p_encoded_data, device_address.addr, NFC_EP_OOB_REC_GAP_ADDR_LEN); return NRF_SUCCESS; }
ret_code_t im_id_addr_get(ble_gap_addr_t * p_addr) { NRF_PM_DEBUG_CHECK(p_addr != NULL); #if (NRF_SD_BLE_API_VERSION == 2) memcpy(p_addr, &m_current_id_addr, sizeof(ble_gap_addr_t)); return NRF_SUCCESS; #else return sd_ble_gap_addr_get(p_addr); #endif }
static uint32_t ble_device_addr_encode(uint8_t * p_encoded_data, uint16_t * p_offset, uint16_t max_size) { uint32_t err_code; ble_gap_addr_t device_addr; // Check for buffer overflow. if (((*p_offset) + AD_TYPE_BLE_DEVICE_ADDR_SIZE) > max_size) { return NRF_ERROR_DATA_SIZE; } // Get BLE address. #if (NRF_SD_BLE_API_VERSION >= 3) err_code = sd_ble_gap_addr_get(&device_addr); #else err_code = sd_ble_gap_address_get(&device_addr); #endif VERIFY_SUCCESS(err_code); // Encode LE Bluetooth Device Address. p_encoded_data[*p_offset] = (uint8_t)(ADV_AD_TYPE_FIELD_SIZE + AD_TYPE_BLE_DEVICE_ADDR_DATA_SIZE); *p_offset += ADV_LENGTH_FIELD_SIZE; p_encoded_data[*p_offset] = BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS; *p_offset += ADV_AD_TYPE_FIELD_SIZE; memcpy(&p_encoded_data[*p_offset], &device_addr.addr[0], BLE_GAP_ADDR_LEN); *p_offset += BLE_GAP_ADDR_LEN; if (BLE_GAP_ADDR_TYPE_PUBLIC == device_addr.addr_type) { p_encoded_data[*p_offset] = AD_TYPE_BLE_DEVICE_ADDR_TYPE_PUBLIC; } else { p_encoded_data[*p_offset] = AD_TYPE_BLE_DEVICE_ADDR_TYPE_RANDOM; } *p_offset += AD_TYPE_BLE_DEVICE_ADDR_TYPE_SIZE; return NRF_SUCCESS; }
uint32_t mesh_packet_set_local_addr(mesh_packet_t* p_packet) { #ifdef SOFTDEVICE_PRESENT ble_gap_addr_t my_addr; uint32_t error_code; #if (NRF_SD_BLE_API_VERSION == 3) error_code = sd_ble_gap_addr_get(&my_addr); #else error_code = sd_ble_gap_address_get(&my_addr); #endif if (error_code != NRF_SUCCESS) { return error_code; } p_packet->header.addr_type = my_addr.addr_type; memcpy(p_packet->addr, my_addr.addr, BLE_GAP_ADDR_LEN); #else memcpy(p_packet->addr, (uint32_t*) &NRF_FICR->DEVICEADDR[0], BLE_GAP_ADDR_LEN); p_packet->header.addr_type = NRF_FICR->DEVICEADDRTYPE; #endif return NRF_SUCCESS; }