Table driven Finite State Machine library based on the Harel state machine, supporting actions on transitions, state entry and state exit. Comes with example illustrating use with interrupts and timers. 03/01/2010 - fixed potential memory leak in DebugTrace.

Dependencies:   mbed

Committer:
snatch59
Date:
Sun Jan 03 11:56:03 2010 +0000
Revision:
0:918566a376fb

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
snatch59 0:918566a376fb 1 /*
snatch59 0:918566a376fb 2 * FiniteStateMachine. Table driven Finite State Machine library
snatch59 0:918566a376fb 3 * based on theHarel state machine, supporting actions on transitions, state
snatch59 0:918566a376fb 4 * entry and state exit.
snatch59 0:918566a376fb 5 *
snatch59 0:918566a376fb 6 * Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk>
snatch59 0:918566a376fb 7 *
snatch59 0:918566a376fb 8 * This file is part of FiniteStateMachine.
snatch59 0:918566a376fb 9 *
snatch59 0:918566a376fb 10 * FiniteStateMachine is free software: you can redistribute it and/or modify
snatch59 0:918566a376fb 11 * it under the terms of the GNU General Public License as published by
snatch59 0:918566a376fb 12 * the Free Software Foundation, either version 3 of the License, or
snatch59 0:918566a376fb 13 * (at your option) any later version.
snatch59 0:918566a376fb 14 *
snatch59 0:918566a376fb 15 * FiniteStateMachine is distributed in the hope that it will be useful,
snatch59 0:918566a376fb 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
snatch59 0:918566a376fb 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
snatch59 0:918566a376fb 18 * GNU General Public License for more details.
snatch59 0:918566a376fb 19 *
snatch59 0:918566a376fb 20 * You should have received a copy of the GNU General Public License
snatch59 0:918566a376fb 21 * along with DebugTrace. If not, see <http://www.gnu.org/licenses/>.
snatch59 0:918566a376fb 22 */
snatch59 0:918566a376fb 23
snatch59 0:918566a376fb 24 #ifndef SNATCH59_FSMDEFS_H
snatch59 0:918566a376fb 25 #define SNATCH59_FSMDEFS_H
snatch59 0:918566a376fb 26
snatch59 0:918566a376fb 27 #define FSM_TEMPLATE_ template<class StateObjectType, class ActionPtrType, int maxStates>
snatch59 0:918566a376fb 28 #define STATE_TEMPLATE_ template<class StateObjectType, class ActionPtrType>
snatch59 0:918566a376fb 29 #define TRANS_DEF_TEMPLATE_ template<class ActionPtrType>
snatch59 0:918566a376fb 30
snatch59 0:918566a376fb 31 #define FINITE_STATE_MACHINE_ FiniteStateMachine<StateObjectType, ActionPtrType, maxStates>
snatch59 0:918566a376fb 32 #define STATE_ State<StateObjectType, ActionPtrType>
snatch59 0:918566a376fb 33 #define STATE_TRANSITION_ StateTransition<StateObjectType, ActionPtrType>
snatch59 0:918566a376fb 34 #define TRANSITION_DEFINITION_ TransitionDefinition<ActionPtrType>
snatch59 0:918566a376fb 35 #define STATE_DEFINITION_ StateDefinition<ActionPtrType>
snatch59 0:918566a376fb 36
snatch59 0:918566a376fb 37 enum StateBehaviour {actions, noactions};
snatch59 0:918566a376fb 38
snatch59 0:918566a376fb 39 #endif