lin_bus/
ldf.rs

1//! Contains structs representing data of the LDF file
2
3use crate::frame::diagnostic::ProductId;
4use crate::frame::transport::NAD;
5
6#[derive(Copy, Clone, Debug, PartialEq)]
7#[repr(transparent)]
8pub struct P2Min(pub f32);
9
10impl Default for P2Min {
11    fn default() -> P2Min {
12        P2Min(50.0)
13    }
14}
15
16#[derive(Copy, Clone, Debug, PartialEq)]
17#[repr(transparent)]
18pub struct STMin(pub f32);
19
20impl Default for STMin {
21    fn default() -> STMin {
22        STMin(0.0)
23    }
24}
25
26#[derive(Copy, Clone, Debug, PartialEq)]
27#[repr(transparent)]
28pub struct NAsTimeout(pub f32);
29
30impl Default for NAsTimeout {
31    fn default() -> NAsTimeout {
32        NAsTimeout(1000.0)
33    }
34}
35
36#[derive(Copy, Clone, Debug, PartialEq)]
37#[repr(transparent)]
38pub struct NCrTimeout(pub f32);
39
40impl Default for NCrTimeout {
41    fn default() -> NCrTimeout {
42        NCrTimeout(1000.0)
43    }
44}
45
46/// Holds the most important node attributes
47#[derive(Copy, Clone, Debug, PartialEq)]
48pub struct NodeAttributes {
49    pub configured_nad: NAD,
50    pub initial_nad: NAD,
51    pub product_id: ProductId,
52    pub p2_min: P2Min,
53    pub st_min: STMin,
54    pub n_as_timeout: NAsTimeout,
55    pub n_cr_timeout: NCrTimeout,
56}
57
58impl NodeAttributes {
59    pub fn with_default_timing(
60        configured_nad: NAD,
61        initial_nad: NAD,
62        product_id: ProductId,
63    ) -> NodeAttributes {
64        NodeAttributes {
65            configured_nad,
66            initial_nad,
67            product_id,
68            p2_min: P2Min::default(),
69            st_min: STMin::default(),
70            n_as_timeout: NAsTimeout::default(),
71            n_cr_timeout: NCrTimeout::default(),
72        }
73    }
74}