Skip to main content

ace_core/
lib.rs

1#![no_std]
2
3#[cfg(feature = "alloc")]
4extern crate alloc;
5
6pub mod codec;
7pub use codec::{take_n, FrameCodec, FrameRead, FrameWrite, Writer};
8
9pub mod iter;
10pub use iter::FrameIter;
11
12// region: Addressing
13
14pub trait DiagnosticAddress: Clone + core::fmt::Debug {
15    fn address_mode(&self) -> AddressMode;
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
19pub enum AddressMode {
20    Physical,
21    Functional,
22}
23
24// endregion: Addressing
25
26// region: Errors
27
28#[derive(Debug)]
29pub enum DiagError {
30    Timeout,
31    InvalidFrame(heapless::String<64>),
32    BufferOverflow,
33    Driver(heapless::String<64>),
34    AddressNotReachable,
35    LengthMismatch { expected: usize, actual: usize },
36}
37
38pub fn diag_err_str(s: &str) -> heapless::String<64> {
39    let mut hs = heapless::String::new();
40    let _ = hs.push_str(s);
41    hs
42}
43
44// endregion: Errors