embedded_bacnet/common/
error.rs1use 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}