use core::fmt::{Display, Formatter, LowerHex, UpperHex};
use num_derive::FromPrimitive;
pub use self::space::Space;
mod space;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Ord, PartialOrd, FromPrimitive)]
#[repr(u32)]
pub enum Status {
Ok = 0x0000,
Fail = 0x0001,
InvalidState = 0x0002,
NotReady = 0x0003,
Busy = 0x0004,
InProgress = 0x0005,
Abort = 0x0006,
Timeout = 0x0007,
Permission = 0x0008,
WouldBlock = 0x0009,
Idle = 0x000A,
IsWaiting = 0x000B,
NoneWaiting = 0x000C,
Suspended = 0x000D,
NotAvailable = 0x000E,
NotSupported = 0x000F,
Initialization = 0x0010,
NotInitialized = 0x0011,
AlreadyInitialized = 0x0012,
Deleted = 0x0013,
Isr = 0x0014,
NetworkUp = 0x0015,
NetworkDown = 0x0016,
NotJoined = 0x0017,
NoBeacons = 0x0018,
AllocationFailed = 0x0019,
NoMoreResource = 0x001A,
StatusEmpty = 0x001B,
StatusFull = 0x001C,
WouldOverflow = 0x001D,
HasOverflowed = 0x001E,
Ownership = 0x001F,
IsOwner = 0x0020,
InvalidParameter = 0x0021,
NullPointer = 0x0022,
InvalidConfiguration = 0x0023,
InvalidMode = 0x0024,
InvalidHandle = 0x0025,
InvalidType = 0x0026,
InvalidIndex = 0x0027,
InvalidRange = 0x0028,
InvalidKey = 0x0029,
InvalidCredentials = 0x002A,
InvalidCount = 0x002B,
NotFound = 0x002D,
AlreadyExists = 0x002E,
Io = 0x002F,
IoTimeout = 0x0030,
Transmit = 0x0031,
TransmitUnderflow = 0x0032,
TransmitIncomplete = 0x0033,
TransmitBusy = 0x0034,
Receive = 0x0035,
ObjectRead = 0x0036,
ObjectWrite = 0x0037,
MessageTooLong = 0x0038,
MfgVersionMismatch = 0x0039,
StackVersionMismatch = 0x003A,
WriteInhibited = 0x003B,
VerifyFailed = 0x003C,
ProgramFailed = 0x003D,
EraseFailed = 0x003E,
MacNoData = 0x003F,
MacNoAckReceived = 0x0040,
MacIndirectTimeout = 0x0041,
MacUnknownHeaderType = 0x0042,
MacAckHeaderType = 0x0043,
CommandTransmitFailure = 0x0044,
StorageNvmOpenError = 0x0045,
ImageChecksumError = 0x0046,
DecryptError = 0x0047,
IsInvalid = 0x0048,
TooLong = 0x0049,
CommandIncomplete = 0x004A,
BadScanDuration = 0x0050,
WifiInvalidKey = 0x0B01,
WifiFirmwareDownloadTimeout = 0x0B02,
WifiUnsupportedMessageId = 0x0B03,
WifiWarning = 0x0B04,
WifiNoPacketToReceive = 0x0B05,
WifiSleepGranted = 0x0B08,
WifiSleepNotGranted = 0x0B09,
WifiSecureLinkMacKeyError = 0x0B10,
WifiSecureLinkMacKeyAlreadyBurned = 0x0B11,
WifiSecureLinkRamModeNotAllowed = 0x0B12,
WifiSecureLinkFailedUnknownMode = 0x0B13,
WifiSecureLinkExchangeFailed = 0x0B14,
WifiWrongState = 0x0B18,
WifiChannelNotAllowed = 0x0B19,
WifiNoMatchingAp = 0x0B1A,
WifiConnectionAborted = 0x0B1B,
WifiConnectionTimeout = 0x0B1C,
WifiConnectionRejectedByAp = 0x0B1D,
WifiConnectionAuthFailure = 0x0B1E,
WifiRetryExceeded = 0x0B1F,
WifiTxLifetimeExceeded = 0x0B20,
}
impl Status {
#[expect(clippy::too_many_lines)]
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Ok => "SL_STATUS_OK",
Self::Fail => "SL_STATUS_FAIL",
Self::InvalidState => "SL_STATUS_INVALID_STATE",
Self::NotReady => "SL_STATUS_NOT_READY",
Self::Busy => "SL_STATUS_BUSY",
Self::InProgress => "SL_STATUS_IN_PROGRESS",
Self::Abort => "SL_STATUS_ABORT",
Self::Timeout => "SL_STATUS_TIMEOUT",
Self::Permission => "SL_STATUS_PERMISSION",
Self::WouldBlock => "SL_STATUS_WOULD_BLOCK",
Self::Idle => "SL_STATUS_IDLE",
Self::IsWaiting => "SL_STATUS_IS_WAITING",
Self::NoneWaiting => "SL_STATUS_NONE_WAITING",
Self::Suspended => "SL_STATUS_SUSPENDED",
Self::NotAvailable => "SL_STATUS_NOT_AVAILABLE",
Self::NotSupported => "SL_STATUS_NOT_SUPPORTED",
Self::Initialization => "SL_STATUS_INITIALIZATION",
Self::NotInitialized => "SL_STATUS_NOT_INITIALIZED",
Self::AlreadyInitialized => "SL_STATUS_ALREADY_INITIALIZED",
Self::Deleted => "SL_STATUS_DELETED",
Self::Isr => "SL_STATUS_ISR",
Self::NetworkUp => "SL_STATUS_NETWORK_UP",
Self::NetworkDown => "SL_STATUS_NETWORK_DOWN",
Self::NotJoined => "SL_STATUS_NOT_JOINED",
Self::NoBeacons => "SL_STATUS_NO_BEACONS",
Self::AllocationFailed => "SL_STATUS_ALLOCATION_FAILED",
Self::NoMoreResource => "SL_STATUS_NO_MORE_RESOURCE",
Self::StatusEmpty => "SL_STATUS_EMPTY",
Self::StatusFull => "SL_STATUS_FULL",
Self::WouldOverflow => "SL_STATUS_WOULD_OVERFLOW",
Self::HasOverflowed => "SL_STATUS_HAS_OVERFLOWED",
Self::Ownership => "SL_STATUS_OWNERSHIP",
Self::IsOwner => "SL_STATUS_IS_OWNER",
Self::InvalidParameter => "SL_STATUS_INVALID_PARAMETER",
Self::NullPointer => "SL_STATUS_NULL_POINTER",
Self::InvalidConfiguration => "SL_STATUS_INVALID_CONFIGURATION",
Self::InvalidMode => "SL_STATUS_INVALID_MODE",
Self::InvalidHandle => "SL_STATUS_INVALID_HANDLE",
Self::InvalidType => "SL_STATUS_INVALID_TYPE",
Self::InvalidIndex => "SL_STATUS_INVALID_INDEX",
Self::InvalidRange => "SL_STATUS_INVALID_RANGE",
Self::InvalidKey => "SL_STATUS_INVALID_KEY",
Self::InvalidCredentials => "SL_STATUS_INVALID_CREDENTIALS",
Self::InvalidCount => "SL_STATUS_INVALID_COUNT",
Self::NotFound => "SL_STATUS_NOT_FOUND",
Self::AlreadyExists => "SL_STATUS_ALREADY_EXISTS",
Self::Io => "SL_STATUS_IO",
Self::IoTimeout => "SL_STATUS_IO_TIMEOUT",
Self::Transmit => "SL_STATUS_TRANSMIT",
Self::TransmitUnderflow => "SL_STATUS_TRANSMIT_UNDERFLOW",
Self::TransmitIncomplete => "SL_STATUS_TRANSMIT_INCOMPLETE",
Self::TransmitBusy => "SL_STATUS_TRANSMIT_BUSY",
Self::Receive => "SL_STATUS_RECEIVE",
Self::ObjectRead => "SL_STATUS_OBJECT_READ",
Self::ObjectWrite => "SL_STATUS_OBJECT_WRITE",
Self::MessageTooLong => "SL_STATUS_MESSAGE_TOO_LONG",
Self::MfgVersionMismatch => "SL_STATUS_MFG_VERSION_MISMATCH",
Self::StackVersionMismatch => "SL_STATUS_STACK_VERSION_MISMATCH",
Self::WriteInhibited => "SL_STATUS_WRITE_INHIBITED",
Self::VerifyFailed => "SL_STATUS_VERIFY_FAILED",
Self::ProgramFailed => "SL_STATUS_PROGRAM_FAILED",
Self::EraseFailed => "SL_STATUS_ERASE_FAILED",
Self::MacNoData => "SL_STATUS_MAC_NO_DATA",
Self::MacNoAckReceived => "SL_STATUS_MAC_NO_ACK_RECEIVED",
Self::MacIndirectTimeout => "SL_STATUS_MAC_INDIRECT_TIMEOUT",
Self::MacUnknownHeaderType => "SL_STATUS_MAC_UNKNOWN_HEADER_TYPE",
Self::MacAckHeaderType => "SL_STATUS_MAC_ACK_HEADER_TYPE",
Self::CommandTransmitFailure => "SL_STATUS_COMMAND_TRANSMIT_FAILURE",
Self::StorageNvmOpenError => "SL_STATUS_STORAGE_NVM_OPEN_ERROR",
Self::ImageChecksumError => "SL_STATUS_IMAGE_CHECKSUM_ERROR",
Self::DecryptError => "SL_STATUS_DECRYPT_ERROR",
Self::IsInvalid => "SL_STATUS_IS_INVALID",
Self::TooLong => "SL_STATUS_TOO_LONG",
Self::CommandIncomplete => "SL_STATUS_COMMAND_INCOMPLETE",
Self::BadScanDuration => "SL_STATUS_BAD_SCAN_DURATION",
Self::WifiInvalidKey => "SL_STATUS_WIFI_INVALID_KEY",
Self::WifiFirmwareDownloadTimeout => "SL_STATUS_WIFI_FIRMWARE_DOWNLOAD_TIMEOUT",
Self::WifiUnsupportedMessageId => "SL_STATUS_WIFI_UNSUPPORTED_MESSAGE_ID",
Self::WifiWarning => "SL_STATUS_WIFI_WARNING",
Self::WifiNoPacketToReceive => "SL_STATUS_WIFI_NO_PACKET_TO_RECEIVE",
Self::WifiSleepGranted => "SL_STATUS_WIFI_SLEEP_GRANTED",
Self::WifiSleepNotGranted => "SL_STATUS_WIFI_SLEEP_NOT_GRANTED",
Self::WifiSecureLinkMacKeyError => "SL_STATUS_WIFI_SECURE_LINK_MAC_KEY_ERROR",
Self::WifiSecureLinkMacKeyAlreadyBurned => {
"SL_STATUS_WIFI_SECURE_LINK_MAC_KEY_ALREADY_BURNED"
}
Self::WifiSecureLinkRamModeNotAllowed => {
"SL_STATUS_WIFI_SECURE_LINK_RAM_MODE_NOT_ALLOWED"
}
Self::WifiSecureLinkFailedUnknownMode => {
"SL_STATUS_WIFI_SECURE_LINK_FAILED_UNKNOWN_MODE"
}
Self::WifiSecureLinkExchangeFailed => "SL_STATUS_WIFI_SECURE_LINK_EXCHANGE_FAILED",
Self::WifiWrongState => "SL_STATUS_WIFI_WRONG_STATE",
Self::WifiChannelNotAllowed => "SL_STATUS_WIFI_CHANNEL_NOT_ALLOWED",
Self::WifiNoMatchingAp => "SL_STATUS_WIFI_NO_MATCHING_AP",
Self::WifiConnectionAborted => "SL_STATUS_WIFI_CONNECTION_ABORTED",
Self::WifiConnectionTimeout => "SL_STATUS_WIFI_CONNECTION_TIMEOUT",
Self::WifiConnectionRejectedByAp => "SL_STATUS_WIFI_CONNECTION_REJECTED_BY_AP",
Self::WifiConnectionAuthFailure => "SL_STATUS_WIFI_CONNECTION_AUTH_FAILURE",
Self::WifiRetryExceeded => "SL_STATUS_WIFI_RETRY_EXCEEDED",
Self::WifiTxLifetimeExceeded => "SL_STATUS_WIFI_TX_LIFETIME_EXCEEDED",
}
}
}
impl Display for Status {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
write!(f, "{}", self.as_str())
}
}
impl LowerHex for Status {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
write!(f, "{:#010x}", *self as u32)
}
}
impl UpperHex for Status {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
write!(f, "{:#010X}", *self as u32)
}
}