#pragma once
//
//    FILE: DHT12.h
//  AUTHOR: Rob Tillaart
// VERSION: 0.5.0
// PURPOSE: Arduino library for I2C DHT12 temperature and humidity sensor.
//     URL: https://github.com/RobTillaart/DHT12


#include "Arduino.h"
#include "Wire.h"

#define DHT12_LIB_VERSION                    (F("0.5.0"))

#define DHT12_OK                             0
#define DHT12_ERROR_CHECKSUM                -10
#define DHT12_ERROR_CONNECT                 -11
#define DHT12_MISSING_BYTES                 -12


class DHT12
{
public:
  DHT12(TwoWire *wire = &Wire);        //  to be tested explicitly

  bool     begin();

  bool     isConnected();

  int8_t   read();
  float    getHumidity();
  float    getTemperature();

  //  allows 1st order calibration
  void     setHumOffset(float offset = 0);
  void     setTempOffset(float offset = 0);
  float    getHumOffset();
  float    getTempOffset();

  uint32_t lastRead();


private:
  float    _humidity;
  float    _temperature;
  float    _humOffset;
  float    _tempOffset;
  uint8_t  _bits[5];
  uint32_t _lastRead;

  int      _readSensor();
  TwoWire* _wire;
};


//  -- END OF FILE --

