//$file${.::dpp.h} ###########################################################
//
// Model: dpp_qmsm.qm
// File:  C:/qp_lab/qpcpp/examples/performance/dpp_efm32-slstk3401a/dpp.h
//
// This code has been generated by QM tool (https://state-machine.com/qm).
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// This code is covered by the following QP license:
// License #   : QPCPP-EVAL-171231
// Issued to   : Company/individual evaluating the QP/C++ framework
// Framework(s): qpcpp
// Support ends: 2017-12-31
// Product(s)  :
// This license is available only for evaluation purposes and
// the generated code is still licensed under the terms of GPL.
// Please submit request for extension of the evaluaion period at:
// https://state-machine.com/licensing/#RequestForm
//
//$endhead${.::dpp.h} ########################################################
#ifndef dpp_h
#define dpp_h

namespace DPP {

enum DPPSignals {
    EAT_SIG = QP::Q_USER_SIG, // published by Table to let a philosopher eat
    DONE_SIG,       // published by Philosopher when done eating
    PAUSE_SIG,      // published by BSP to pause the application
    SERVE_SIG,      // published by BSP to serve re-start serving forks
    TEST_SIG,       // published by BSP to test the application
    MAX_PUB_SIG,    // the last published signal

    HUNGRY_SIG,     // posted direclty to Table from hungry Philo
    MAX_SIG         // the last signal
};

} // namespace DPP

//$declare${Events::TableEvt} ################################################
namespace DPP {

//${Events::TableEvt} ........................................................
class TableEvt : public QP::QEvt {
public:
    uint8_t philoNum;
};

} // namespace DPP//$enddecl${Events::TableEvt} ################################################

// number of philosophers
#define N_PHILO ((uint8_t)5)

//$declare${AOs::AO_Philo[N_PHILO]} ##########################################
namespace DPP {

extern QP::QActive * const AO_Philo[N_PHILO];

} // namespace DPP//$enddecl${AOs::AO_Philo[N_PHILO]} ##########################################

//$declare${AOs::AO_Table} ###################################################
namespace DPP {

extern QP::QActive * const AO_Table;

} // namespace DPP//$enddecl${AOs::AO_Table} ###################################################

#ifdef qxk_h
//$declare${AOs::XT_Test1} ###################################################
namespace DPP {

extern QP::QXThread * const XT_Test1;

} // namespace DPP//$enddecl${AOs::XT_Test1} ###################################################
//$declare${AOs::XT_Test2} ###################################################
namespace DPP {

extern QP::QXThread * const XT_Test2;

} // namespace DPP//$enddecl${AOs::XT_Test2} ###################################################
#endif // qxk_h

#endif // dpp_h