//-*-c++-*-
#ifndef INCLUDED_BARK_FLASH_h_
#define INCLUDED_BARK_FLASH_h_
 
#include "Behaviors/StateMachine.h"
#include "Events/EventRouter.h"

class BarkFlash : public StateNode {

public:
    BarkFlash() : StateNode("Bark and Flash") {}
    virtual void setup() {
#statemachine
startnode:StateNode

redForward: LedNode [getMC()->flash(ChiaraInfo::RedLEDMask, 1000);]
yellowForward: LedNode [getMC()->flash(ChiaraInfo::YellowLEDMask, 1000);]
greenForward: LedNode [getMC()->flash(ChiaraInfo::GreenLEDMask, 1000);]
blueForward: LedNode [getMC()->flash(ChiaraInfo::BlueLEDMask, 1000);]

redBackward: LedNode [getMC()->flash(ChiaraInfo::RedLEDMask, 1000);]
yellowBackward: LedNode [getMC()->flash(ChiaraInfo::YellowLEDMask, 1000);]
greenBackward: LedNode [getMC()->flash(ChiaraInfo::GreenLEDMask, 1000);]
blueBackward: LedNode [getMC()->flash(ChiaraInfo::BlueLEDMask, 1000);]

barklowF: SoundNode($,"barklow.wav") 
barkmedF: SoundNode($,"barkmed.wav") 
barkhighF: SoundNode($,"barkhigh.wav") 

barklowB: SoundNode($,"barklow.wav") 
barkmedB: SoundNode($,"barkmed.wav") 
barkhighB: SoundNode($,"barkhigh.wav") 

startnode =N=> {redForward, barklowF}

redForward =C=> yellowForward
yellowForward =C=> greenForward
greenForward =C=> blueForward
blueForward =C=> redForward

redBackward =C=> blueBackward
yellowBackward =C=> redBackward
greenBackward =C=> yellowBackward
blueBackward =C=> greenBackward

redBackward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> yellowForward
yellowBackward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> greenForward
greenBackward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> blueForward
blueBackward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> redForward

redForward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> blueBackward
yellowForward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> redBackward
greenForward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> yellowBackward
blueForward =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> greenBackward

barklowB =C=> barkhighB
barkmedB =C=> barklowB
barkhighB =C=> barkmedB

barklowF =C=> barkmedF
barkmedF =C=> barkhighF
barkhighF =C=> barklowF

barklowF =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barkhighB
barkmedF =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barklowB
barkhighF =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barkmedB

barklowB =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barkmedF
barkmedB =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barkhighF
barkhighB =E(buttonEGID, ChiaraInfo::GreenButOffset, activateETID)=> barklowF
#endstatemachine
  }       // end of setup()

};

#endif

