#ifndef MEASUREUNIT_H #define MEASUREUNIT_H #include #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