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 * DebugTrace. Allows dumping debug messages/values to serial or
snatch59 0:918566a376fb 3 * to file.
snatch59 0:918566a376fb 4 *
snatch59 0:918566a376fb 5 * Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk>
snatch59 0:918566a376fb 6 *
snatch59 0:918566a376fb 7 * This file is part of DebugTrace.
snatch59 0:918566a376fb 8 *
snatch59 0:918566a376fb 9 * DebugTrace is free software: you can redistribute it and/or modify
snatch59 0:918566a376fb 10 * it under the terms of the GNU General Public License as published by
snatch59 0:918566a376fb 11 * the Free Software Foundation, either version 3 of the License, or
snatch59 0:918566a376fb 12 * (at your option) any later version.
snatch59 0:918566a376fb 13 *
snatch59 0:918566a376fb 14 * DebugTrace is distributed in the hope that it will be useful,
snatch59 0:918566a376fb 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
snatch59 0:918566a376fb 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
snatch59 0:918566a376fb 17 * GNU General Public License for more details.
snatch59 0:918566a376fb 18 *
snatch59 0:918566a376fb 19 * You should have received a copy of the GNU General Public License
snatch59 0:918566a376fb 20 * along with DebugTrace. If not, see <http://www.gnu.org/licenses/>.
snatch59 0:918566a376fb 21 */
snatch59 0:918566a376fb 22
snatch59 0:918566a376fb 23 #ifndef SNATCH59_DEBUGTRACE_H
snatch59 0:918566a376fb 24 #define SNATCH59_DEBUGTRACE_H
snatch59 0:918566a376fb 25
snatch59 0:918566a376fb 26 enum eLog {OFF, ON};
snatch59 0:918566a376fb 27 enum eLogTarget {TO_SERIAL, TO_FILE};
snatch59 0:918566a376fb 28
snatch59 0:918566a376fb 29 class DebugTrace
snatch59 0:918566a376fb 30 {
snatch59 0:918566a376fb 31 public:
snatch59 0:918566a376fb 32 DebugTrace(eLog on, eLogTarget mode, const char* fileName = "log.txt", const int maxSize = 1024);
snatch59 0:918566a376fb 33 ~DebugTrace();
snatch59 0:918566a376fb 34
snatch59 0:918566a376fb 35 void clear();
snatch59 0:918566a376fb 36 void traceOut(const char* fmt, ...);
snatch59 0:918566a376fb 37
snatch59 0:918566a376fb 38 private:
snatch59 0:918566a376fb 39 eLog enabled;
snatch59 0:918566a376fb 40 eLogTarget logMode;
snatch59 0:918566a376fb 41 int maxFileSize;
snatch59 0:918566a376fb 42 int currentFileSize;
snatch59 0:918566a376fb 43 char* logFile;
snatch59 0:918566a376fb 44 char* logFileBackup;
snatch59 0:918566a376fb 45 int logFileStatus; // if things go wrong, don't write any more data to file
snatch59 0:918566a376fb 46
snatch59 0:918566a376fb 47 void backupLog();
snatch59 0:918566a376fb 48 };
snatch59 0:918566a376fb 49
snatch59 0:918566a376fb 50 #endif