7 #include <gnsstk/SatID.hpp>
12 #include <gnss_info_msgs/Enums.h>
13 #include <gnss_info_msgs/SatelliteInfo.h>
26 return gnss_info_msgs::Enums::CONSTELLATION_GPS;
28 return gnss_info_msgs::Enums::CONSTELLATION_GLONASS;
30 return gnss_info_msgs::Enums::CONSTELLATION_GALILEO;
32 return gnss_info_msgs::Enums::CONSTELLATION_BEIDOU;
34 return gnss_info_msgs::Enums::CONSTELLATION_QZSS;
36 return gnss_info_msgs::Enums::CONSTELLATION_NAVIC;
48 cras::optional<std::pair<int32_t, std::string>>
prnStringToInt(
const std::string& prn)
51 if (!constellation.has_value())
54 auto prnString = prn.substr(1);
57 while (!prnString.empty() && prnString[0] ==
'0')
58 prnString = prnString.substr(1);
59 if (prnString.empty())
66 catch (
const std::invalid_argument&)
72 cras::optional<std::string>
prnIntToString(
const int32_t prn,
const std::string& constellation)
76 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GPS)
78 else if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GLONASS)
80 else if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GALILEO)
82 else if (constellation == gnss_info_msgs::Enums::CONSTELLATION_BEIDOU)
84 else if (constellation == gnss_info_msgs::Enums::CONSTELLATION_QZSS)
86 else if (constellation == gnss_info_msgs::Enums::CONSTELLATION_NAVIC)
91 return prefix + std::to_string(prn);
96 if (constellation.empty())
98 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GPS)
100 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GALILEO)
102 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_GLONASS)
104 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_BEIDOU)
106 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_NAVIC)
108 if (constellation == gnss_info_msgs::Enums::CONSTELLATION_QZSS)
115 switch (constellation)
118 return gnss_info_msgs::Enums::CONSTELLATION_GPS;
120 return gnss_info_msgs::Enums::CONSTELLATION_GALILEO;
122 return gnss_info_msgs::Enums::CONSTELLATION_GLONASS;
124 return gnss_info_msgs::Enums::CONSTELLATION_BEIDOU;
126 return gnss_info_msgs::Enums::CONSTELLATION_NAVIC;
128 return gnss_info_msgs::Enums::CONSTELLATION_QZSS;
130 return cras::nullopt;
137 if (!maybeConstellationAndPrn.has_value())
138 return cras::nullopt;
140 const auto& [prn, constellationStr] = *maybeConstellationAndPrn;
143 if (!maybeSatelliteSystem.has_value())
145 if (!maybeSatelliteSystem.has_value())
146 return cras::nullopt;
148 const auto system = *maybeSatelliteSystem;