Files
firmware/src/modules/Telemetry/Sensor/TelemetrySensor.h

42 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "../mesh/generated/telemetry.pb.h"
2022-05-01 14:26:05 -05:00
#include "NodeDB.h"
#include "main.h"
#define DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS 1000
2022-05-07 20:31:21 +10:00
class TelemetrySensor
{
protected:
TelemetrySensor(TelemetrySensorType sensorType, const char *sensorName)
{
this->sensorName = sensorName;
this->sensorType = sensorType;
this->status = 0;
}
const char *sensorName;
TelemetrySensorType sensorType;
unsigned status;
int32_t initI2CSensor() {
if (!status) {
2022-12-29 20:41:37 -06:00
LOG_DEBUG("Could not connect to detected %s sensor.\n Removing from nodeTelemetrySensorsMap.\n", sensorName);
nodeTelemetrySensorsMap[sensorType] = 0;
} else {
2022-12-29 20:41:37 -06:00
LOG_DEBUG("Opened %s sensor on default i2c bus\n", sensorName);
setup();
}
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
virtual void setup();
2022-05-07 20:31:21 +10:00
public:
bool hasSensor() {
return sensorType < sizeof(nodeTelemetrySensorsMap) && nodeTelemetrySensorsMap[sensorType] > 0;
}
virtual int32_t runOnce() = 0;
virtual bool getMetrics(Telemetry *measurement) = 0;
};