projet3_temperature/lib/MeasureUnit_ESP8266_LTC2439/MeasureUnit.h

51 lines
1.6 KiB
C++

#ifndef MEASUREUNIT_H
#define MEASUREUNIT_H
#include <LTC2439.h>
#include "ThermistorSettings.h"
class MeasureUnit
{
public:
enum ERROR {OK = 0, MALLOC_ERR = 1};
MeasureUnit(uint16_t thermistorCount, uint64_t precResistor, ThermistorSettings thermistorSettings, LTC2439 &adc);
~MeasureUnit();
void init();
void run();
void setGlobalTempOffset(double offset);
double getGlobalTempOffset();
double *getROffsetMap();
//Async methods
enum STATE {IDLING, MEASURING, COMPUTING, MEASUREMENT_READY};
boolean startTemperatureMeasurement();
boolean isMeasurementReady();
double *getAsyncTemperatures();
//End of assync methods
ERROR getError(){return _error;}
protected:
private:
double computeTemperature(double beta, double resistance, double rAt25);
double _globalOffset; //Correspond à l'offset global nécessaire afin d'avoir une température qui corresponde à la réalité
double *_temperatures; //Tableau contenant toutes les températures
double *_rOffsetMap,*_rOffsetBuffer; //Tableau qui contient les offsets individuels pour chaque thermistance
double *_resistanceMap; //Tableau qui contient les resistances associées aux thermistances (pour debug seulement)
uint16_t _thermistorCount;
uint64_t _precResistor;
ERROR _error;
LTC2439 &_adc;
ThermistorSettings _thermistorSettings;
//Async part
STATE _state;
uint8_t _channel, _offsetComputeIte,_offsetCounter;
double _courant[2];
boolean _triggerLevelOff; //Attribut permettant de savoir si un étalonnage a été demandé
};
#endif //MEASUREUNIT_H