From da8e504d67461473fa052e076f5acf573687b130 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 16 May 2019 14:34:27 +0200 Subject: [PATCH] Ref T668, minor style changes and improvemments --- src/blackcore/airspacemonitor.cpp | 2 +- src/blackcore/airspacemonitor.h | 1 + src/blackmisc/simulation/interpolant.h | 7 ++++++ .../simulation/interpolationlogger.cpp | 14 ++++++----- .../simulation/interpolationlogger.h | 11 ++++---- src/blackmisc/simulation/interpolator.cpp | 4 +++ .../simulation/interpolatorlinear.cpp | 25 +++++++++++-------- src/blackmisc/simulation/interpolatorlinear.h | 6 ++--- .../simulation/interpolatorspline.cpp | 1 + 9 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/blackcore/airspacemonitor.cpp b/src/blackcore/airspacemonitor.cpp index 1308236dd..e6b7a415d 100644 --- a/src/blackcore/airspacemonitor.cpp +++ b/src/blackcore/airspacemonitor.cpp @@ -93,7 +93,7 @@ namespace BlackCore connect(m_network, &INetwork::connectionStatusChanged, this, &CAirspaceMonitor::onConnectionStatusChanged); // AutoConnection: this should also avoid race conditions by updating the bookings - Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "Missing data reader"); + Q_ASSERT_X(sApp && sApp->getWebDataServices(), Q_FUNC_INFO, "Missing data reader"); // optional readers if (sApp->getWebDataServices()->getBookingReader()) diff --git a/src/blackcore/airspacemonitor.h b/src/blackcore/airspacemonitor.h index a44185795..fcbe87656 100644 --- a/src/blackcore/airspacemonitor.h +++ b/src/blackcore/airspacemonitor.h @@ -59,6 +59,7 @@ namespace BlackCore public BlackMisc::Simulation::CSimulationEnvironmentAware, // elevation info etc. from simulator public BlackMisc::Network::CClientProvider // those data will be provided from the class CAirspaceMonitor { + // CRemoteAircraftProvider is QObject Q_OBJECT Q_INTERFACES(BlackMisc::Network::IClientProvider) Q_INTERFACES(BlackMisc::Simulation::IRemoteAircraftProvider) diff --git a/src/blackmisc/simulation/interpolant.h b/src/blackmisc/simulation/interpolant.h index bd1611968..26b37bda5 100644 --- a/src/blackmisc/simulation/interpolant.h +++ b/src/blackmisc/simulation/interpolant.h @@ -36,6 +36,12 @@ namespace BlackMisc //! Valid? void setValid(bool valid) { m_valid = valid; } + //! Is recalculated interpolant? + bool isRecalculated() const { return m_recalculated; } + + //! Set recalculated interpolant + void setRecalculated(bool reCalculated) { m_recalculated = reCalculated; } + protected: //! Default ctor IInterpolant() {} @@ -50,6 +56,7 @@ namespace BlackMisc int m_situationsAvailable = 0; //!< used situations CInterpolatorPbh m_pbh; //!< the used PBH interpolator bool m_valid = true; //!< valid? + bool m_recalculated = false; //!< recalculated interpolant }; } // namespace } // namespace diff --git a/src/blackmisc/simulation/interpolationlogger.cpp b/src/blackmisc/simulation/interpolationlogger.cpp index 276fd2c1f..158f31092 100644 --- a/src/blackmisc/simulation/interpolationlogger.cpp +++ b/src/blackmisc/simulation/interpolationlogger.cpp @@ -59,7 +59,7 @@ namespace BlackMisc CWorker *worker = CWorker::fromTask(this, "WriteInterpolationLog", [situations, parts]() { - const CStatusMessageList msg = CInterpolationLogger::writeLogFile(situations, parts); + const CStatusMessageList msg = CInterpolationLogger::writeLogFiles(situations, parts); CLogMessage::preformatted(msg); }); return worker; @@ -67,7 +67,7 @@ namespace BlackMisc QStringList CInterpolationLogger::getLatestLogFiles() { - QStringList files({ "", ""}); + QStringList files({ "", "" }); const QString logDir = CDirectoryUtils::logDirectory(); QDir logs(logDir); if (!logs.exists()) { return files; } @@ -90,7 +90,7 @@ namespace BlackMisc return CDirectoryUtils::logDirectory(); } - CStatusMessageList CInterpolationLogger::writeLogFile(const QList &interpolation, const QList &parts) + CStatusMessageList CInterpolationLogger::writeLogFiles(const QList &interpolation, const QList &parts) { if (parts.isEmpty() && interpolation.isEmpty()) { return CStatusMessage(static_cast(nullptr)).warning(u"No data for log"); } static const QString html = QStringLiteral("Entries: %1\n\n%2"); @@ -264,8 +264,9 @@ namespace BlackMisc if (logs.isEmpty()) { return {}; } static const QString tableHeader = QStringLiteral( - "" - "cs.Int" + u"" + u"cs.Int" + u"recalc" u"CSVTOLtimestampsince" u"ts oldts newts cur" u"Interpolation ts.Sample Δtfraction" @@ -289,7 +290,7 @@ namespace BlackMisc { const CAircraftSituation situationOld = log.oldestInterpolationSituation(); const CAircraftSituation situationNew = log.newestInterpolationSituation(); - const bool changedNewPosition = newPosTs != situationNew.getMSecsSinceEpoch(); + const bool changedNewPosition = (newPosTs != situationNew.getMSecsSinceEpoch()); const bool changedParts = (lastParts != log.parts); newPosTs = situationNew.getMSecsSinceEpoch(); lastParts = log.parts; @@ -300,6 +301,7 @@ namespace BlackMisc u"" % (changedNewPosition ? QStringLiteral("*") : QStringLiteral("")) % u"" % log.interpolator % u"" % + u"" % boolToYesNo(log.interpolantRecalc) % u"" u"" % log.callsign.asString() % u"" % u"" % boolToYesNo(log.vtolAircraft) % u"" % u"" % msSinceEpochToTime(log.tsCurrent) % u"" % diff --git a/src/blackmisc/simulation/interpolationlogger.h b/src/blackmisc/simulation/interpolationlogger.h index 4f37c042b..256df4b3f 100644 --- a/src/blackmisc/simulation/interpolationlogger.h +++ b/src/blackmisc/simulation/interpolationlogger.h @@ -33,17 +33,18 @@ namespace BlackMisc qint64 tsCurrent = -1; //!< current timestamp qint64 tsInterpolated = -1; //!< timestamp interpolated double groundFactor = -1; //!< current ground factor - bool vtolAircraft = false; //!< VTOL aircraft double simTimeFraction = -1; //!< time fraction, expected 0..1 double deltaSampleTimesMs = -1; //!< delta time between samples (i.e. 2 situations) bool useParts = false; //!< supporting aircraft parts + bool vtolAircraft = false; //!< VTOL aircraft + bool interpolantRecalc = false; //!< interpolant recalculated int noNetworkSituations = 0; //!< available network situations int noInvalidSituations = 0; //!< invalid situations, missing situations for timestampd QString elevationInfo; //!< info about elevation retrieval QString altCorrection; //!< info about altitude correction as CAircraftSituation::AltitudeCorrection Aviation::CCallsign callsign; //!< current callsign Aviation::CAircraftParts parts; //!< corresponding parts used in interpolator - Aviation::CAircraftSituationList interpolationSituations; //!< the interpolator uses 2, 3 situations (oldest at end) + Aviation::CAircraftSituationList interpolationSituations; //!< the interpolator uses 2, 3 situations (latest at end) Aviation::CAircraftSituation situationCurrent; //!< interpolated situation Aviation::CAircraftSituationChange change; //!< change PhysicalQuantities::CLength cgAboveGround = PhysicalQuantities::CLength::null(); //!< center of gravity (CG) @@ -195,13 +196,13 @@ namespace BlackMisc private: //! Get log as HTML table - static QString getHtmlInterpolationLog(const QList &getSituationsLog); + static QString getHtmlInterpolationLog(const QList &logs); //! Get log as HTML table - static QString getHtmlPartsLog(const QList &getSituationsLog); + static QString getHtmlPartsLog(const QList &logs); //! Write log to file - static CStatusMessageList writeLogFile(const QList &interpolation, const QList &getPartsLog); + static CStatusMessageList writeLogFiles(const QList &interpolation, const QList &getPartsLog); //! Status of file operation static CStatusMessage logStatusFileWriting(bool success, const QString &fileName); diff --git a/src/blackmisc/simulation/interpolator.cpp b/src/blackmisc/simulation/interpolator.cpp index 9da4500de..59aa3b711 100644 --- a/src/blackmisc/simulation/interpolator.cpp +++ b/src/blackmisc/simulation/interpolator.cpp @@ -309,6 +309,7 @@ namespace BlackMisc log.groundFactor = currentSituation.getOnGroundFactor(); log.altCorrection = CAircraftSituation::altitudeCorrectionToString(altCorrection); log.situationCurrent = currentSituation; + log.interpolantRecalc = interpolant.isRecalculated(); log.change = m_pastSituationsChange; log.usedSetup = m_currentSetup; log.elevationInfo = this->getElevationsFoundMissedInfo(); @@ -316,7 +317,10 @@ namespace BlackMisc log.sceneryOffset = m_currentSceneryOffset; log.noInvalidSituations = m_invalidSituations; log.noNetworkSituations = m_currentSituations.sizeInt(); + log.useParts = this->isRemoteAircraftSupportingParts(m_callsign); m_logger->logInterpolation(log); + + // if (log.interpolantRecalc) { CLogMessage(this).debug(u"Recalc %1") << log.callsign.asString(); } } // bye diff --git a/src/blackmisc/simulation/interpolatorlinear.cpp b/src/blackmisc/simulation/interpolatorlinear.cpp index 7f098678d..ec0759311 100644 --- a/src/blackmisc/simulation/interpolatorlinear.cpp +++ b/src/blackmisc/simulation/interpolatorlinear.cpp @@ -36,22 +36,22 @@ namespace BlackMisc { namespace Simulation { - CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &situation) : - IInterpolant(1, CInterpolatorPbh(0, situation, situation)), - m_oldSituation(situation) + CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &oldSituation) : + IInterpolant(1, CInterpolatorPbh(0, oldSituation, oldSituation)), + m_oldSituation(oldSituation) { } - CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &situation, const CInterpolatorPbh &pbh) : + CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &oldSituation, const CInterpolatorPbh &pbh) : IInterpolant(1, pbh), - m_oldSituation(situation) + m_oldSituation(oldSituation) { } - CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &situation1, const CAircraftSituation &situation2, double timeFraction, qint64 interpolatedTime) : + CInterpolatorLinear::CInterpolant::CInterpolant(const CAircraftSituation &oldSituation, const CAircraftSituation &newSituation, double timeFraction, qint64 interpolatedTime) : IInterpolant(interpolatedTime, 2), - m_oldSituation(situation1), m_newSituation(situation2), + m_oldSituation(oldSituation), m_newSituation(newSituation), m_simulationTimeFraction(timeFraction) { - m_pbh = CInterpolatorPbh(m_simulationTimeFraction, situation1, situation2); + m_pbh = CInterpolatorPbh(m_simulationTimeFraction, oldSituation, newSituation); } void CInterpolatorLinear::anchor() @@ -118,7 +118,9 @@ namespace BlackMisc CAircraftSituation oldSituation = m_interpolant.getOldSituation(); CAircraftSituation newSituation = m_interpolant.getNewSituation(); - if (m_situationsLastModifiedUsed < m_situationsLastModified) + const bool recalculated = m_situationsLastModifiedUsed < m_situationsLastModified; + m_interpolant.setRecalculated(recalculated); + if (recalculated) { m_situationsLastModifiedUsed = m_situationsLastModified; @@ -211,8 +213,9 @@ namespace BlackMisc log.deltaSampleTimesMs = sampleDeltaTimeMs; log.tsInterpolated = interpolatedTime; log.interpolationSituations.clear(); - log.interpolationSituations.push_back(newSituation); // newest at front - log.interpolationSituations.push_back(oldSituation); // oldest at back + log.interpolationSituations.push_back(oldSituation); // oldest at front + log.interpolationSituations.push_back(newSituation); // latest at back + log.interpolantRecalc = recalculated; } m_interpolant = { oldSituation, newSituation, simulationTimeFraction, interpolatedTime }; diff --git a/src/blackmisc/simulation/interpolatorlinear.h b/src/blackmisc/simulation/interpolatorlinear.h index 9958b8a51..ce939ec06 100644 --- a/src/blackmisc/simulation/interpolatorlinear.h +++ b/src/blackmisc/simulation/interpolatorlinear.h @@ -45,9 +45,9 @@ namespace BlackMisc //! Constructor //! @{ CInterpolant() {} - CInterpolant(const Aviation::CAircraftSituation &situation); - CInterpolant(const Aviation::CAircraftSituation &situation, const CInterpolatorPbh &pbh); - CInterpolant(const Aviation::CAircraftSituation &situation1, const Aviation::CAircraftSituation &situation2, double timeFraction, qint64 interpolatedTime); + CInterpolant(const Aviation::CAircraftSituation &oldSituation); + CInterpolant(const Aviation::CAircraftSituation &oldSituation, const CInterpolatorPbh &pbh); + CInterpolant(const Aviation::CAircraftSituation &oldSituation, const Aviation::CAircraftSituation &newSituation, double timeFraction, qint64 interpolatedTime); //! @} //! Perform the interpolation diff --git a/src/blackmisc/simulation/interpolatorspline.cpp b/src/blackmisc/simulation/interpolatorspline.cpp index 099955592..b724253c9 100644 --- a/src/blackmisc/simulation/interpolatorspline.cpp +++ b/src/blackmisc/simulation/interpolatorspline.cpp @@ -266,6 +266,7 @@ namespace BlackMisc log.deltaSampleTimesMs = dt2; log.simTimeFraction = timeFraction; log.tsInterpolated = interpolatedTime; // without offsets + log.interpolantRecalc = m_interpolant.isRecalculated(); } return m_interpolant;