#pragma once #include #include #include struct DopValues { std::optional gdop; std::optional pdop; std::optional hdop; std::optional vdop; std::optional tdop; [[nodiscard]] bool hasAnyValue() const { return gdop.has_value() || pdop.has_value() || hdop.has_value() || vdop.has_value() || tdop.has_value(); } }; struct TelemetryPoint { double latitude = 0.0; double longitude = 0.0; QString latitudeText; QString longitudeText; std::optional hheight; std::optional satellites; DopValues dop; QDateTime receivedAt = QDateTime::currentDateTimeUtc(); QString rawLine; }; struct ParsedTelemetry { std::optional latitude; std::optional longitude; QString latitudeText; QString longitudeText; std::optional hheight; std::optional satellites; DopValues dop; QString rawLine; [[nodiscard]] bool hasLocation() const { return latitude.has_value() && longitude.has_value(); } [[nodiscard]] bool hasAnyValue() const { return latitude.has_value() || longitude.has_value() || hheight.has_value() || satellites.has_value() || dop.hasAnyValue(); } };