doip_definitions/doip_payload/
sync_status.rs1use crate::error::{Error, Result};
2
3#[cfg_attr(feature = "python-bindings", pyo3::pyclass(eq, eq_int))]
8#[derive(Clone, Copy, Debug, PartialEq)]
9pub enum SyncStatus {
10 VinGidSynchronized = 0x00,
12
13 ReservedByIso13400_01 = 0x01,
15
16 ReservedByIso13400_02 = 0x02,
18
19 ReservedByIso13400_03 = 0x03,
21
22 ReservedByIso13400_04 = 0x04,
24
25 ReservedByIso13400_05 = 0x05,
27
28 ReservedByIso13400_06 = 0x06,
30
31 ReservedByIso13400_07 = 0x07,
33
34 ReservedByIso13400_08 = 0x08,
36
37 ReservedByIso13400_09 = 0x09,
39
40 ReservedByIso13400_0A = 0x0A,
42
43 ReservedByIso13400_0B = 0x0B,
45
46 ReservedByIso13400_0C = 0x0C,
48
49 ReservedByIso13400_0D = 0x0D,
51
52 ReservedByIso13400_0E = 0x0E,
54
55 ReservedByIso13400_0F = 0x0F,
57
58 VinGidNotSynchronised = 0x10,
60}
61
62impl TryFrom<&u8> for SyncStatus {
63 type Error = Error;
64
65 fn try_from(value: &u8) -> Result<Self> {
66 let val = *value;
67
68 match val {
69 v if v == SyncStatus::VinGidSynchronized as u8 => Ok(SyncStatus::VinGidSynchronized),
70 v if v == SyncStatus::ReservedByIso13400_01 as u8 => {
71 Ok(SyncStatus::ReservedByIso13400_01)
72 }
73 v if v == SyncStatus::ReservedByIso13400_02 as u8 => {
74 Ok(SyncStatus::ReservedByIso13400_02)
75 }
76 v if v == SyncStatus::ReservedByIso13400_03 as u8 => {
77 Ok(SyncStatus::ReservedByIso13400_03)
78 }
79 v if v == SyncStatus::ReservedByIso13400_04 as u8 => {
80 Ok(SyncStatus::ReservedByIso13400_04)
81 }
82 v if v == SyncStatus::ReservedByIso13400_05 as u8 => {
83 Ok(SyncStatus::ReservedByIso13400_05)
84 }
85 v if v == SyncStatus::ReservedByIso13400_06 as u8 => {
86 Ok(SyncStatus::ReservedByIso13400_06)
87 }
88 v if v == SyncStatus::ReservedByIso13400_07 as u8 => {
89 Ok(SyncStatus::ReservedByIso13400_07)
90 }
91 v if v == SyncStatus::ReservedByIso13400_08 as u8 => {
92 Ok(SyncStatus::ReservedByIso13400_08)
93 }
94 v if v == SyncStatus::ReservedByIso13400_09 as u8 => {
95 Ok(SyncStatus::ReservedByIso13400_09)
96 }
97 v if v == SyncStatus::ReservedByIso13400_0A as u8 => {
98 Ok(SyncStatus::ReservedByIso13400_0A)
99 }
100 v if v == SyncStatus::ReservedByIso13400_0B as u8 => {
101 Ok(SyncStatus::ReservedByIso13400_0B)
102 }
103 v if v == SyncStatus::ReservedByIso13400_0C as u8 => {
104 Ok(SyncStatus::ReservedByIso13400_0C)
105 }
106 v if v == SyncStatus::ReservedByIso13400_0D as u8 => {
107 Ok(SyncStatus::ReservedByIso13400_0D)
108 }
109 v if v == SyncStatus::ReservedByIso13400_0E as u8 => {
110 Ok(SyncStatus::ReservedByIso13400_0E)
111 }
112 v if v == SyncStatus::ReservedByIso13400_0F as u8 => {
113 Ok(SyncStatus::ReservedByIso13400_0F)
114 }
115 v if v == SyncStatus::VinGidNotSynchronised as u8 => {
116 Ok(SyncStatus::VinGidNotSynchronised)
117 }
118 v => Err(Error::InvalidSyncStatus { value: v }),
119 }
120 }
121}
122
123impl From<SyncStatus> for u8 {
124 fn from(value: SyncStatus) -> Self {
125 value as u8
126 }
127}