// -----------------------------------------------------------------------------
|
|
// Median Filter
|
|
// -----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
typedef enum magnitude_t {
|
|
|
|
MAGNITUDE_NONE = 0,
|
|
|
|
MAGNITUDE_TEMPERATURE,
|
|
MAGNITUDE_HUMIDITY,
|
|
MAGNITUDE_PRESSURE,
|
|
|
|
MAGNITUDE_ACTIVE_POWER,
|
|
MAGNITUDE_APPARENT_POWER,
|
|
MAGNITUDE_REACTIVE_POWER,
|
|
MAGNITUDE_VOLTAGE_POWER,
|
|
MAGNITUDE_CURRENT_POWER,
|
|
MAGNITUDE_ENERGY_POWER,
|
|
MAGNITUDE_POWER_FACTOR,
|
|
|
|
MAGNITUDE_ANALOG,
|
|
MAGNITUDE_EVENTS,
|
|
|
|
MAGNITUDE_MAX,
|
|
|
|
} magnitude_t;
|
|
|
|
class BaseSensor {
|
|
|
|
public:
|
|
|
|
BaseSensor() {
|
|
}
|
|
|
|
~BaseSensor() {
|
|
}
|
|
|
|
// Pre-read hook (usually to populate registers with up-to-date data)
|
|
virtual void pre();
|
|
|
|
// Post-read hook (usually to reset things)
|
|
virtual void post();
|
|
|
|
// Return sensor status (true for ready)
|
|
virtual bool status();
|
|
|
|
// Return sensor last internal error
|
|
virtual int error();
|
|
|
|
// Number of available slots
|
|
virtual unsigned char count();
|
|
|
|
// Descriptive name of the sensor
|
|
virtual String name();
|
|
|
|
// Descriptive name of the slot # index
|
|
virtual String slot(unsigned char index);
|
|
|
|
// Type for slot # index
|
|
virtual magnitude_t type(unsigned char index);
|
|
|
|
// Current value for slot # index
|
|
virtual double value(unsigned char index);
|
|
|
|
|
|
private:
|
|
|
|
};
|