Newer
Older

Zoe Pfister
committed
//
// Created by cynthya on 10/6/22.
//
#ifndef CLIENT_MEASUREMENTDATA_HPP
#define CLIENT_MEASUREMENTDATA_HPP
#include "ArduinoJson.h"

Zoe Pfister
committed
#include "SensorInformation.hpp"
#include <list>
#include <optional>
#include <string>
#include <utility>

Zoe Michaela Dietmar Pfister
committed
#include <MeasurementTypes.h>

Zoe Michaela Dietmar Pfister
committed
#include <GlobalDefinitions.hpp>

Zoe Pfister
committed
class MeasurementData {

Zoe Michaela Dietmar Pfister
committed
public:
MeasurementData(double value,

Zoe Michaela Dietmar Pfister
committed
int channel,
int i2cAddress,

Zoe Michaela Dietmar Pfister
committed
MeasurementType measurementType)
: value(value), measurementType(measurementType), channel(channel),
i2cAddress(i2cAddress) {
}
MeasurementData(double value, MeasurementType measurementType)
: value(value), measurementType(measurementType) {

Zoe Michaela Dietmar Pfister
committed
channel = NO_CHANNEL;
i2cAddress = NO_I2C_ADDRESS;

Zoe Michaela Dietmar Pfister
committed
}
[[nodiscard]] double getValue() const { return value; }
[[nodiscard]] const MeasurementType &
getMeasurementType() const { return measurementType; }
[[nodiscard]] std::string getMeasurementTypeString() const {
return MeasurementTypes::measurementTypeToString(measurementType);
}

Zoe Michaela Dietmar Pfister
committed
[[nodiscard]] const int &getChannel() const { return channel; }

Zoe Michaela Dietmar Pfister
committed

Zoe Michaela Dietmar Pfister
committed
[[nodiscard]] const int &

Zoe Michaela Dietmar Pfister
committed
getI2CAddress() const { return i2cAddress; }
private:
double value;

Zoe Michaela Dietmar Pfister
committed
MeasurementType measurementType;

Zoe Michaela Dietmar Pfister
committed
// TODO: is it possible for a sensor to have both a channel and an i2cAddress?

Zoe Michaela Dietmar Pfister
committed
int channel = NO_CHANNEL;
int i2cAddress = NO_I2C_ADDRESS;

Zoe Pfister
committed
};

Zoe Pfister
committed
#endif // CLIENT_MEASUREMENTDATA_HPP