Skip to content

File EventAction.hpp

File List > Components > EventAction > EventAction.hpp

Go to the documentation of this file

#ifndef ORION_EVENT_ACTION_HPP
#define ORION_EVENT_ACTION_HPP

#include "Orion/Components/EventAction/EventActionComponentAc.hpp"

namespace Orion {

class EventAction final : public EventActionComponentBase {
  public:
    explicit EventAction(const char* compName);
    ~EventAction();

  private:
    // -----------------------------------------------------------------------
    // Port handlers
    // -----------------------------------------------------------------------

    void schedIn_handler(FwIndexType portNum, U32 context) override;

    // -----------------------------------------------------------------------
    // Command handlers
    // -----------------------------------------------------------------------

    void SET_ECLIPSE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, bool inEclipse) override;
    void ENTER_SAFE_MODE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
    void EXIT_SAFE_MODE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
    void FLUSH_MEDIUM_STORAGE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
    void GOTO_IDLE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
    void GOTO_MEASURE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
    void GOTO_DOWNLINK_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;

    // -----------------------------------------------------------------------
    // State machine action/guard implementations
    // -----------------------------------------------------------------------

    void Orion_MissionModeSm_action_broadcastMode(SmId smId, Orion_MissionModeSm::Signal signal) override;

    void Orion_MissionModeSm_action_logModeChange(SmId smId, Orion_MissionModeSm::Signal signal) override;

    bool Orion_MissionModeSm_guard_sunIsUp(SmId smId, Orion_MissionModeSm::Signal signal) const override;

    // -----------------------------------------------------------------------
    // Helpers
    // -----------------------------------------------------------------------

    static MissionMode stateToMode(Orion_MissionModeSm::State state);

    MissionMode signalToTargetMode(Orion_MissionModeSm::Signal signal) const;

    static const char* modeToStr(MissionMode mode);

    // -----------------------------------------------------------------------
    // State
    // -----------------------------------------------------------------------

    bool m_portsConnected;   
    bool m_inEclipse;        
    bool m_prevCommWindow;   
    MissionMode m_prevMode;  
    bool m_flushingMedium;   
    U32 m_mediumFlushed;     
};

}  // namespace Orion

#endif  // ORION_EVENT_ACTION_HPP