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_MYINTERRUPTHANDLER_H
snatch59 0:918566a376fb 25 #define SNATCH59_MYINTERRUPTHANDLER_H
snatch59 0:918566a376fb 26
snatch59 0:918566a376fb 27 // event names
snatch59 0:918566a376fb 28 enum clientEvent {intr1, intr2, tickr1};
snatch59 0:918566a376fb 29
snatch59 0:918566a376fb 30 class MyInterruptHandler
snatch59 0:918566a376fb 31 {
snatch59 0:918566a376fb 32 public:
snatch59 0:918566a376fb 33 MyInterruptHandler();
snatch59 0:918566a376fb 34
snatch59 0:918566a376fb 35 void processEvent(clientEvent eventId);
snatch59 0:918566a376fb 36
snatch59 0:918566a376fb 37 // interrupt & timer handlers
snatch59 0:918566a376fb 38 void intrhandler1();
snatch59 0:918566a376fb 39 void intrhandler2();
snatch59 0:918566a376fb 40 void tickerhandler1();
snatch59 0:918566a376fb 41
snatch59 0:918566a376fb 42 // state or transition actions
snatch59 0:918566a376fb 43 void ledSequence1();
snatch59 0:918566a376fb 44 void ledSequence2();
snatch59 0:918566a376fb 45
snatch59 0:918566a376fb 46 private:
snatch59 0:918566a376fb 47 InterruptIn interrupt1;
snatch59 0:918566a376fb 48 InterruptIn interrupt2;
snatch59 0:918566a376fb 49 Ticker ticker1;
snatch59 0:918566a376fb 50 };
snatch59 0:918566a376fb 51
snatch59 0:918566a376fb 52 #endif