#[derive(Debug, Copy, Clone, PartialEq, Eq, ethercrab_wire::EtherCrabWireReadWrite)]
#[doc(alias = "SlaveState")]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
#[repr(u8)]
pub enum SubDeviceState {
None = 0x00,
Init = 0x01,
PreOp = 0x02,
Bootstrap = 0x03,
SafeOp = 0x04,
Op = 0x8,
#[wire(catch_all)]
Other(u8),
}
impl Default for SubDeviceState {
fn default() -> Self {
Self::None
}
}
impl core::fmt::Display for SubDeviceState {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
SubDeviceState::None => f.write_str("None"),
SubDeviceState::Init => f.write_str("Init"),
SubDeviceState::PreOp => f.write_str("Pre-Operational"),
SubDeviceState::Bootstrap => f.write_str("Bootstrap"),
SubDeviceState::SafeOp => f.write_str("Safe-Operational"),
SubDeviceState::Op => f.write_str("Operational"),
SubDeviceState::Other(value) => write!(f, "Other({:01x})", value),
}
}
}