1use 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#[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}