Skip to main content

ace_client/
sim_node.rs

1// region: Imports
2
3use crate::{client::UdsClient, ClientError};
4use ace_core::Vec;
5use ace_sim::node::SimNode;
6
7// endregion: Imports
8
9// region: SimNode for UdsClient
10
11impl<
12        const PENDING: usize,
13        const SIM_MAX_FRAME: usize,
14        const SIM_MAX_OUTBOX: usize,
15        const MAX_EVENTS: usize,
16        const PERIODIC_DIDS: usize,
17        const MAX_DATA: usize,
18    > SimNode<SIM_MAX_FRAME, SIM_MAX_OUTBOX>
19    for UdsClient<PENDING, SIM_MAX_FRAME, SIM_MAX_OUTBOX, MAX_EVENTS, PERIODIC_DIDS, MAX_DATA>
20{
21    type Error = ClientError;
22
23    fn address(&self) -> &ace_sim::io::NodeAddress {
24        UdsClient::address(self)
25    }
26
27    fn handle(
28        &mut self,
29        src: &ace_sim::io::NodeAddress,
30        data: &[u8],
31        now: ace_sim::clock::Instant,
32    ) -> Result<(), Self::Error> {
33        UdsClient::handle(self, src, data, now)
34    }
35
36    fn tick(&mut self, now: ace_sim::clock::Instant) -> Result<(), Self::Error> {
37        UdsClient::tick(self, now)
38    }
39
40    fn drain_outbox(
41        &mut self,
42        out: &mut Vec<(ace_sim::io::NodeAddress, Vec<u8, SIM_MAX_FRAME>), SIM_MAX_OUTBOX>,
43    ) -> usize {
44        UdsClient::drain_outbox(self, out)
45    }
46}
47
48// endregion: SimNode for UdsClient