pub struct RfSwitch { /* private fields */ }Expand description
RF switch
Implementations§
Source§impl 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 Freeze for RfSwitch
impl RefUnwindSafe for RfSwitch
impl Send for RfSwitch
impl Sync for RfSwitch
impl Unpin for RfSwitch
impl UnwindSafe for RfSwitch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more