#include "fsm.h"


void startState(FSM& fsm) {
  Serial.println("Press button A to start.");
  fsm.newState(waitState);
}

void waitState(FSM& fsm) {
  if (digitalRead(2) == LOW) {
    Serial.println("Entering run state, press B to restart, press C to stop.");
    fsm.newState(runState);
  }
}

void runState(FSM& fsm) {
  if (digitalRead(3) == LOW) {
    Serial.println("Restarting.");
    fsm.newState(startState);
  }
  if (digitalRead(4) == LOW) {
    Serial.println("Entering stop state.");
    fsm.newState(stopState);
  }
}

void stopState(FSM&) {}


void setup() {
  Serial.begin(9600);

  for (size_t i = 2; i <= 4; i++) {
    pinMode(i, INPUT_PULLUP);
  }
}

void loop() {
  static FSM fsm(startState);

  fsm.loop();
}