ezsp 5.0.0

Ember ZNet Serial Protocol
Documentation
use crate::frame::enums::Parameters;
use crate::frame::parameters::{
    binding, bootloader, cbke, green_power, messaging, mfglib, networking, security, trust_center,
    utilities, zll,
};

/// Possible callback responses, which are called "handler"s according to the EZSP documentation.
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum Callback {
    /// Binding handlers.
    Binding(binding::handler::Handler),
    /// Bootloader handlers.
    Bootloader(bootloader::handler::Handler),
    /// Certificate-based key exchange handlers.
    Cbke(cbke::handler::Handler),
    /// Green Power handlers.
    GreenPower(green_power::handler::Handler),
    /// Messaging handlers.
    Messaging(messaging::handler::Handler),
    /// `Mfglib` handlers.
    MfgLib(mfglib::handler::Handler),
    /// Networking handlers.
    Networking(networking::handler::Handler),
    /// Security handlers.
    Security(security::handler::Handler),
    /// Trust Center handlers.
    TrustCenter(trust_center::handler::Handler),
    /// Utilities handlers.
    Utilities(utilities::handler::Handler),
    /// ZLL handlers.
    Zll(zll::handler::Handler),
}

impl TryFrom<Parameters> for Callback {
    type Error = Parameters;

    fn try_from(parameters: Parameters) -> Result<Self, Self::Error> {
        match parameters {
            Parameters::Callback(callback) => Ok(callback),
            Parameters::Response(_) => Err(parameters),
        }
    }
}