/*
 * Sensors.h
 * Includes two INA260 objects and one BME280 for use with DiSCO m-spec board
 * Based on Paul Roberts' code, modifications by IH - April 2023
 *
 */

#ifndef _SENSORS

#define _SENSORS

//#include <Arduino.h>
//#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_INA260.h>

//#include "Config.h"

inline Adafruit_BME280 _bme; // I2C
inline Adafruit_INA260 _ina260_pwrin = Adafruit_INA260();
inline Adafruit_INA260 _ina260_LEDs = Adafruit_INA260();
// global variables need to be inline if defined in the .h file, now that I've separated out cpp file
// https://stackoverflow.com/questions/19929681/c-global-variable-declaration

class Sensors {

    private:
        bool sensorsValid;
   
    public:

        float voltage[2];
        float current[2];
        float power[2];
        float temperature;
        float pressure;
        float humidity;

        // constructor
        Sensors();

        // methods
        bool begin();
        void update();
        void printEnv(Stream * out);
        void printEnv();
        void printPower(Stream * out);
        void printPower();
        void printPwr1(Stream * out);
        void printPwr1();
        void printPwr2(Stream * out);
        void printPwr2();
        void shutdown_Power();
        void resumeCont_Power();
        void triggerPower();
        bool convReady_Power();

        // INA260 config wrappers
        void setCurrentConversionTime(INA260_ConversionTime time);
        void setVoltageConversionTime(INA260_ConversionTime time);
        void setCurrentVoltageAvging(INA260_AveragingCount count);
        
};

#endif