riot_sys

Struct phydat_t

source
#[repr(C)]
pub struct phydat_t { pub val: [i16; 3], pub unit: u8, pub scale: i8, }
Expand description

@brief Generic data structure for expressing physical values

Physical data is expressed in a 3-dimensional tuple of values. In addition to the data fields, this struct contains further the (physical) unit and the scale factor of the data. The unit is expressed as constant. The scale factor is expressed as power of 10 (10^factor).

The combination of signed 16-bit numbers with and the scale factor gives us a very high dynamic range (from -3210^-131 to 3210^130). In a wider sense we are saving the values as fixed floating points…

The scale factor is identical for all 3 values.

In a traditional (scientific) computational system the obvious choice for the used data type would be to use floats. We are however on heavily resource constrained (even 8-bit) embedded systems, so we use int16_t here. As most sensor are in some way ADC based, they normally do not use a higher accuracy than 12-14bit, so using 16-bit integers to represent this data is good enough in most cases.

Fields§

§val: [i16; 3]

< the 3 generic dimensions of data

§unit: u8

< the (physical) unit of the data

§scale: i8

< the scale factor, 10^scale

Trait Implementations§

source§

impl Clone for phydat_t

source§

fn clone(&self) -> phydat_t

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for phydat_t

source§

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

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

impl Default for phydat_t

source§

fn default() -> phydat_t

Returns the “default value” for a type. Read more
source§

impl Copy for phydat_t

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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes