darra-ethercat-master 2.0.2

商业 EtherCAT 主站协议栈 · 实时内核驱动 · 抖动 1µs · Windows + Linux · 多编程语言 · 全协议 · 支持复杂拓扑 + 热插拔 · ethercat.darra.xyz · Commercial EtherCAT Master protocol stack · Real-time kernel driver · 1µs jitter · Multi-platform · Multi-language · Complex topology + hot-plug.
//! 邮箱错误枚举 (Rust 端额外提供)
//!
//! 对齐 C# 侧的 `MailboxException` 语义, 但 Rust 采用 `Result<T, MailboxError>`
//! 范式, 由 `thiserror` 生成 Display + Error 实现.
//! (Cargo.toml 已包含 `thiserror = "2"`, 因此启用 derive 版本.)

use thiserror::Error;

/// 邮箱协议错误.
#[derive(Error, Debug)]
pub enum MailboxError {
    /// 邮箱事务超时
    #[error("Mailbox timeout on slave {slave}")]
    Timeout { slave: u16 },

    /// 邮箱事务被取消
    #[error("Mailbox cancelled")]
    Cancelled,

    /// 邮箱协议层错误 (对端返回 MBX ERROR / 类型不匹配等)
    #[error("Mailbox protocol error on slave {slave}: code 0x{error_code:X}")]
    Protocol { slave: u16, error_code: u32 },

    /// CoE SDO 中止码
    #[error("SDO abort on slave {slave}: 0x{abort_code:08X}")]
    CoEAbort { slave: u16, abort_code: u32 },

    /// FoE 错误
    #[error("FoE error on slave {slave}: code 0x{error_code:X}")]
    FoEError { slave: u16, error_code: u32 },

    /// 无效参数
    #[error("Invalid argument")]
    InvalidArgument,

    /// 其它错误 (携带描述字符串)
    #[error("Unknown error: {0}")]
    Other(String),
}

/// 邮箱协议结果类型别名
pub type MailboxResult<T> = Result<T, MailboxError>;