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
12pub mod storage;
13pub use storage::Vec;
14
15// region: Addressing
16
17pub trait DiagnosticAddress: Clone + core::fmt::Debug {
18    fn address_mode(&self) -> AddressMode;
19}
20
21#[derive(Debug, Clone, PartialEq, Eq)]
22pub enum AddressMode {
23    Physical,
24    Functional,
25}
26
27// endregion: Addressing
28
29// region: Errors
30
31#[derive(Debug)]
32pub enum DiagError {
33    Timeout,
34    InvalidFrame(heapless::String<64>),
35    BufferOverflow,
36    Driver(heapless::String<64>),
37    AddressNotReachable,
38    LengthMismatch { expected: usize, actual: usize },
39}
40
41pub fn diag_err_str(s: &str) -> heapless::String<64> {
42    let mut hs = heapless::String::new();
43    let _ = hs.push_str(s);
44    hs
45}
46
47// endregion: Errors