doip_definitions/doip_payload/
nack_code.rs1use crate::error::{Error, Result};
2
3#[cfg_attr(feature = "python-bindings", pyo3::pyclass(eq, eq_int))]
8#[derive(Clone, Copy, Debug, PartialEq)]
9#[repr(u8)]
10pub enum NackCode {
11 IncorrectPatternFormat = 0x00,
13
14 UnknownPayloadType = 0x01,
16
17 MessageTooLarge = 0x02,
19
20 OutOfMemory = 0x03,
22
23 InvalidPayloadLength = 0x04,
25}
26
27impl From<NackCode> for u8 {
28 fn from(value: NackCode) -> Self {
29 value as u8
30 }
31}
32
33impl TryFrom<&u8> for NackCode {
34 type Error = Error;
35
36 fn try_from(value: &u8) -> Result<Self> {
37 let val = *value;
38
39 match val {
40 v if v == NackCode::IncorrectPatternFormat as u8 => {
41 Ok(NackCode::IncorrectPatternFormat)
42 }
43 v if v == NackCode::UnknownPayloadType as u8 => Ok(NackCode::UnknownPayloadType),
44 v if v == NackCode::MessageTooLarge as u8 => Ok(NackCode::MessageTooLarge),
45 v if v == NackCode::OutOfMemory as u8 => Ok(NackCode::OutOfMemory),
46 v if v == NackCode::InvalidPayloadLength as u8 => Ok(NackCode::InvalidPayloadLength),
47 v => Err(Error::InvalidNackCode { value: v }),
48 }
49 }
50}