#include "ProcessManager.h"
#include "myProcesses.h"
// global variables
ProcessManager* pProcessManager;
Servo servo[3];
volatile byte readVal = LOW;
volatile int analogVal = 0;
void setup()
{
  // create the process manager
  pProcessManager = new ProcessManager();
  // add some processes
  for (int i = 0; i != 6; i++)
  {
    ProcessPtr pProcess = new blinkProcess(i + 8, (i + 1) * 200);
    pProcessManager->attach(pProcess);
  }
  servo[0].attach(5);
  servo[1].attach(3);
  servo[2].attach(6);
  ProcessPtr pProcess = new waitProcess(6000);
  pProcess->setFollow(new sweepProcess(&servo[0], 2000));
  pProcessManager->attach(pProcess);
  pProcessManager->attach(new sweepProcess(&servo[1], 4000));
  pProcessManager->attach(new digitalReadProcess(2, &readVal));
  pProcessManager->attach(new analogReadProcess(A0, &analogVal));
  pProcessManager->attach(new servoProcess(&servo[2], &analogVal));
  //  Serial.begin(9600);
}
void loop()
{
  byte prevVal = readVal;
  pProcessManager->onLoop();
  if (readVal != prevVal && readVal == LOW)
  {
    for (int i = 0; i != 6; i++)
    {
      ProcessPtr pProcess = new blinkProcess(i + 8, (i + 1) * 200);
      pProcessManager->attach(pProcess);
    }
  }
  //    Serial.print(readVal==LOW?"0 ":"1 ");
  //    Serial.println(analogVal);
}