Skip to main content

Measurement

Struct Measurement 

Source
pub struct Measurement {
    pub temperature_raw: u16,
    pub humidity_raw: u16,
}
Expand description

One temperature and humidity data pair, as the part returns it.

The part sends the temperature word, its CRC, the humidity word, and its CRC, in that order, after a single-shot command or command::FETCH_DATA. parse checks both CRCs before exposing either word.

§Examples

use pamoja_sensors::sht3x::{
    humidity_raw_from_milli_percent, temperature_raw_from_milli_celsius, Measurement,
};

// What a part at 25.0 °C and 60.0 %RH puts on the bus after a single-shot command.
let bytes = Measurement {
    temperature_raw: temperature_raw_from_milli_celsius(25_000),
    humidity_raw: humidity_raw_from_milli_percent(60_000),
}
.to_bytes();
assert_eq!(bytes, [0x66, 0x66, 0x93, 0x99, 0x99, 0xBE]);

let measurement = Measurement::parse(&bytes)?;
assert_eq!(measurement.temperature_milli_celsius(), 25_000);
assert_eq!(measurement.humidity_milli_percent(), 60_000);

Fields§

§temperature_raw: u16

The 16-bit temperature word, S_T in the datasheet.

§humidity_raw: u16

The 16-bit humidity word, S_RH in the datasheet.

Implementations§

Source§

impl Measurement

Source

pub fn parse(bytes: &[u8; 6]) -> Result<Measurement, SensorError>

Parses and CRC-checks a six-byte measurement frame.

§Arguments
  • bytes - the six bytes in the order the part sends them: temperature MSB, LSB, CRC, then humidity MSB, LSB, CRC.
§Returns

The two raw words.

§Errors

Returns SensorError::Crc if either CRC byte does not match its two data bytes, so the read was corrupted and must be repeated.

Source

pub fn to_bytes(&self) -> [u8; 6]

Returns the six bytes a part holding this pair puts on the bus.

The inverse of parse, with both CRCs filled in so the result parses.

§Returns

Temperature MSB, LSB, CRC, then humidity MSB, LSB, CRC.

Source

pub fn temperature_milli_celsius(&self) -> i32

Returns the temperature in millidegrees Celsius.

§Returns

The temperature, rounded to the nearest millidegree.

Source

pub fn temperature_celsius(&self) -> f32

Returns the temperature in degrees Celsius.

§Returns

The temperature in degrees Celsius.

Source

pub fn temperature_milli_fahrenheit(&self) -> i32

Returns the temperature in millidegrees Fahrenheit.

§Returns

The temperature, rounded to the nearest millidegree.

Source

pub fn temperature_fahrenheit(&self) -> f32

Returns the temperature in degrees Fahrenheit.

§Returns

The temperature in degrees Fahrenheit.

Source

pub fn humidity_milli_percent(&self) -> u32

Returns the relative humidity in thousandths of a percent.

§Returns

The relative humidity, rounded to the nearest thousandth of a percent.

Source

pub fn relative_humidity(&self) -> f32

Returns the relative humidity in percent.

§Returns

The relative humidity in percent.

Trait Implementations§

Source§

impl Clone for Measurement

Source§

fn clone(&self) -> Measurement

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Measurement

Source§

impl Debug for Measurement

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Measurement

Source§

impl PartialEq for Measurement

Source§

fn eq(&self, other: &Measurement) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Measurement

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.