rusmpp_core/udhs/
errors.rs

1//! Errors related to User Data Header (UDH).
2
3/// Errors that can occur when creating `ConcatenatedShortMessage8Bit` or `ConcatenatedShortMessage16Bit`.
4#[derive(Debug)]
5pub enum ConcatenatedShortMessageError {
6    /// The total number of parts is zero.
7    TotalPartsZero,
8    /// The part number is zero.
9    PartNumberZero,
10    /// The part number exceeds the total number of parts.
11    PartNumberExceedsTotalParts { part_number: u8, total_parts: u8 },
12}
13
14impl core::fmt::Display for ConcatenatedShortMessageError {
15    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16        match self {
17            Self::PartNumberZero => {
18                write!(f, "Part number cannot be zero")
19            }
20            Self::PartNumberExceedsTotalParts {
21                part_number,
22                total_parts,
23            } => {
24                write!(
25                    f,
26                    "Part number {} exceeds total parts {}",
27                    part_number, total_parts
28                )
29            }
30            Self::TotalPartsZero => {
31                write!(f, "Total parts cannot be zero")
32            }
33        }
34    }
35}
36
37impl core::error::Error for ConcatenatedShortMessageError {}
38
39impl From<ConcatenatedShortMessageError> for crate::decode::ConcatenatedShortMessageDecodeError {
40    fn from(err: ConcatenatedShortMessageError) -> Self {
41        match err {
42            ConcatenatedShortMessageError::PartNumberZero => {
43                crate::decode::ConcatenatedShortMessageDecodeError::PartNumberZero
44            }
45            ConcatenatedShortMessageError::PartNumberExceedsTotalParts {
46                part_number,
47                total_parts,
48            } => crate::decode::ConcatenatedShortMessageDecodeError::PartNumberExceedsTotalParts {
49                part_number,
50                total_parts,
51            },
52            ConcatenatedShortMessageError::TotalPartsZero => {
53                crate::decode::ConcatenatedShortMessageDecodeError::TotalPartsZero
54            }
55        }
56    }
57}
58
59impl From<ConcatenatedShortMessageError> for crate::decode::DecodeError {
60    fn from(err: ConcatenatedShortMessageError) -> Self {
61        crate::decode::DecodeError::concatenated_short_message_decode_error(From::from(err))
62    }
63}