12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * @brief Defines the inbound
- * @file aman/types/Inbound.h
- * @author Sven Czarnian <devel@svcz.de>
- * @copyright Copyright 2021 Sven Czarnian
- * @license This project is published under the GNU General Public License v3 (GPLv3)
- */
- #pragma once
- #include <list>
- #pragma warning(push, 0)
- #include <EuroScopePlugIn.h>
- #pragma warning(pop)
- #pragma warning(disable: 4127)
- #pragma warning(disable: 5054)
- #include <protobuf/Communication.pb.h>
- #pragma warning(default: 5054)
- #pragma warning(default: 4127)
- #include <aman/types/AircraftPerformanceData.h>
- #include <aman/types/ArrivalWaypoint.h>
- namespace aman {
- class Inbound {
- private:
- std::vector<float> m_windLevels;
- std::vector<float> m_windDirections;
- std::vector<float> m_windSpeeds;
- AircraftPerformanceData m_performanceData;
- bool m_fixedPlan;
- std::string m_star;
- std::string m_runway;
- std::size_t m_nextStarWaypoint;
- std::vector<ArrivalWaypoint> 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<aman::WindData>& wind);
- static int matchToPredictedPath(const EuroScopePlugIn::CFlightPlanPositionPredictions& predictions, const GeoCoordinate& position,
- const Velocity& groundspeed, 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<aman::WindData>& wind);
- void update(EuroScopePlugIn::CRadarTarget& target, const aman::AircraftSchedule& inbound,
- const google::protobuf::RepeatedPtrField<aman::WindData>& 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;
- };
- }
|