Expose function to interact with inner device

embedded-time-no-error-trait
Diego Barrios Romero 2020-07-19 23:24:12 +02:00
parent 9e9b1a79de
commit 838f71447c
1 changed files with 5 additions and 9 deletions

View File

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