///|
/// EcError represents all error conditions in the MoonECAT stack.
/// Errors are grouped by layer to keep diagnostics clear.
pub(all) suberror EcError {
// HAL errors
LinkDown
SendFailed(String)
RecvTimeout
RecvFailed(String)
// Protocol errors
InvalidFrame(String)
InvalidPdu(String)
UnexpectedWkc(expected~ : Int, actual~ : Int)
// ESM errors
EsmTransitionFailed(from~ : String, to~ : String)
EsmStateError(String)
// Mailbox errors
MailboxTimeout
MailboxProtocol(String)
SdoAbort(UInt)
// Config errors
SiiReadFailed(String)
EsiParseFailed(String)
ConfigMismatch(String)
// General errors
NotSupported(String)
Internal(String)
} derive(Debug)