use core::str::Utf8Error;
#[derive(Debug, PartialEq, Eq)]
pub enum Error<S> {
SerialRead(S),
SerialWrite(S),
ReadBufferTooSmall,
EncodingError,
ParsingError,
CommandFailed,
BadParameter,
SleepMode,
InvalidState,
}
impl<S> From<Utf8Error> for Error<S> {
fn from(_: Utf8Error) -> Self {
Error::EncodingError
}
}
#[derive(Debug, PartialEq, Eq)]
pub enum JoinError<S> {
BadParameter,
KeysNotInit,
NoFreeChannel,
Silent,
Busy,
MacPaused,
JoinUnsuccessful,
UnknownResponse,
Other(Error<S>),
}
impl<S> From<Error<S>> for JoinError<S> {
fn from(other: Error<S>) -> Self {
JoinError::Other(other)
}
}
impl<S> From<Utf8Error> for JoinError<S> {
fn from(_: Utf8Error) -> Self {
JoinError::Other(Error::EncodingError)
}
}
#[derive(Debug, PartialEq, Eq)]
pub enum TxError<S> {
BadParameter,
NotJoined,
NoFreeChannel,
Silent,
FrameCounterRollover,
Busy,
MacPaused,
InvalidDataLenth,
TxUnsuccessful,
UnknownResponse,
Other(Error<S>),
}
impl<S> From<Error<S>> for TxError<S> {
fn from(other: Error<S>) -> Self {
TxError::Other(other)
}
}
impl<S> From<Utf8Error> for TxError<S> {
fn from(_: Utf8Error) -> Self {
TxError::Other(Error::EncodingError)
}
}
pub type RnResult<T, S> = Result<T, Error<S>>;