|
Open Model Railroad Network (OpenMRN)
|
Use this timer class to deliver the timeout notification to a stateflow. More...
#include <StateFlow.hxx>
Public Member Functions | |
| StateFlowTimer (StateFlowBase *parent) | |
| Constructor. | |
| long long | timeout () override |
| Clients of timer should override this function. | |
Public Member Functions inherited from Timer | |
| Timer (ActiveTimers *timers) | |
| Constructor. | |
| ~Timer () | |
| Destructor. | |
| void | run () override |
| Callback from the executor when this timer is scheduled. | |
| long long | schedule_time () |
| void | start (long long period=-1) |
| Starts a timer. | |
| void | start_absolute (long long expiry_time_nsec) |
| Starts the timer with an absolute deadline. | |
| void | restart () |
| Restart a timer with the existing period but from the current time. | |
| void | trigger () |
| This will wakeup the timer prematurely, immediately. | |
| void | ensure_triggered () |
| Triggers the timer if it is not expired yet. | |
| void | cancel () |
| Dangerous, do not call. | |
| bool | is_triggered () |
| void | set_triggered () |
| Sets the timer as if it was woken up by a trigger(), even if it was never started. | |
Public Member Functions inherited from Executable | |
| void | test_deletion () |
| void | notify () override |
| Crashes the program – everyone who is expecting notify calls must override this function. | |
| virtual void | alloc_result (QMember *item) |
| Return the result of an alloc_async() from a memory Pool. | |
Public Member Functions inherited from QMember | |
| void | init () |
| Initiailize a QMember, in place of a public placement construction. | |
Protected Attributes | |
| StateFlowBase * | parent_ |
| The timer will deliver notifications to this flow. | |
Protected Attributes inherited from QMember | |
| QMember * | next |
| pointer to the next member in the queue | |
Additional Inherited Members | |
Public Types inherited from Timer | |
| enum | { NONE = 0 , RESTART = 1 , DELETE = -1 } |
| Special return values from the timeout function. More... | |
Protected Member Functions inherited from Timer | |
| void | update_period (long long period) |
| Updates the period, to be used after the next expiration of the timer in order to restart it. | |
Protected Member Functions inherited from QMember | |
| QMember () | |
| Constructor. | |
| ~QMember () | |
| Destructor. | |
Use this timer class to deliver the timeout notification to a stateflow.
Usage:
in the StateFlow class create a variable StateFlowTimer timer_; in the constructor initialize it with , timer_(this). then in the state function do return sleep_and_call(&timer_, MSEC_TO_NSEC(200), STATE(next_after_timeout)); If needed, you can wake up the timer in a handler function by calling timer_.trigger(). This will transition to the new state immediately.
Definition at line 462 of file StateFlow.hxx.
|
inline |
Constructor.
| parent | is the stateflow owning *this. |
Definition at line 466 of file StateFlow.hxx.
|
inlineoverridevirtual |
Clients of timer should override this function.
It will be called on the executor of the timer.
Implements Timer.
Definition at line 472 of file StateFlow.hxx.
|
protected |
The timer will deliver notifications to this flow.
Definition at line 480 of file StateFlow.hxx.