1use nom::{IResult, number::complete::u8};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5pub enum MediaType {
6 None,
7 Laminated,
8 NonLaminated,
9 Fabric,
10 HeatShrink,
11 Fle,
12 FlexibleId,
13 Satin,
14 Incompatible,
15 Unknown(u8),
16}
17
18impl From<u8> for MediaType {
19 fn from(value: u8) -> Self {
20 match value {
21 0x00 => Self::None,
22 0x01 => Self::Laminated,
23 0x03 => Self::NonLaminated,
24 0x04 => Self::Fabric,
25 0x11 => Self::HeatShrink,
26 0x13 => Self::Fle,
27 0x14 => Self::FlexibleId,
28 0x15 => Self::Satin,
29 0xFF => Self::Incompatible,
30 v => Self::Unknown(v),
31 }
32 }
33}
34
35impl MediaType {
36 pub fn parse(input: &[u8]) -> IResult<&[u8], Self> {
37 let (input, media_type) = u8(input)?;
38
39 Ok((input, media_type.into()))
40 }
41}