#ifndef _SENSORS

#define _SENSORS

#define INA260_5VREG_ADDR 0x40
#define INA260_CAM_ADDR 0x41
#define INA260_INTBATT_ADDR 0x44
#define INA260_EXTBATT_ADDR 0x45

#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#include "Config.h"

Adafruit_BME280 _bme; // I2C

class Sensors {

    private:
        bool sensorsValid;

    public:

        float temperature;
        float pressure;
        float humidity;

        Sensors() {
            sensorsValid = false;

        }

        bool begin() {

            sensorsValid = true;

            // status = bme.begin(0x76, &Wire2)
            // You can also pass in a Wire library object like &Wire2
            int status = _bme.begin(0x77, &Wire);        // Default : BME280_ADDRESS = 0x77 according to schematic
            if (!status) {
                DEBUGPORT.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
                DEBUGPORT.print("SensorID was: 0x"); Serial.println(_bme.sensorID(),16);
                DEBUGPORT.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
                DEBUGPORT.print("   ID of 0x56-0x58 represents a BMP 280,\n");
                DEBUGPORT.print("        ID of 0x60 represents a BME 280.\n");
                DEBUGPORT.print("        ID of 0x61 represents a BME 680.\n");
                sensorsValid = false;
            }

            return sensorsValid;

        }

        void update() {
            if (!sensorsValid)
                return;

            temperature = _bme.readTemperature();
            pressure = _bme.readPressure();
            humidity = _bme.readHumidity();

        }

        void printEnv() {
            if (!sensorsValid)
                return;
            temperature = _bme.readTemperature();
            pressure = _bme.readPressure();
            humidity = _bme.readHumidity();
            String output = "$BME280," + String(temperature) + "," + String(pressure) + "," + String(humidity);
            UI1.println(output);
        }
};

#endif