rusty-cotp 0.6.0

Implements the Kernel Function of Connection Oriented Transport Protocol/ISO 8073/IEC 8073/ITU-T X.224 standard.
Documentation
use crate::packet::parameters::CotpParameter;

pub const TPDU_ERROR_CODE: u8 = 0x70u8;

#[derive(Debug, PartialEq)]
pub struct TpduError {
    destination_reference: u16,
    reason: RejectCause,
    parameters: Vec<CotpParameter>,
}

impl TpduError {
    pub fn new(destination_reference: u16, reason: RejectCause, parameters: Vec<CotpParameter>) -> Self {
        Self { destination_reference, reason, parameters }
    }

    pub fn reason(&self) -> &RejectCause {
        &self.reason
    }
}

#[derive(Debug, PartialEq)]
pub enum RejectCause {
    ReasonNotSpecified,
    InvalidParameterCode,
    InvalidTpduType,
    InvalidParameterValue,
    Unkown(u8),
}

impl From<u8> for RejectCause {
    fn from(value: u8) -> Self {
        match value {
            0 => RejectCause::ReasonNotSpecified,
            1 => RejectCause::InvalidParameterCode,
            2 => RejectCause::InvalidTpduType,
            3 => RejectCause::InvalidParameterValue,
            x => RejectCause::Unkown(x),
        }
    }
}