rusmpp/values/
data_coding.rs1crate::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}