//$file${../Inc::app.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
//
// Model: real-time.qm
// File:  ${../Inc::app.h}
//
// This code has been generated by QM 7.0.1 <www.state-machine.com/qm>.
// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
//
// Copyright (c) 2005 Quantum Leaps, LLC. All rights reserved.
//
//                 ____________________________________
//                /                                   /
//               /    GGGGGGG    PPPPPPPP   LL       /
//              /   GG     GG   PP     PP  LL       /
//             /   GG          PP     PP  LL       /
//            /   GG   GGGGG  PPPPPPPP   LL       /
//           /   GG      GG  PP         LL       /
//          /     GGGGGGG   PP         LLLLLLL  /
//         /___________________________________/
//
// SPDX-License-Identifier: GPL-3.0-or-later
//
// This generated code is open-source software licensed under the GNU
// General Public License (GPL) as published by the Free Software Foundation
// (see <https://www.gnu.org/licenses>).
//
// NOTE:
// The GPL does NOT permit the incorporation of this code into proprietary
// programs. Please contact Quantum Leaps for commercial licensing options,
// which expressly supersede the GPL and are designed explicitly for
// closed-source distribution.
//
// Quantum Leaps contact information:
// <www.state-machine.com/licensing>
// <info@state-machine.com>
//
//$endhead${../Inc::app.h} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#ifndef APP_H_
#define APP_H_

//$declare${Shared} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

//${Shared::AppSignals} ......................................................
enum AppSignals {
    PERIODIC_SPEC_SIG = Q_USER_SIG,
    TIMEOUT_SIG,
    SPORADIC_A_SIG,
    SPORADIC_B_SIG,
    REMINDER_SIG,
    // ...
    MAX_SIG  // the last signal
};

//${Shared::PeriodicSpecEvt} .................................................
typedef struct {
// protected:
    QEvt super;

// public:
    uint16_t toggles;
    uint8_t ticks;
} PeriodicSpecEvt;

//${Shared::SporadicSpecEvt} .................................................
typedef struct {
// protected:
    QEvt super;

// public:
    uint16_t toggles;
    uint16_t rtc_toggles;
} SporadicSpecEvt;

//${Shared::AO_Periodic1} ....................................................
extern QActive * const AO_Periodic1;

//${Shared::Periodic1_ctor} ..................................................
void Periodic1_ctor(void);

//${Shared::AO_Periodic4} ....................................................
extern QActive * const AO_Periodic4;

//${Shared::Periodic4_ctor} ..................................................
void Periodic4_ctor(void);

//${Shared::AO_Sporadic2} ....................................................
extern QActive * const AO_Sporadic2;

//${Shared::Sporadic2_ctor} ..................................................
void Sporadic2_ctor(void);

//${Shared::AO_Sporadic3} ....................................................
extern QActive * const AO_Sporadic3;

//${Shared::Sporadic3_ctor} ..................................................
void Sporadic3_ctor(void);
//$enddecl${Shared} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#endif // APP_H_
