rusmpp_core/udhs/owned/
concatenation.rs1mod concatenated_short_message_16_bit;
4pub use concatenated_short_message_16_bit::ConcatenatedShortMessage16Bit;
5
6mod concatenated_short_message_8_bit;
7pub use concatenated_short_message_8_bit::ConcatenatedShortMessage8Bit;
8
9pub mod parts {
10 pub use super::concatenated_short_message_8_bit::ConcatenatedShortMessage8BitParts;
11 pub use super::concatenated_short_message_16_bit::ConcatenatedShortMessage16BitParts;
12}
13
14#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub enum ConcatenatedShortMessage {
17 EightBit(ConcatenatedShortMessage8Bit),
19 SixteenBit(ConcatenatedShortMessage16Bit),
21}
22
23impl ConcatenatedShortMessage {
24 pub const fn udh_length(&self) -> usize {
28 match self {
29 Self::EightBit(_) => ConcatenatedShortMessage8Bit::UDH_LENGTH,
30 Self::SixteenBit(_) => ConcatenatedShortMessage16Bit::UDH_LENGTH,
31 }
32 }
33
34 pub const fn udh_bytes(&self) -> ConcatenatedShortMessageUdhBytes {
36 match self {
37 Self::EightBit(concatenation) => {
38 ConcatenatedShortMessageUdhBytes::EightBit(concatenation.udh_bytes())
39 }
40 Self::SixteenBit(concatenation) => {
41 ConcatenatedShortMessageUdhBytes::SixteenBit(concatenation.udh_bytes())
42 }
43 }
44 }
45}
46
47#[derive(Debug)]
49pub enum ConcatenatedShortMessageUdhBytes {
50 EightBit([u8; 6]),
52 SixteenBit([u8; 7]),
54}
55
56impl ConcatenatedShortMessageUdhBytes {
57 pub const fn as_bytes(&self) -> &[u8] {
59 match self {
60 Self::EightBit(bytes) => bytes,
61 Self::SixteenBit(bytes) => bytes,
62 }
63 }
64}
65
66#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
68pub enum ConcatenatedShortMessageType {
69 EightBit { reference: u8 },
71 SixteenBit { reference: u16 },
73}
74
75impl ConcatenatedShortMessageType {
76 pub const fn u8(reference: u8) -> Self {
78 Self::EightBit { reference }
79 }
80
81 pub const fn u16(reference: u16) -> Self {
83 Self::SixteenBit { reference }
84 }
85
86 pub const fn udh_length(self) -> usize {
88 match self {
89 Self::EightBit { .. } => ConcatenatedShortMessage8Bit::UDH_LENGTH,
90 Self::SixteenBit { .. } => ConcatenatedShortMessage16Bit::UDH_LENGTH,
91 }
92 }
93
94 pub const fn concatenated_short_message_unchecked(
98 self,
99 total_parts: u8,
100 part_number: u8,
101 ) -> ConcatenatedShortMessage {
102 match self {
103 Self::EightBit { reference } => ConcatenatedShortMessage::EightBit(
104 ConcatenatedShortMessage8Bit::new_unchecked(reference, total_parts, part_number),
105 ),
106 Self::SixteenBit { reference } => ConcatenatedShortMessage::SixteenBit(
107 ConcatenatedShortMessage16Bit::new_unchecked(reference, total_parts, part_number),
108 ),
109 }
110 }
111}