embedded-bacnet 0.2.0

A bacnet library for embedded systems (no_std)
Documentation
use crate::application_protocol::{
    application_pdu::ApduType, confirmed::ConfirmedServiceChoice,
    services::read_range::ReadRangeValueType, unconfirmed::UnconfirmedServiceChoice,
};

use super::tag::{ApplicationTagNumber, Tag, TagNumber};

#[derive(Debug, Clone)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Error {
    Length((&'static str, u32)),
    InvalidValue(&'static str),
    InvalidVariant((&'static str, u32)),
    Unknown,
    Unimplemented(Unimplemented),
    SegmentationNotSupported,
    UnexpectedInvokeId,
    Io,
    ApduTypeNotSupported(ApduType),
    ExpectedTag(ExpectedTag),
    ExpectedOpeningTag(TagNumber),
    TagNotSupported((&'static str, TagNumber)),
    TagValueInvalid((&'static str, Tag, u32)),
    ReaderEof(usize),
    ConvertDataLink(&'static str),
}

#[derive(Debug, Clone)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Unimplemented {
    ConfirmedServiceChoice(ConfirmedServiceChoice),
    UnconfirmedServiceChoice(UnconfirmedServiceChoice),
    ReadRangeValueType(ReadRangeValueType),
    ApplicationTagNumber(ApplicationTagNumber),
}

#[derive(Debug, Clone)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ExpectedTag {
    pub context: &'static str,
    pub expected: TagNumber,
    pub actual: TagNumber,
}