pub struct DutyCycle { /* private fields */ }Expand description
The silence a radio owes after its transmissions under a duty-cycle limit.
Record each transmission with transmitted, then ask
ready or wait_us before the next. A
limit of zero forbids transmitting, and the guard never becomes ready.
§Examples
use pamoja_lora::LinkSettings;
use pamoja_radios::duty::DutyCycle;
// SF12 at 125 kHz under a 1% limit.
let link = LinkSettings::new(12, 125_000);
let mut guard = DutyCycle::new(10);
assert!(guard.ready(0));
// A ten-byte reading sent at time zero holds the channel for 991,232 us, and owes
// ninety-nine times that in silence.
assert_eq!(guard.transmitted(0, &link, 10), 991_232);
assert_eq!(guard.wait_us(0), 99_123_200);
assert!(!guard.ready(99_000_000));
assert!(guard.ready(99_123_200));Implementations§
Source§impl DutyCycle
impl DutyCycle
Sourcepub fn earliest_us(&self) -> u64
pub fn earliest_us(&self) -> u64
Sourcepub fn transmitted(
&mut self,
started_us: u64,
link: &LinkSettings,
payload_len: usize,
) -> u64
pub fn transmitted( &mut self, started_us: u64, link: &LinkSettings, payload_len: usize, ) -> u64
Trait Implementations§
impl Copy for DutyCycle
impl Eq for DutyCycle
impl StructuralPartialEq for DutyCycle
Auto Trait Implementations§
impl Freeze for DutyCycle
impl RefUnwindSafe for DutyCycle
impl Send for DutyCycle
impl Sync for DutyCycle
impl Unpin for DutyCycle
impl UnsafeUnpin for DutyCycle
impl UnwindSafe for DutyCycle
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