#ifndef HUMIDITY_HH10D_H
#define HUMIDITY_HH10D_H

#include <Arduino.h>
#include "TypesLib.h"
#include <Wire.h>

class HumidityHH10D
{
public:
  static const int HH10D = 0x51;

  int i2addr;
  int freqIRQ;
  int sens;
  int offs;
  double freq;
  bool freqReady;
  
  HumidityHH10D(int i2addr, int freqIRQ);
  void getCoeff();
  double calcRH(double freq);
  void startFreq(long timeSpan);

protected:  
  static unsigned long cnt;
  static unsigned long startTime;
  static unsigned long timeSpan;  
  static HumidityHH10D* cur;
  
  static void interrupt()
  {
     cnt++;
     if (millis() >= (startTime + timeSpan))
     {
       unsigned long time = millis();
       detachInterrupt(cur->freqIRQ);
       /*
       Serial.print("cnt:");
       Serial.print(cnt);
       Serial.print(" time:");
       Serial.println(time-startTime);
       */
       cur->freq = (double)cnt * 500.0 / (double)(time - startTime);
       cur->freqReady = true;  
       cur = NULL;     
     }
  }

};

#endif

