Implemented From trait for InitializeError

This commit is contained in:
Jonah Dahlquist 2020-11-24 19:31:59 -08:00
commit 2f26a508da

View file

@ -19,7 +19,12 @@ pub enum InitializeError<SpiError> {
SpiError(SpiError), SpiError(SpiError),
ChipNotConnected, ChipNotConnected,
} }
// TODO add From impl and remove map_errs
impl<SpiError> From<SpiError> for InitializeError<SpiError> {
fn from(error: SpiError) -> InitializeError<SpiError> {
InitializeError::SpiError(error)
}
}
impl<SpiBus: ActiveBus> UninitializedDevice<SpiBus> { impl<SpiBus: ActiveBus> UninitializedDevice<SpiBus> {
pub fn new(bus: SpiBus) -> UninitializedDevice<SpiBus> { pub fn new(bus: SpiBus) -> UninitializedDevice<SpiBus> {
@ -70,13 +75,10 @@ impl<SpiBus: ActiveBus> UninitializedDevice<SpiBus> {
// RESET // RESET
let mode = [0b10000000]; let mode = [0b10000000];
self.bus self.bus
.write_frame(register::COMMON, register::common::MODE, &mode) .write_frame(register::COMMON, register::common::MODE, &mode)?;
.map_err(InitializeError::SpiError)?;
self.set_mode(mode_options) self.set_mode(mode_options)?;
.map_err(InitializeError::SpiError)?; host.refresh(&mut self.bus)?;
host.refresh(&mut self.bus)
.map_err(InitializeError::SpiError)?;
Ok(Device::new(self.bus, host)) Ok(Device::new(self.bus, host))
} }
@ -86,8 +88,7 @@ impl<SpiBus: ActiveBus> UninitializedDevice<SpiBus> {
) -> Result<(), InitializeError<SpiBus::Error>> { ) -> Result<(), InitializeError<SpiBus::Error>> {
let mut version = [0]; let mut version = [0];
self.bus self.bus
.read_frame(register::COMMON, register::common::VERSION, &mut version) .read_frame(register::COMMON, register::common::VERSION, &mut version)?;
.map_err(InitializeError::SpiError)?;
if version[0] != expected_version { if version[0] != expected_version {
Err(InitializeError::ChipNotConnected) Err(InitializeError::ChipNotConnected)
} else { } else {