#[derive(Debug)]
pub struct InvalidState(u8);
#[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(v)),
};
Ok(s)
}
}