diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp index d8344c590..24f4bc33f 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -8427,13 +8427,13 @@ void ADSBDemodGUI::handleImportReply(QNetworkReply* reply) aircraft->m_onSurface = state[8].toBool(false); aircraft->m_onSurfaceValid = true; if (!state[9].isNull()) { - aircraft->setGroundspeed((int)state[9].toDouble(), m_settings); + aircraft->setGroundspeed((int)std::round(Units::metresPerSecondToKnots(state[9].toDouble())), m_settings); } if (!state[10].isNull()) { aircraft->setTrack((float)state[10].toDouble(), aircraft->m_rxTime); } if (!state[11].isNull()) { - aircraft->setVerticalRate((int)state[10].toDouble(), m_settings); + aircraft->setVerticalRate((int)std::round(Units::metresPerSecondToFeetPerMin(state[11].toDouble())), m_settings); } if (!state[14].isNull()) { diff --git a/sdrbase/util/units.h b/sdrbase/util/units.h index b4f00c268..af53b12a5 100644 --- a/sdrbase/util/units.h +++ b/sdrbase/util/units.h @@ -89,6 +89,11 @@ public: return knots * 0.514444f; } + static float metresPerSecondToKnots(float mps) + { + return mps * 1.94384f; + } + static float kmpsToKPH(float kps) { return kps * (60.0 * 60.0); @@ -109,6 +114,11 @@ public: return (int)std::round(feetPerMinToMetresPerSecond(fpm)); } + static float metresPerSecondToFeetPerMin(float mps) + { + return mps * 196.850394f; + } + template static T degreesToRadians(T degrees) {