Skip to content

File NavTelemetry.hpp

File List > Components > NavTelemetry > NavTelemetry.hpp

Go to the documentation of this file

#ifndef ORION_NAV_TELEMETRY_HPP
#define ORION_NAV_TELEMETRY_HPP

#include "Orion/Components/NavTelemetry/NavTelemetryComponentAc.hpp"

namespace Orion {

class NavTelemetry final : public NavTelemetryComponentBase {
  public:
    explicit NavTelemetry(const char* compName);
    ~NavTelemetry();

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

    NavState navStateGet_handler(FwIndexType portNum) override;

    void schedIn_handler(FwIndexType portNum, U32 context) override;

    // -----------------------------------------------------------------------
    // Internal helpers
    // -----------------------------------------------------------------------

    void pollSimSat();

    static F64 haversineDistanceKm(F64 lat1, F64 lon1, F64 lat2, F64 lon2);

    void updateCommWindow();

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

    F64 m_lat;
    F64 m_lon;
    F64 m_alt;
    F64 m_gsDistanceKm;  
    bool m_inCommWindow;
    U32 m_schedCounter;  

    // Ground station configuration (read from env vars at construction)
    F64 m_gsLat;
    F64 m_gsLon;
    F64 m_gsRangeKm;
};

}  // namespace Orion

#endif  // ORION_NAV_TELEMETRY_HPP