.. _program_listing_file_interfaces_antex_loader.h: Program Listing for File antex_loader.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``interfaces/antex_loader.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include "lupnt/core/definitions.h" #include "lupnt/devices/space_comms.h" namespace lupnt { class AntexLoader { public: AntexLoader() = default; explicit AntexLoader(const std::filesystem::path& filepath); void LoadFile(const std::filesystem::path& filepath); Vec3d GetPco(GnssConst gnss_const, int prn, GnssFreq freq, Real t_tai) const; Vec3d GetPco(const std::string& gnss_letter, int prn, const std::string& antex_freq_code, Real t_tai) const; std::vector GetAvailableFreqCodes(GnssConst gnss_const, int prn, Real t_tai) const; bool HasSatellite(GnssConst gnss_const, int prn) const; // ---- PCO -> ECEF correction -------------------------------------------- static Mat3d ComputeIjkToEcefRotation(Real t_tai, const Vec3d& r_sat_ecef); static Vec3d ApplyPcoCorrectionEcef(Real t_tai, const Vec3d& pos_sp3_ecef, const Vec3d& pco_neu_m); // ---- Identifier helpers (also used by `GnssConstellation` to build SP3 / // ANTEX satellite identifiers, e.g. "G05", from `(GnssConst, prn)`) ------- static std::string GnssLetter(GnssConst gnss_const); static std::string SatId(GnssConst gnss_const, int prn); private: struct FreqPattern { std::string freq_code; bool has_pco = false; Vec3d pco_neu_m = Vec3d::Zero(); // [N, E, U] meters }; struct SatAntennaEntry { std::string sat_id; // e.g. "G05" bool has_valid_from = false; bool has_valid_until = false; double valid_from_tai = 0.0; double valid_until_tai = 0.0; std::map freqs; // ANTEX freq code -> pattern }; std::map> sat_index_; // sat_id -> entries void ParseFile(const std::filesystem::path& filepath); static std::string FreqToAntexCode(const std::string& gnss_letter, const std::string& freq_name); const SatAntennaEntry& SelectEntry(const std::string& sat_id, double t_tai) const; }; } // namespace lupnt