rusmpp/values/
data_coding.rs

1crate::create! {
2    #[repr(u8)]
3    #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Default)]
4    #[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
5    pub enum DataCoding {
6        #[default]
7        McSpecific = 0b00000000,
8        Ia5 = 0b00000001,
9        OctetUnspecified = 0b00000010,
10        Latin1 = 0b00000011,
11        OctetUnspecified2 = 0b00000100,
12        Jis = 0b00000101,
13        Cyrillic = 0b00000110,
14        LatinHebrew = 0b00000111,
15        Ucs2 = 0b00001000,
16        PictogramEncoding = 0b00001001,
17        Iso2022JpMusicCodes = 0b00001010,
18        ExtendedKanjiJis = 0b00001101,
19        Ksc5601 = 0b00001110,
20        GsmMwiControl = 0b11000000,
21        GsmMwiControl2 = 0b11010000,
22        GsmMessageClassControl = 0b11100000,
23        Other(u8),
24    }
25}
26
27impl From<u8> for DataCoding {
28    fn from(value: u8) -> Self {
29        match value {
30            0b00000000 => DataCoding::McSpecific,
31            0b00000001 => DataCoding::Ia5,
32            0b00000010 => DataCoding::OctetUnspecified,
33            0b00000011 => DataCoding::Latin1,
34            0b00000100 => DataCoding::OctetUnspecified2,
35            0b00000101 => DataCoding::Jis,
36            0b00000110 => DataCoding::Cyrillic,
37            0b00000111 => DataCoding::LatinHebrew,
38            0b00001000 => DataCoding::Ucs2,
39            0b00001001 => DataCoding::PictogramEncoding,
40            0b00001010 => DataCoding::Iso2022JpMusicCodes,
41            0b00001101 => DataCoding::ExtendedKanjiJis,
42            0b00001110 => DataCoding::Ksc5601,
43            0b11000000 => DataCoding::GsmMwiControl,
44            0b11010000 => DataCoding::GsmMwiControl2,
45            0b11100000 => DataCoding::GsmMessageClassControl,
46            value => DataCoding::Other(value),
47        }
48    }
49}
50
51impl From<DataCoding> for u8 {
52    fn from(value: DataCoding) -> Self {
53        match value {
54            DataCoding::McSpecific => 0b00000000,
55            DataCoding::Ia5 => 0b00000001,
56            DataCoding::OctetUnspecified => 0b00000010,
57            DataCoding::Latin1 => 0b00000011,
58            DataCoding::OctetUnspecified2 => 0b00000100,
59            DataCoding::Jis => 0b00000101,
60            DataCoding::Cyrillic => 0b00000110,
61            DataCoding::LatinHebrew => 0b00000111,
62            DataCoding::Ucs2 => 0b00001000,
63            DataCoding::PictogramEncoding => 0b00001001,
64            DataCoding::Iso2022JpMusicCodes => 0b00001010,
65            DataCoding::ExtendedKanjiJis => 0b00001101,
66            DataCoding::Ksc5601 => 0b00001110,
67            DataCoding::GsmMwiControl => 0b11000000,
68            DataCoding::GsmMwiControl2 => 0b11010000,
69            DataCoding::GsmMessageClassControl => 0b11100000,
70            DataCoding::Other(value) => value,
71        }
72    }
73}
74
75#[cfg(test)]
76mod tests {
77    use super::*;
78
79    #[test]
80    fn encode_decode() {
81        crate::tests::encode_decode_test_instances::<DataCoding>();
82    }
83}