embedded_bacnet/common/
error.rs

1use crate::application_protocol::{
2    application_pdu::ApduType, confirmed::ConfirmedServiceChoice,
3    services::read_range::ReadRangeValueType, unconfirmed::UnconfirmedServiceChoice,
4};
5
6use super::tag::{ApplicationTagNumber, Tag, TagNumber};
7
8#[derive(Debug, Clone)]
9#[cfg_attr(feature = "defmt", derive(defmt::Format))]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11pub enum Error {
12    Length((&'static str, u32)),
13    InvalidValue(&'static str),
14    InvalidVariant((&'static str, u32)),
15    Unknown,
16    Unimplemented(Unimplemented),
17    SegmentationNotSupported,
18    UnexpectedInvokeId,
19    Io,
20    ApduTypeNotSupported(ApduType),
21    ExpectedTag(ExpectedTag),
22    ExpectedOpeningTag(TagNumber),
23    TagNotSupported((&'static str, TagNumber)),
24    TagValueInvalid((&'static str, Tag, u32)),
25    ReaderEof(usize),
26    ConvertDataLink(&'static str),
27}
28
29#[derive(Debug, Clone)]
30#[cfg_attr(feature = "defmt", derive(defmt::Format))]
31#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
32pub enum Unimplemented {
33    ConfirmedServiceChoice(ConfirmedServiceChoice),
34    UnconfirmedServiceChoice(UnconfirmedServiceChoice),
35    ReadRangeValueType(ReadRangeValueType),
36    ApplicationTagNumber(ApplicationTagNumber),
37}
38
39#[derive(Debug, Clone)]
40#[cfg_attr(feature = "defmt", derive(defmt::Format))]
41#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
42pub struct ExpectedTag {
43    pub context: &'static str,
44    pub expected: TagNumber,
45    pub actual: TagNumber,
46}