Skip to content

File TriageRouter.hpp

File List > Components > TriageRouter > TriageRouter.hpp

Go to the documentation of this file

#ifndef ORION_TRIAGE_ROUTER_HPP
#define ORION_TRIAGE_ROUTER_HPP

#include "Orion/Components/TriageRouter/TriageRouterComponentAc.hpp"

namespace Orion {

class TriageRouter final : public TriageRouterComponentBase {
  public:
    explicit TriageRouter(const char* compName);
    ~TriageRouter();

  private:
    // -----------------------------------------------------------------------
    // Port handler
    // -----------------------------------------------------------------------

    void triageDecisionIn_handler(FwIndexType portNum, const Orion::TriagePriority& verdict,
                                  const Fw::StringBase& reason, Fw::Buffer& buffer) override;

    void modeChangeIn_handler(FwIndexType portNum, const Orion::MissionMode& mode) override;

    // -----------------------------------------------------------------------
    // Routing helpers
    // -----------------------------------------------------------------------

    void routeHigh(const Fw::StringBase& reason, Fw::Buffer& buffer);

    void routeMedium(Fw::Buffer& buffer);

    void routeLow(Fw::Buffer& buffer);

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

    U32 m_highRouted;
    U32 m_mediumSaved;
    U32 m_lowDiscarded;
    U32 m_mediumFileIndex;      
    MissionMode m_currentMode;  
};

}  // namespace Orion

#endif  // ORION_TRIAGE_ROUTER_HPP