//-*-c++-*-
/**
 * @file ReadSensorBehavior.h.fsm
 * @brief Reads current sensor values when green button is pressed,
 * outputs them to a file.
 * @author Charles Ruhland
 * @author Jin Su Kim
 */

#ifndef INCLUDED_ReadSensorBehavior_h_
#define INCLUDED_ReadSensorBehavior_h_

#include <fstream>

#include "Behaviors/StateMachine.h"

class ReadNode : public StateNode {
public:
    ReadNode() : StateNode("ReadNode") {}

    virtual void DoStart() {
        erouter->addListener(this, EventBase::sensorEGID);
    }

    virtual void processEvent(EventBase const &e) {
        ofstream outfile;

        outfile.open("ir-sensors.txt", ios_base::app);

        outfile << state->outputs[HeadPanOffset] << "\t"
                << state->sensors[CenterIRDistOffset] << "\n";
        postStateCompletion();
    }
};

class ReadSensorBehavior : public StateNode {
public:
    ReadSensorBehavior() : StateNode("ReadSensorBehavior") {}

    virtual void setup() {
#statemachine
    startnode: StateNode =B(GreenButOffset)=> ReadNode() =C=> startnode
#endstatemachine
    }
};

#endif // INCLUDED_ReadSensorBehavior_h_
