#include <Arduino.h>
#include "Btn.h"

Btn::Btn(int pin, unsigned long debounce_delay) {
	pinMode(pin, INPUT_PULLUP);
	_pin = pin;
  _debounce_delay = debounce_delay;
  _last_reading = HIGH;
  _last_state = HIGH;
  _last_debounce_time = 0;
}

void Btn::checkState(){
  int reading = digitalRead(_pin);
  if (reading != _last_reading) {
    _last_debounce_time = millis();
  }
  if ((millis() - _last_debounce_time) > _debounce_delay) {
    if (reading != _state) {
      SerialUSB.print(_pin);
      SerialUSB.println(_state);
      _state = reading;
    }
  }
  _last_reading = reading;
}

int Btn::getState(){
  this->checkState();
  return _state;
}

int Btn::getStateOnce(){
  this->checkState();
  if(_state != _last_state){
    _last_state = _state;
    return _state;
  }else{
    return -1;
  }
}