Files
Autopilot-Shared-DataOLD/GPS.hpp
Jakob Oberbuchner 5bd01b926e WORKING
+ Starting creation
2025-08-18 15:49:27 -05:00

76 lines
2.1 KiB
C++

/*
* GPS.hpp
*
* Created on: Aug 17, 2025
* Author: jakoboberbuchner
*/
#ifndef AUTOPILOT_SHARED_DATA_GPS_HPP_
#define AUTOPILOT_SHARED_DATA_GPS_HPP_
#include <stdbool.h>
#include <stdint.h>
namespace GPS {
/*------------------ Enums ------------------*/
enum class NMEA_PositionFix : uint32_t {
invalid = 0, // Fix not valid.
gps_fix = 1, // GPS fix (SPS).
differential_gps_fix = 2, // Differential GPS fix (DGNSS), SBAS, OmniSTAR VBS, Beacon, RTX in GVBS mode.
not_applicable = 3, // Not applicable (or PPS fix in some older/non-standard implementations).
rtk_fixed = 4, // RTK (Real-Time Kinematic) Fixed, xFill, RTX.
rtk_float = 5, // RTK Float, OmniSTAR XP/HP, Location RTK, RTX. NOTE: Less accurate that Fixed
dead_reckoning = 6, // INS (Inertial Navigation System) Dead Reckoning.
};
/*------------------ Structs ------------------*/
struct Time {
uint32_t year = 2000;
uint8_t month = 1;
uint8_t day = 1;
uint8_t hour = 0;
uint8_t minute = 0;
float second = 0;
};
struct Data {
Time time;
float latitude = 0.0; // Degrees (˚)
float longitude = 0.0; // Degrees (˚)
float altitude = 0.0; // Meters (MSL)
float ground_speed = 0.0; // Knots
float ground_speedKPH = 0.0; // Km/Hr
float magnetic_heading = 0.0; // Degrees (˚M)
float true_heading = 0.0; // Degrees (˚T)
float magnetic_track = 0.0; // Degrees (˚M)
float true_track = 0.0; // Degrees (˚T)
float magnetic_variation = 0.0; // Degrees (˚)
float HDOP = 0.0; // Horizontal Dilution of Precision
float VDOP = 0.0; // Vertical Dilution of Precision
NMEA_PositionFix fixValidity = NMEA_PositionFix::invalid;
float geoid_seperation = 0.0; // Meters
float diff_correction_age = 0.0; // Seconds (only used with DGPS)
uint8_t satellites = 0; // Number of satellites in view
bool isFixValid( void ) {
return (fixValidity == NMEA_PositionFix::gps_fix) || (fixValidity == NMEA_PositionFix::differential_gps_fix) || (fixValidity == NMEA_PositionFix::rtk_fixed) || (fixValidity == NMEA_PositionFix::dead_reckoning);
}
};
} //namespace GPS
#endif /* AUTOPILOT_SHARED_DATA_GPS_HPP_ */