65 lines
1.2 KiB
C++
65 lines
1.2 KiB
C++
|
#include <stdio.h>
|
||
|
#include "trace/trace.h"
|
||
|
#include "statemachine01.h"
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*
|
||
|
* \param repeatInterval Interval in milliseconds used in state machine.
|
||
|
* \param text Text to display by the state machine.
|
||
|
*/
|
||
|
StateMachine01::StateMachine01(int repeatInterval, string text)
|
||
|
: repeatInterval_(repeatInterval),
|
||
|
text_(text)
|
||
|
{
|
||
|
currentState_ = STATE_INITIAL;
|
||
|
}
|
||
|
|
||
|
StateMachine01::~StateMachine01()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
XFEventStatus StateMachine01::processEvent()
|
||
|
{
|
||
|
eEventStatus eventStatus = XFEventStatus::Unknown;
|
||
|
|
||
|
switch (currentState_)
|
||
|
{
|
||
|
case STATE_INITIAL:
|
||
|
{
|
||
|
if (getCurrentEvent()->getEventType() == XFEvent::Initial)
|
||
|
{
|
||
|
GEN(XFDefaultTransition());
|
||
|
|
||
|
currentState_ = STATE_SAY_HELLO;
|
||
|
|
||
|
eventStatus = XFEventStatus::Consumed;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case STATE_SAY_HELLO:
|
||
|
{
|
||
|
if (getCurrentEvent()->getEventType() == XFEvent::DefaultTransition ||
|
||
|
(getCurrentEvent()->getEventType() == XFEvent::Timeout &&
|
||
|
getCurrentTimeout()->getId() == Timeout_SAY_HELLO_id))
|
||
|
{
|
||
|
{
|
||
|
Trace::out(getText());
|
||
|
}
|
||
|
|
||
|
scheduleTimeout(Timeout_SAY_HELLO_id, getRepeatInterval());
|
||
|
|
||
|
currentState_ = STATE_SAY_HELLO;
|
||
|
|
||
|
eventStatus = XFEventStatus::Consumed;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return eventStatus;
|
||
|
}
|