This repository has been archived on 2024-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
XF/test-bench/test1/src/app/statemachine01.h

57 lines
1.5 KiB
C
Raw Normal View History

2023-09-19 15:59:49 +02:00
#ifndef STATEMACHINE01_H
#define STATEMACHINE01_H
#include "xf/behavior.h"
#include <string>
using namespace std;
/**
* \ingroup test01
*
* Task implementing a little state machine saying something
* in a predefined time interval.
*
* Following you will find the state machine implemented by StateMachine01:
* \image html state-machine01.png "State Machine implemented by StateMachine01"
*/
class StateMachine01 : public XFBehavior
{
public:
StateMachine01(int repeatInterval, string text);
~StateMachine01() override;
protected:
XFEventStatus processEvent() override; ///< Remplementation from XFBehavior
inline int getRepeatInterval() const { return repeatInterval_; } ///< Returns repeat interval. Accessor for #_repeatInterval.
inline string getText() const { return text_; } ///< Returns text. Accessor for #_text.
protected:
/**
* Timeout identifier(s) for this state machine
*/
typedef enum
{
Timeout_SAY_HELLO_id = 1 ///< Timeout id for WAIT
} eTimeoutId;
/**
* Enumeration used to have a unique identifier for every
* state in the state machine.
*/
typedef enum
{
STATE_UNKNOWN = 0, ///< Unknown state
STATE_INITIAL = 1, ///< Initial state
STATE_SAY_HELLO = 2 ///< Say hello state
} eMainState;
eMainState currentState_; ///< Attribute indicating currently active state
int repeatInterval_; ///< Interval in milliseconds to repeat text in state machine
string text_; ///< Text to display in state machine state
};
#endif // STATEMACHINE01_H