pub struct CanSimRunner<const N: usize, const Q: usize> { /* private fields */ }Expand description
Drivers SimNodeErased slices over a CanSimBus.
N - max CAN frame payload bytes (8 classic, 64 FD)
Q - max frames in-flight on the bus
Implementations§
Source§impl<const N: usize, const Q: usize> CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> CanSimRunner<N, Q>
pub fn new(bus: CanSimBus<N, Q>) -> Self
pub fn bus(&mut self) -> &mut CanSimBus<N, Q>
pub fn now(&self) -> Instant
Sourcepub fn tick(
&mut self,
nodes: &mut [&mut dyn SimNodeErased<N, Q>],
can_event_nodes: &mut [&mut dyn CanEventHandler],
duration: Duration,
) -> usize
pub fn tick( &mut self, nodes: &mut [&mut dyn SimNodeErased<N, Q>], can_event_nodes: &mut [&mut dyn CanEventHandler], duration: Duration, ) -> usize
Ticks the simulation by duration.
Order of operations per tick:
1. Advance bus clock, apply CAN fault injection, deliver due frames (no frames
delivered if bus is in bus-off state)
2. Deliver CAN events to nodes implementing CanEventHandler
3. Tick all nodes
4. Drain node outboxes onto the bus
Returns the number of frames delivered.
Auto Trait Implementations§
impl<const N: usize, const Q: usize> Freeze for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> RefUnwindSafe for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> Send for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> Sync for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> Unpin for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> UnsafeUnpin for CanSimRunner<N, Q>
impl<const N: usize, const Q: usize> UnwindSafe for CanSimRunner<N, Q>
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