diff options
author | Brian Cully <bjc@kublai.com> | 2019-08-15 20:44:51 -0400 |
---|---|---|
committer | Brian Cully <bjc@kublai.com> | 2019-08-15 20:44:51 -0400 |
commit | da405029113f9c188313b9477f4dc13aa3ab52f9 (patch) | |
tree | 058dcca7068d597e572112f0c182fd3b701a9d59 /ble/src/ble.rs | |
parent | 101a0859612cbf40364d198eea60b9ae934f721a (diff) | |
download | bleusb-da405029113f9c188313b9477f4dc13aa3ab52f9.tar.gz bleusb-da405029113f9c188313b9477f4dc13aa3ab52f9.zip |
More WIP for btle comms.
Diffstat (limited to 'ble/src/ble.rs')
-rw-r--r-- | ble/src/ble.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ble/src/ble.rs b/ble/src/ble.rs new file mode 100644 index 0000000..e5f16cb --- /dev/null +++ b/ble/src/ble.rs @@ -0,0 +1,28 @@ +use nrf52840_hal::target::{FICR, RADIO, TIMER0}; +use rubble::link::{AddressKind, DeviceAddress, HardwareInterface, LinkLayer, MIN_PDU_BUF}; +use rubble_nrf52::{radio::BleRadio, timer::BleTimer}; + +struct NRF52840 {} +impl HardwareInterface for NRF52840 { + type Timer = BleTimer<TIMER0>; + type Tx = BleRadio; +} + +pub fn setup(radio: RADIO, timer: TIMER0, ficr: FICR) { + // make sure hfclock is started for timer0 to work at the right + // resolution. + let ble_timer = BleTimer::init(timer); + let mut devaddr = [0u8; 6]; + let devaddr_lo = ficr.deviceaddr[0].read().bits(); + let devaddr_hi = ficr.deviceaddr[1].read().bits(); + devaddr[..4].clone_from_slice(&devaddr_lo.to_le_bytes()); + devaddr[4..].clone_from_slice(&devaddr_hi.to_le_bytes()); + + let addrkind = if ficr.deviceaddrtype.read().deviceaddrtype().is_public() { + AddressKind::Public + } else { + AddressKind::Random + }; + let addr = DeviceAddress::new(devaddr, addrkind); + let mut _ll = LinkLayer::<NRF52840>::new(addr, ble_timer); +} |