QP/C
qep_pkg.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 * Product: QEP/C
00003 * Last Updated for Version: 4.4.00
00004 * Date of the Last Update:  Jan 17, 2012
00005 *
00006 *                    Q u a n t u m     L e a P s
00007 *                    ---------------------------
00008 *                    innovating embedded systems
00009 *
00010 * Copyright (C) 2002-2012 Quantum Leaps, LLC. All rights reserved.
00011 *
00012 * This software may be distributed and modified under the terms of the GNU
00013 * General Public License version 2 (GPL) as published by the Free Software
00014 * Foundation and appearing in the file GPL.TXT included in the packaging of
00015 * this file. Please note that GPL Section 2[b] requires that all works based
00016 * on this software must also be made publicly available under the terms of
00017 * the GPL ("Copyleft").
00018 *
00019 * Alternatively, this software may be distributed and modified under the
00020 * terms of Quantum Leaps commercial licenses, which expressly supersede
00021 * the GPL and are specifically designed for licensees interested in
00022 * retaining the proprietary status of their code.
00023 *
00024 * Contact information:
00025 * Quantum Leaps Web site:  http://www.quantum-leaps.com
00026 * e-mail:                  info@quantum-leaps.com
00027 *****************************************************************************/
00028 #ifndef qep_pkg_h
00029 #define qep_pkg_h
00030 
00037 #include "qep_port.h"                                           /* QEP port */
00038 
00039 extern QEvent const QEP_reservedEvt_[];   
00042 enum QEPConst {
00043     QEP_EMPTY_SIG_ = 0,    
00048     QEP_MAX_NEST_DEPTH_ = 6
00049 };
00050 
00052 #define QEP_TRIG_(state_, sig_) \
00053     ((*(state_))(me, &QEP_reservedEvt_[sig_]))
00054 
00056 #define QEP_EXIT_(state_) \
00057     if (QEP_TRIG_(state_, Q_EXIT_SIG) == Q_RET_HANDLED) { \
00058         QS_BEGIN_(QS_QEP_STATE_EXIT, QS_smObj_, me) \
00059             QS_OBJ_(me); \
00060             QS_FUN_(state_); \
00061         QS_END_() \
00062     }
00063 
00065 #define QEP_ENTER_(state_) \
00066     if (QEP_TRIG_(state_, Q_ENTRY_SIG) == Q_RET_HANDLED) { \
00067         QS_BEGIN_(QS_QEP_STATE_ENTRY, QS_smObj_, me) \
00068             QS_OBJ_(me); \
00069             QS_FUN_(state_); \
00070         QS_END_() \
00071     }
00072 
00073 #endif                                                         /* qep_pkg_h */
00074 
00075 /****************************************************************************/
00076 #ifdef Q_SPY                                /* QS software tracing enabled? */
00077     #include "qs_port.h"                                 /* include QS port */
00078 #else
00079     #include "qs_dummy.h"                /* disable the QS software tracing */
00080 #endif                                                             /* Q_SPY */
00081