Improve documentation

pull/4/head
Diego Barrios Romero 2018-10-31 06:43:15 +01:00
parent 05368a36c9
commit a12e165281
1 changed files with 13 additions and 4 deletions

View File

@ -1,4 +1,4 @@
//! Device configuration //! Device status
extern crate embedded_hal as hal; extern crate embedded_hal as hal;
use super::super::{ Ds323x, Register, BitFlags, Error }; use super::super::{ Ds323x, Register, BitFlags, Error };
@ -8,7 +8,7 @@ impl<DI, IC, E> Ds323x<DI, IC>
where where
DI: ReadData<Error = E> + WriteData<Error = E> DI: ReadData<Error = E> + WriteData<Error = E>
{ {
/// Read busy status. /// Read the busy status
pub fn is_busy(&mut self) -> Result<bool, Error<E>> { pub fn is_busy(&mut self) -> Result<bool, Error<E>> {
let status = self.iface.read_register(Register::STATUS)?; let status = self.iface.read_register(Register::STATUS)?;
Ok((status & BitFlags::BUSY) != 0) Ok((status & BitFlags::BUSY) != 0)
@ -16,14 +16,21 @@ where
/// Read whether the oscillator is stopped or has been stopped at /// Read whether the oscillator is stopped or has been stopped at
/// some point. /// some point.
///
/// This allows a better assessment of the validity of the timekeeping data.
///
/// Once this is true, it will stay as such until cleared with
/// [`clear_has_been_stopped_flag`](#method.clear_has_been_stopped_flag)
pub fn has_been_stopped(&mut self) -> Result<bool, Error<E>> { pub fn has_been_stopped(&mut self) -> Result<bool, Error<E>> {
let status = self.iface.read_register(Register::STATUS)?; let status = self.iface.read_register(Register::STATUS)?;
Ok((status & BitFlags::OSC_STOP) != 0) Ok((status & BitFlags::OSC_STOP) != 0)
} }
/// Clear the has been stopped flag. /// Clear flag signalling whether the oscillator is stopped or has been
/// stopped at some point.
/// ///
/// (Does not alter the device register if already cleared). /// (Does not alter the device register if already cleared).
/// See also: [`has_been_stopped()`](#method.has_been_stopped)
pub fn clear_has_been_stopped_flag(&mut self) -> Result<(), Error<E>> { pub fn clear_has_been_stopped_flag(&mut self) -> Result<(), Error<E>> {
let status = self.iface.read_register(Register::STATUS)?; let status = self.iface.read_register(Register::STATUS)?;
if (status & BitFlags::OSC_STOP) != 0 { if (status & BitFlags::OSC_STOP) != 0 {
@ -33,6 +40,9 @@ where
} }
/// Read the temperature. /// Read the temperature.
///
/// Note: It is possible to manually force a temperature conversion with
/// [`convert_temperature()`](#method.convert_temperature)
pub fn get_temperature(&mut self) -> Result<f32, Error<E>> { pub fn get_temperature(&mut self) -> Result<f32, Error<E>> {
let mut data = [Register::TEMP_MSB, 0, 0]; let mut data = [Register::TEMP_MSB, 0, 0];
self.iface.read_data(&mut data)?; self.iface.read_data(&mut data)?;
@ -43,7 +53,6 @@ where
Ok(temp_sign_extended as i16 as f32 * 0.25) Ok(temp_sign_extended as i16 as f32 * 0.25)
} }
else { else {
let temp = ((data[1] as u16) << 2) | (data[2] >> 6) as u16;
Ok(temp as f32 * 0.25) Ok(temp as f32 * 0.25)
} }
} }