Crate sensors
sensors only.Expand description
Provides a sensor abstraction layer.
§Definitions
In the context of this abstraction:
- A sensor device is a device measuring one or multiple physical quantities and reporting them as one or more digital values—we call these values samples.
- Sensor devices measuring the same physical quantity are said to be part of the same sensor category. A sensor device may be part of multiple sensor categories.
- A measurement is the physical operation of measuring one or several physical quantities.
- A reading is the digital result returned by a sensor device after carrying out a measurement. Samples of different physical quantities can therefore be part of the same reading.
- A sensor driver refers to a sensor device as exposed by the sensor abstraction layer.
- A sensor driver instance is an instance of a sensor driver.
§Goals
This abstraction has two main goals:
- Providing a unified way of accessing the readings from all registered sensor driver instances in a homogeneous way.
- Making it easy and as transparent as possible to substitute a specific sensor device by a similar one from the same category.
§Accessing sensor driver instances
Registered sensor driver instances can be accessed using
REGISTRY::sensors().
Sensor drivers implement the Sensor trait, which allows to trigger measurements and obtain
the resulting readings.
§Obtaining a sensor reading
After triggering a measurement with Sensor::trigger_measurement(), a reading can be
obtained using Sensor::wait_for_reading().
It is additionally necessary to use Sensor::reading_channels() to make sense of the obtained
reading:
Sensor::wait_for_reading()returns aSamples, a data “tuple” containing values returned by the sensor driver.Sensor::reading_channels()returns aReadingChannelswhich indicates which physical quantity eachSamplefrom that tuple corresponds to, using aLabel. For instance, this allows to disambiguate the values provided by a temperature & humidity sensor.
To avoid handling floats, Samples returned by Sensor::wait_for_reading()
are integers, and a fixed scaling value is provided in
ReadingChannel, for each Sample returned.
See Sample for more details.
§For implementors
Sensor drivers must implement the Sensor trait.
Modules§
- registry
- Provides a sensor driver instance registry, allowing to register sensor driver instances and access them in a centralized location.
- sensor
- Provides a
Sensortrait abstracting over implementation details of a sensor driver. - signal
- This module contains a custom
Signalstruct meant to be used in the [ariel-os-sensors][ariel-os-sensors] ecosystem.
Enums§
- Category
- Categories a sensor driver can be part of.
- Label
- Label of a
Samplepart of aSamplestuple. - Measurement
Unit - Represents a unit of measurement.
Statics§
- REGISTRY
- The global registry instance.
Traits§
- Reading
- Implemented on
Samples, returned bySensor::wait_for_reading(). - Sensor
- This trait must be implemented by sensor drivers.