use crate::datastructures::common::{PortIdentity, TimeInterval};
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u8)]
#[allow(missing_docs)]
pub enum PortState {
Initializing = 1,
Faulty = 2,
Disabled = 3,
Listening = 4,
PreMaster = 5,
Master = 6,
Passive = 7,
Uncalibrated = 8,
Slave = 9,
}
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u8)]
#[allow(missing_docs)]
pub enum DelayMechanism {
E2E {
log_min_delay_req_interval: i8,
} = 1,
P2P {
log_min_p_delay_req_interval: i8,
mean_link_delay: TimeInterval,
} = 2,
NoMechanism = 0xfe,
CommonP2P {
mean_link_delay: TimeInterval,
} = 3,
Special = 4,
}
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct PortDS {
pub port_identity: PortIdentity,
pub port_state: PortState,
pub log_announce_interval: i8,
pub announce_receipt_timeout: u8,
pub log_sync_interval: i8,
pub delay_mechanism: DelayMechanism,
pub version_number: u8,
pub minor_version_number: u8,
pub delay_asymmetry: TimeInterval,
pub master_only: bool,
}