From e8d0109f9f358ebff90be8f098889762013a1664 Mon Sep 17 00:00:00 2001 From: Patricio Whittingslow Date: Tue, 30 Nov 2021 11:32:55 -0300 Subject: [PATCH] add Sensor interface and Measurement type --- sensor.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sensor.go diff --git a/sensor.go b/sensor.go new file mode 100644 index 000000000..f6600441c --- /dev/null +++ b/sensor.go @@ -0,0 +1,36 @@ +package drivers + +// Measurement specifies a type of measurement, +// for example: temperature, acceleration, pressure. +type Measurement uint32 + +// Sensor measurements +const ( + Voltage Measurement = 1 << iota + Temperature + Humidity + Pressure + Distance + Acceleration + AngularVelocity + MagneticField + Luminosity + Time + // Add Measurements above AllMeasurements. + + // AllMeasurements is the OR of all Measurement values. It ensures all measurements are done. + AllMeasurements Measurement = (1 << 32) - 1 +) + +// Sensor represents an object capable of making one +// or more measurements. A sensor will then have methods +// which read the last updated measurements. +// +// Many Sensors may be collected into +// one Sensor interface to synchronize measurements. +type Sensor interface { + // Update performs IO to update the measurements of a sensor. + // It shall return error only when the sensor encounters an error that prevents it from + // storing all or part of the measurements it was called to do. + Update(which Measurement) error +}