/* * @brief Defines the inbound * @file aman/types/Inbound.h * @author Sven Czarnian * @copyright Copyright 2021 Sven Czarnian * @license This project is published under the GNU General Public License v3 (GPLv3) */ #pragma once #include #pragma warning(push, 0) #include #pragma warning(pop) #pragma warning(disable: 4127) #pragma warning(disable: 5054) #include #pragma warning(default: 5054) #pragma warning(default: 4127) #include #include namespace aman { class Inbound { private: std::vector m_windLevels; std::vector m_windDirections; std::vector m_windSpeeds; AircraftPerformanceData m_performanceData; bool m_fixedPlan; std::string m_star; std::string m_runway; std::size_t m_nextStarWaypoint; std::vector m_arrivalRoute; Time m_timeToLose; UtcTime::Point m_waypointEstimatedTimeOfArrival; Length m_trackmiles; Time m_flighttime; void updatePrediction(EuroScopePlugIn::CRadarTarget& target, const aman::AircraftSchedule& inbound); Velocity indicatedAirspeed(const Length& altitude) const noexcept; Velocity groundSpeed(const Length& altitude, const Velocity& ias, const Angle& heading); void createWindTables(const google::protobuf::RepeatedPtrField& wind); static int matchToPredictedPath(const EuroScopePlugIn::CFlightPlanPositionPredictions& predictions, const GeoCoordinate& position, Length& trackmiles); void predictETA(const EuroScopePlugIn::CRadarTarget& target, const EuroScopePlugIn::CFlightPlanPositionPredictions& predictions); public: Inbound(EuroScopePlugIn::CRadarTarget& target, const aman::AircraftSchedule& inbound, const google::protobuf::RepeatedPtrField& wind); void update(EuroScopePlugIn::CRadarTarget& target, const aman::AircraftSchedule& inbound, const google::protobuf::RepeatedPtrField& wind); void update(EuroScopePlugIn::CRadarTarget& target); void update(EuroScopePlugIn::CFlightPlan& plan); bool fixedPlan() const noexcept; UtcTime::Point eta() const; UtcTime::Point pta() const; const Time& timeToLose() const noexcept; const Length& trackmiles() const noexcept; const Time& flighttime() const noexcept; }; }