summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nrf-softdevice/src/ble/mod.rs21
-rw-r--r--nrf-softdevice/src/ble/types.rs2
2 files changed, 22 insertions, 1 deletions
diff --git a/nrf-softdevice/src/ble/mod.rs b/nrf-softdevice/src/ble/mod.rs
index 1dc6164..f6b593c 100644
--- a/nrf-softdevice/src/ble/mod.rs
+++ b/nrf-softdevice/src/ble/mod.rs
@@ -23,3 +23,24 @@ pub mod gatt_server;
#[cfg(feature = "ble-l2cap")]
pub mod l2cap;
+
+use core::mem;
+
+use crate::util::*;
+use crate::{raw, RawError, Softdevice};
+
+pub fn get_address(sd: &Softdevice) -> Address {
+ unsafe {
+ let mut addr: raw::ble_gap_addr_t = mem::zeroed();
+ let ret = raw::sd_ble_gap_addr_get(&mut addr);
+ unwrap!(RawError::convert(ret), "sd_ble_gap_addr_get");
+ Address { inner: addr }
+ }
+}
+
+pub fn set_address(sd: &Softdevice, addr: &Address) {
+ unsafe {
+ let ret = raw::sd_ble_gap_addr_set(&addr.inner);
+ unwrap!(RawError::convert(ret), "sd_ble_gap_addr_set");
+ }
+}
diff --git a/nrf-softdevice/src/ble/types.rs b/nrf-softdevice/src/ble/types.rs
index ab0069d..17f3d41 100644
--- a/nrf-softdevice/src/ble/types.rs
+++ b/nrf-softdevice/src/ble/types.rs
@@ -85,7 +85,7 @@ impl Role {
#[repr(transparent)]
pub struct Address {
- inner: raw::ble_gap_addr_t,
+ pub(crate) inner: raw::ble_gap_addr_t,
}
impl Address {