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
15pub 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#[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