#ifndef ADC_H #define ADC_H #include "AdcSetting.h" class Adc { public: virtual ~Adc() = 0; virtual void begin() = 0; virtual double getQuantum(); virtual double sampleValue(int16_t channel, boolean sgl = true) = 0; virtual double sampleValue() = 0; virtual double sampleVoltage(int16_t channel, boolean sgl = true) = 0; virtual double sampleVoltage() = 0; //Async methods enum STATE {STARTED = 0, RESULT_READY, IDLING, SAMPLING}; virtual void startSample(int16_t channel, boolean sgl = true) = 0; virtual void startSample() = 0; virtual double getSampleVoltage() = 0; boolean isSampleReady(); double getSampleValue(); //End of async methods void setAdcSetting(AdcSetting adcSetting); AdcSetting getAdcSetting(); protected: Adc(); int16_t _lastChannel; AdcSetting _adcSetting; //Async part STATE _state; double _sampledValue; uint8_t _numOfSamples; unsigned long _elapsedTime; private: }; #endif //ADC_H