diff --git a/src/embedded_time.rs b/src/embedded_time.rs index 544a737..06257cf 100644 --- a/src/embedded_time.rs +++ b/src/embedded_time.rs @@ -4,7 +4,7 @@ use crate::{ interface::{ReadData, WriteData}, Ds323x, Error, Rtcc, }; -use core::cell::RefCell; +use core::cell::{RefCell, RefMut}; use core::convert::From; use embedded_time::{clock, Clock, Instant, Period}; @@ -33,11 +33,8 @@ where fn now(&self) -> Result, clock::Error> { let datetime = self - .dev - .try_borrow_mut() - .map_err(|_| clock::Error::Other(Self::ImplError::CouldNotAcquireDevice))? - .get_datetime() - .map_err(|e| clock::Error::Other(Self::ImplError::Other(e)))?; + .do_on_inner(|mut dev| dev.get_datetime()) + .map_err(clock::Error::Other)?; Ok(Instant::new((datetime.timestamp_millis() as u64) / 1_000)) } } @@ -59,13 +56,13 @@ impl Ds323xWrapper { self.dev.into_inner() } } -/* + impl Ds323xWrapper where DI: ReadData> + WriteData>, { /// Run function on mutable borrowed inner device - pub fn do_on_borrow_mut( + pub fn do_on_inner( &self, f: impl FnOnce(RefMut>) -> Result>, ) -> Result> { @@ -76,4 +73,3 @@ where f(dev).map_err(WrapperError::Other) } } -*/