24#ifndef GOBY_UTIL_LINEBASEDCOMMS_GPS_SENTENCE_H
25#define GOBY_UTIL_LINEBASEDCOMMS_GPS_SENTENCE_H
27#include <boost/format.hpp>
28#include <boost/optional.hpp>
29#include <boost/units/base_units/metric/knot.hpp>
30#include <boost/units/systems/angle/degrees.hpp>
31#include <boost/units/systems/si.hpp>
32#include <boost/units/systems/temperature/celsius.hpp>
66 boost::optional<goby::time::SystemClock::time_point>
time;
68 boost::optional<boost::units::quantity<boost::units::degree::plane_angle>>
latitude;
69 boost::optional<boost::units::quantity<boost::units::degree::plane_angle>>
longitude;
108inline std::ostream& operator<<(std::ostream& os,
const RMC& rmc)
123 boost::optional<boost::units::quantity<boost::units::degree::plane_angle>>
true_heading;
139inline std::ostream& operator<<(std::ostream& os,
const HDT& hdt)
154 boost::optional<boost::units::quantity<boost::units::degree::plane_angle>>
latitude;
155 boost::optional<boost::units::quantity<boost::units::degree::plane_angle>>
longitude;
156 boost::optional<std::string>
name;
175inline std::ostream& operator<<(std::ostream& os,
const WPL& wpl)
190 boost::optional<std::string>
name;
219inline std::ostream& operator<<(std::ostream& os,
const RTE& rte)
std::string message() const
double nmea_geo_to_decimal(std::string nmea_geo_str, char hemi)
Convert NMEA latitude/longitude string plus hemisphere to a decimal degrees value.
bool operator==(const RMC &rmc1, const RMC &rmc2)
std::pair< std::string, char > decimal_to_nmea_geo(double decimal, CoordType t)
Convert a decimal degrees latitude or longitude into a pair of NMEA string representation and hemisph...
The global namespace for the Goby project.
NMEASentence serialize(std::string talker_id="GP") const
void parse(const NMEASentence &sentence)
static constexpr int min_size
HDT(const NMEASentence &sentence)
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > true_heading
static constexpr int size
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > course_over_ground
static constexpr int min_size
RMC(const NMEASentence &sentence)
boost::optional< Status > status
boost::optional< boost::units::quantity< boost::units::si::velocity > > speed_over_ground
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > latitude
void parse(const NMEASentence &sentence)
NMEASentence serialize(std::string talker_id="GP", int num_fields=min_size) const
@ NavigationReceiverWarning
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > magnetic_variation
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > longitude
boost::optional< goby::time::SystemClock::time_point > time
void parse(const NMEASentence &sentence)
static constexpr int min_size
std::vector< std::string > waypoint_names
NMEASentence serialize(std::string talker_id="EC") const
@ ROUTE_TYPE__WORKING_ROUTE
RTE(const NMEASentence &sentence)
boost::optional< std::string > name
boost::optional< int > current_sentence_index
boost::optional< int > total_number_sentences
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > longitude
NMEASentence serialize(std::string talker_id="EC") const
static constexpr int min_size
boost::optional< boost::units::quantity< boost::units::degree::plane_angle > > latitude
static constexpr int size
void parse(const NMEASentence &sentence)
boost::optional< std::string > name
WPL(const NMEASentence &sentence)