ptouch_rs/
media_type.rs

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}