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

class ParallelProgrammingBehavior : public StateNode {

public:
  ParallelProgrammingBehavior() : StateNode("ParallelProgrammingBehavior") {}
 
  virtual void setup() {
#statemachine

startnode: StateNode =N=> {redledf, barkl}

redledf: LedNode [getMC()->flash(RobotInfo::RedLEDMask, 1000);]
redledf =T(1000)=> yellowledf
redledf =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>blueledb

redledb: LedNode [getMC()->flash(RobotInfo::RedLEDMask, 1000);]
redledb =T(1000)=> blueledb
redledb =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>yellowledf

yellowledf: LedNode [getMC()->flash(RobotInfo::YellowLEDMask, 1000);]
yellowledf =T(1000)=> greenledf
yellowledf =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>redledb

yellowledb: LedNode [getMC()->flash(RobotInfo::YellowLEDMask, 1000);]
yellowledb =T(1000)=> redledb
yellowledb =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>greenledf

greenledf: LedNode [getMC()->flash(RobotInfo::GreenLEDMask, 1000);]
greenledf =T(1000)=> blueledf
greenledf =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>yellowledb

greenledb: LedNode [getMC()->flash(RobotInfo::GreenLEDMask, 1000);]
greenledb =T(1000)=> yellowledb
greenledb =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>blueledf

blueledf: LedNode [getMC()->flash(RobotInfo::BlueLEDMask, 1000);]
blueledf =T(1000)=> redledf
blueledf =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>greenledb

blueledb: LedNode [getMC()->flash(RobotInfo::BlueLEDMask, 1000);]
blueledb =T(1000)=> greenledb
blueledb =E(buttonEGID, RobotInfo::GreenButOffset, activateETID)=>redledf

barkl: SoundNode($, "barklow.wav")
barkl =C=> barkm

barkm: SoundNode($, "barkmed.wav")
barkm =C=> barkh

barkh: SoundNode($, "barkhigh.wav")
barkh =C=> barkl
#endstatemachine
  }       // end of setup()

};

#endif
