From 802bf417ccd212d175f827ec100a28d17133c3e2 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 2 Dec 2020 14:24:57 -0800 Subject: [PATCH] tool: Use From for slightly neater error handling --- tool/src/access/hid.rs | 4 ++-- tool/src/access/lpc/linux.rs | 10 +++++----- tool/src/error.rs | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/tool/src/access/hid.rs b/tool/src/access/hid.rs index 0455096..5054f52 100644 --- a/tool/src/access/hid.rs +++ b/tool/src/access/hid.rs @@ -38,12 +38,12 @@ impl AccessHid { hid_data[HID_DATA + i] = data[i]; } - let count = self.device.write(&hid_data).map_err(Error::Hid)?; + let count = self.device.write(&hid_data)?; if count != hid_data.len() { return Err(Error::Verify); } - let count = self.device.read_timeout(&mut hid_data[1..], self.timeout).map_err(Error::Hid)?; + let count = self.device.read_timeout(&mut hid_data[1..], self.timeout)?; if count == hid_data.len() - 1 { for i in 0..data.len() { data[i] = hid_data[HID_DATA + i]; diff --git a/tool/src/access/lpc/linux.rs b/tool/src/access/lpc/linux.rs index 3b2aefb..6334c79 100644 --- a/tool/src/access/lpc/linux.rs +++ b/tool/src/access/lpc/linux.rs @@ -111,8 +111,8 @@ impl AccessLpcLinux { ))); } - let cmd = PortLock::new(SMFI_CMD_BASE, SMFI_CMD_BASE + SMFI_CMD_SIZE as u16 - 1).map_err(Error::Io)?; - let dbg = PortLock::new(SMFI_DBG_BASE, SMFI_DBG_BASE + SMFI_DBG_SIZE as u16 - 1).map_err(Error::Io)?; + let cmd = PortLock::new(SMFI_CMD_BASE, SMFI_CMD_BASE + SMFI_CMD_SIZE as u16 - 1)?; + let dbg = PortLock::new(SMFI_DBG_BASE, SMFI_DBG_BASE + SMFI_DBG_SIZE as u16 - 1)?; Ok(Self { cmd, dbg, @@ -122,18 +122,18 @@ impl AccessLpcLinux { /// Read from the command space unsafe fn read_cmd(&mut self, addr: u8) -> Result { - self.cmd.read(addr as u16).map_err(Error::Io) + Ok(self.cmd.read(addr as u16)?) } /// Write to the command space unsafe fn write_cmd(&mut self, addr: u8, data: u8) -> Result<(), Error> { - self.cmd.write(addr as u16, data).map_err(Error::Io) + Ok(self.cmd.write(addr as u16, data)?) } /// Read from the debug space //TODO: better public interface pub unsafe fn read_debug(&mut self, addr: u8) -> Result { - self.dbg.read(addr as u16).map_err(Error::Io) + Ok(self.dbg.read(addr as u16)?) } /// Returns Ok if a command can be sent diff --git a/tool/src/error.rs b/tool/src/error.rs index cdfca47..bfc7636 100644 --- a/tool/src/error.rs +++ b/tool/src/error.rs @@ -26,3 +26,17 @@ pub enum Error { #[cfg(feature = "hidapi")] Hid(hidapi::HidError), } + +#[cfg(feature = "std")] +impl From for Error { + fn from(error: std::io::Error) -> Self { + Self::Io(error) + } +} + +#[cfg(feature = "hidapi")] +impl From for Error { + fn from(error: hidapi::HidError) -> Self { + Self::Hid(error) + } +}