Struct lora_e5_bsp::RfSwitch
source · [−]pub struct RfSwitch { /* private fields */ }Expand description
RF switch
Implementations
sourceimpl RfSwitch
impl RfSwitch
sourcepub fn new(a4: A4, a5: A5, cs: &CriticalSection) -> RfSwitch
pub fn new(a4: A4, a5: A5, cs: &CriticalSection) -> RfSwitch
Create a new RfSwitch struct from GPIOs.
Example
use lora_e5_bsp::{
hal::{cortex_m, gpio::PortA, pac},
RfSwitch,
};
let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();
let gpioa: PortA = PortA::split(dp.GPIOA, &mut dp.RCC);
let rfs: RfSwitch = cortex_m::interrupt::free(|cs| RfSwitch::new(gpioa.a4, gpioa.a5, cs));sourcepub unsafe fn steal() -> Self
pub unsafe fn steal() -> Self
Steal the RF switch from whatever is currently using it.
Safety
- Ensure that the code stealing the RF switch has exclusive access. Singleton checks are bypassed with this method.
- You must set up the RF switch pins. No setup will occur when using this method.
Example
use lora_e5_bsp::{
hal::{
cortex_m,
gpio::{pins, Output, PortA},
pac,
},
RfSwitch,
};
let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();
let pa: PortA = PortA::split(dp.GPIOA, &mut dp.RCC);
cortex_m::interrupt::free(|cs| {
let _: Output<pins::A4> = Output::default(pa.a4, cs);
let _: Output<pins::A5> = Output::default(pa.a5, cs);
});
// safety:
// 1. we have exclusive access to the underlying pins
// 2. the pins have been setup
let rfs: RfSwitch = unsafe { RfSwitch::steal() };sourcepub fn set_rx(&mut self)
pub fn set_rx(&mut self)
Set the RF switch to receive.
Example
use lora_e5_bsp::{
hal::{cortex_m, gpio::PortA, pac},
RfSwitch,
};
let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();
let gpioa: PortA = PortA::split(dp.GPIOA, &mut dp.RCC);
let mut rfs: RfSwitch = cortex_m::interrupt::free(|cs| RfSwitch::new(gpioa.a4, gpioa.a5, cs));
rfs.set_rx();sourcepub fn set_tx_hp(&mut self)
pub fn set_tx_hp(&mut self)
Set the RF switch to high power transmit.
Example
use lora_e5_bsp::{
hal::{cortex_m, gpio::PortA, pac},
RfSwitch,
};
let mut dp: pac::Peripherals = pac::Peripherals::take().unwrap();
let gpioa: PortA = PortA::split(dp.GPIOA, &mut dp.RCC);
let mut rfs: RfSwitch = cortex_m::interrupt::free(|cs| RfSwitch::new(gpioa.a4, gpioa.a5, cs));
rfs.set_tx_hp();Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for RfSwitch
impl Send for RfSwitch
impl Sync for RfSwitch
impl Unpin for RfSwitch
impl UnwindSafe for RfSwitch
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more