mirror of https://github.com/eldruin/ds323x-rs
Improve documentation
parent
05368a36c9
commit
a12e165281
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue