#[derive(Debug)] pub struct InvalidState; #[derive(PartialEq, Eq)] pub enum State { NoChange, Sleep, SpiActive, Ready, Ready2, TxTune, RxTune, Tx, Rx, } impl From<State> for u8 { fn from(s: State) -> u8 { match s { State::NoChange => 0x00, State::Sleep => 0x01, State::SpiActive => 0x02, State::Ready => 0x03, State::Ready2 => 0x04, State::TxTune => 0x05, State::RxTune => 0x06, State::Tx => 0x07, State::Rx => 0x08, } } } impl TryFrom<u8> for State { type Error = InvalidState; fn try_from(v: u8) -> Result<Self, Self::Error> { let s = match v { 0x00 => State::NoChange, 0x01 => State::Sleep, 0x02 => State::SpiActive, 0x03 => State::Ready, 0x04 => State::Ready2, 0x05 => State::TxTune, 0x06 => State::RxTune, 0x07 => State::Tx, 0x08 => State::Rx, _ => return Err(InvalidState), }; Ok(s) } }