#include <mechButton.h>
#include <timeObj.h>

#define LED_PIN   4
#define MAX_SEC   10

mechButton  addBtn(2);
mechButton  stopBtn(3);
timeObj     oneSec(1000,false);
int         numSeconds;
bool        pumping;

void setup() {

  Serial.begin(115200);
  numSeconds = 0;
  pumping = 0;
  addBtn.setCallback(addClicked);
  stopBtn.setCallback(stopClicked);
  pinMode(LED_PIN, OUTPUT);
}

// These two actually start and stop the pump.
void startPump(void) {

  if (numSeconds>0) {
    digitalWrite(LED_PIN, HIGH);
    oneSec.start();
    pumping = true;
    Serial.println("PUMP ON!!");
  }
}


void stopPump(void) {

  digitalWrite(LED_PIN, LOW);
  oneSec.reset();
  numSeconds = 0;
  pumping = false;
  Serial.println("PUMP OFF!!");
  Serial.println("----------");
}


// If you click the add button
void addClicked(void) {

  if (!addBtn.getState()) {
    if (numSeconds<MAX_SEC) {
      numSeconds++;
      if (!pumping) {
        startPump();
      }
    }
  }
}


// IF you click the stop button.
void stopClicked(void) {

  if (!stopBtn.getState()) {
    stopPump();
  }
}


void loop() {

  idle();
  if (pumping) {
    if (oneSec.ding()) {
      numSeconds--;
      if (numSeconds) {
        oneSec.stepTime();
        Serial.println(numSeconds);
      } else {
        stopPump();
      }
    }
  }
}