Ref T566, use "configurable" reverse lookup in network/airspace monitor parts

This commit is contained in:
Klaus Basan
2019-04-08 03:01:04 +02:00
committed by Mat Sutcliffe
parent 002f9e6a9b
commit 991c7d59ef
10 changed files with 56 additions and 40 deletions

View File

@@ -512,11 +512,12 @@ namespace BlackCore
(remoteAircraft.hasModelString()) // we cannot expect more info
);
const ReverseLookupLogging revLogEnabled = this->whatToReverseLog();
if (trial < 5 && !complete)
{
static const QString ws("Wait for further data, trial %1 ts %2");
static const QString format("hh:mm:ss.zzz");
this->addReverseLookupMessage(callsign, ws.arg(trial).arg(QDateTime::currentDateTimeUtc().toString(format)));
if (!revLogEnabled.testFlag(RevLogSimplifiedInfo)) { this->addReverseLookupMessage(callsign, ws.arg(trial).arg(QDateTime::currentDateTimeUtc().toString(format))); }
const QPointer<CAirspaceMonitor> myself(this);
QTimer::singleShot(1500, this, [ = ]()
{
@@ -701,8 +702,9 @@ namespace BlackCore
if (isAircraft)
{
const ReverseLookupLogging reverseLookupEnabled = this->isReverseLookupMessagesEnabled();
CStatusMessageList reverseLookupMessages;
CStatusMessageList *pReverseLookupMessages = this->isReverseLookupMessagesEnabled() ? &reverseLookupMessages : nullptr;
CStatusMessageList *pReverseLookupMessages = reverseLookupEnabled.testFlag(RevLogEnabled) ? &reverseLookupMessages : nullptr;
CMatchingUtils::addLogDetailsToList(pReverseLookupMessages, callsign,
QStringLiteral("FsInn data from network: aircraft '%1', airline '%2', model '%3', combined '%4'").
arg(aircraftIcaoDesignator, airlineIcaoDesignator, modelString, combinedAircraftType));
@@ -720,8 +722,9 @@ namespace BlackCore
BLACK_VERIFY_X(callsign.isValid(), Q_FUNC_INFO, "invalid callsign");
if (!callsign.isValid()) { return; }
const ReverseLookupLogging reverseLookupEnabled = this->isReverseLookupMessagesEnabled();
CStatusMessageList reverseLookupMessages;
CStatusMessageList *pReverseLookupMessages = this->isReverseLookupMessagesEnabled() ? &reverseLookupMessages : nullptr;
CStatusMessageList *pReverseLookupMessages = reverseLookupEnabled.testFlag(RevLogEnabled) ? &reverseLookupMessages : nullptr;
CMatchingUtils::addLogDetailsToList(pReverseLookupMessages, callsign, QString("Data from network: aircraft '%1', airline '%2', livery '%3'").
arg(aircraftIcaoDesignator, airlineIcaoDesignator, livery),
CAirspaceMonitor::getLogCategories());

View File

@@ -11,10 +11,11 @@
#ifndef BLACKCORE_AIRSPACE_MONITOR_H
#define BLACKCORE_AIRSPACE_MONITOR_H
#include "blackcore/blackcoreexport.h"
#include "blackcore/network.h"
#include "blackcore/blackcoreexport.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/airspaceaircraftsnapshot.h"
#include "blackmisc/simulation/matchinglog.h"
#include "blackmisc/simulation/ownaircraftprovider.h"
#include "blackmisc/simulation/remoteaircraftprovider.h"
#include "blackmisc/simulation/simulationenvironmentprovider.h"

View File

@@ -11,15 +11,12 @@
#ifndef BLACKCORE_CONTEXT_CONTEXTNETWORK_H
#define BLACKCORE_CONTEXT_CONTEXTNETWORK_H
#include <QObject>
#include <QString>
#include "blackcore/blackcoreexport.h"
#include "blackcore/context/context.h"
#include "blackcore/corefacade.h"
#include "blackcore/corefacadeconfig.h"
#include "blackcore/network.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackcore/blackcoreexport.h"
#include "blackmisc/simulation/remoteaircraftprovider.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/aviation/aircraftpartslist.h"
#include "blackmisc/aviation/airporticaocode.h"
@@ -40,6 +37,8 @@
#include "blackmisc/statusmessage.h"
#include "blackmisc/weather/metar.h"
#include <QObject>
#include <QString>
#include <functional>
// clazy:excludeall=const-signal-or-slot
@@ -304,10 +303,10 @@ namespace BlackCore
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Enabled reverse lookup logging?
virtual bool isReverseLookupMessagesEnabled() const = 0;
virtual BlackMisc::Simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const = 0;
//! Enable reverse lookup logging
virtual void enableReverseLookupMessages(bool enabled) = 0;
virtual void enableReverseLookupMessages(BlackMisc::Simulation::ReverseLookupLogging enable) = 0;
//! Get aircraft parts history
virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const = 0;

View File

@@ -427,17 +427,17 @@ namespace BlackCore
}
//! \copydoc IContextNetwork::isReverseLookupMessagesEnabled
virtual bool isReverseLookupMessagesEnabled() const override
virtual BlackMisc::Simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return false;
return BlackMisc::Simulation::RevLogDisabled;
}
//! \copydoc IContextNetwork::enableReverseLookupMessages
virtual void enableReverseLookupMessages(bool enabled) override
virtual void enableReverseLookupMessages(BlackMisc::Simulation::ReverseLookupLogging enable) override
{
logEmptyContextWarning(Q_FUNC_INFO);
Q_UNUSED(enabled);
Q_UNUSED(enable);
}
//! \copydoc IContextNetwork::getAircraftPartsHistory

View File

@@ -697,17 +697,18 @@ namespace BlackCore
return m_airspace->getReverseLookupMessages(callsign);
}
bool CContextNetwork::isReverseLookupMessagesEnabled() const
ReverseLookupLogging CContextNetwork::isReverseLookupMessagesEnabled() const
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
return m_airspace->isReverseLookupMessagesEnabled();
}
void CContextNetwork::enableReverseLookupMessages(bool enabled)
void CContextNetwork::enableReverseLookupMessages(ReverseLookupLogging enable)
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << enabled; }
if (m_airspace->isReverseLookupMessagesEnabled() == enabled) { return; }
m_airspace->enableReverseLookupMessages(enabled);
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << enable; }
const ReverseLookupLogging revEnabled = m_airspace->isReverseLookupMessagesEnabled();
if (revEnabled == enable) { return; }
m_airspace->enableReverseLookupMessages(enable);
emit CContext::changedLogOrDebugSettings();
}

View File

@@ -163,7 +163,7 @@ namespace BlackCore
virtual bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
virtual bool updateFastPositionEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositonUpdates) override;
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override;
virtual void enableReverseLookupMessages(bool enabled) override;
virtual void enableReverseLookupMessages(BlackMisc::Simulation::ReverseLookupLogging enable) override;
// plain vanilla passing to airspace monitor
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
@@ -178,7 +178,7 @@ namespace BlackCore
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isReverseLookupMessagesEnabled() const override;
virtual BlackMisc::Simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const override;
virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAircraftPartsList getRemoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual int getRemoteAircraftSupportingPartsCount() const override;

View File

@@ -273,14 +273,16 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<CStatusMessageList>(QLatin1String("getReverseLookupMessages"), callsign);
}
bool CContextNetworkProxy::isReverseLookupMessagesEnabled() const
ReverseLookupLogging CContextNetworkProxy::isReverseLookupMessagesEnabled() const
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("isReverseLookupMessagesEnabled"));
//! \fixme KB 2019-04 directly return MatchingLog causes issues with QDbusArgument
const int r = m_dBusInterface->callDBusRet<int>(QLatin1String("isReverseLookupMessagesEnabled"));
return static_cast<ReverseLookupLogging>(r);
}
void CContextNetworkProxy::enableReverseLookupMessages(bool enabled)
void CContextNetworkProxy::enableReverseLookupMessages(ReverseLookupLogging enable)
{
m_dBusInterface->callDBus(QLatin1String("enableReverseLookupMessages"), enabled);
m_dBusInterface->callDBus(QLatin1String("enableReverseLookupMessages"), enable);
}
CStatusMessageList CContextNetworkProxy::getAircraftPartsHistory(const CCallsign &callsign) const

View File

@@ -120,8 +120,8 @@ namespace BlackCore
virtual void setFastPositionEnabledCallsigns(BlackMisc::Aviation::CCallsignSet &callsigns) override;
virtual BlackMisc::Aviation::CCallsignSet getFastPositionEnabledCallsigns() const override;
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isReverseLookupMessagesEnabled() const override;
virtual void enableReverseLookupMessages(bool enabled) override;
virtual BlackMisc::Simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const override;
virtual void enableReverseLookupMessages(BlackMisc::Simulation::ReverseLookupLogging enable) override;
virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAircraftPartsList getRemoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual QString getLibraryInfo(bool detailed) const override;

View File

@@ -608,13 +608,13 @@ namespace BlackMisc
}
}
void CRemoteAircraftProvider::enableReverseLookupMessages(bool enabled)
void CRemoteAircraftProvider::enableReverseLookupMessages(ReverseLookupLogging enable)
{
QWriteLocker l(&m_lockMessages);
m_enableReverseLookupMsgs = enabled;
m_enableReverseLookupMsgs = enable;
}
bool CRemoteAircraftProvider::isReverseLookupMessagesEnabled() const
ReverseLookupLogging CRemoteAircraftProvider::isReverseLookupMessagesEnabled() const
{
QReadLocker l(&m_lockMessages);
return m_enableReverseLookupMsgs;
@@ -646,14 +646,14 @@ namespace BlackMisc
void CRemoteAircraftProvider::addReverseLookupMessage(const CCallsign &callsign, const CStatusMessage &message)
{
if (callsign.isEmpty()) { return; }
if (message.isEmpty()) { return; }
if (message.isEmpty()) { return; }
this->addReverseLookupMessages(callsign, CStatusMessageList({ message }));
}
void CRemoteAircraftProvider::addReverseLookupMessage(const CCallsign &callsign, const QString &message, CStatusMessage::StatusSeverity severity)
{
if (callsign.isEmpty()) { return; }
if (message.isEmpty()) { return; }
if (message.isEmpty()) { return; }
const CStatusMessage m = CMatchingUtils::logMessage(callsign, message, getLogCategories(), severity);
this->addReverseLookupMessage(callsign, m);
}
@@ -688,6 +688,12 @@ namespace BlackMisc
return situation.withAltitudeOffset(os);
}
ReverseLookupLogging CRemoteAircraftProvider::whatToReverseLog() const
{
QReadLocker l(&m_lockMessages);
return m_enableReverseLookupMsgs;
}
CStatusMessageList CRemoteAircraftProvider::getAircraftPartsHistory(const CCallsign &callsign) const
{
QReadLocker l(&m_lockPartsHistory);

View File

@@ -13,7 +13,7 @@
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/airspaceaircraftsnapshot.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/simulation/reverselookup.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/aviation/aircraftpartslist.h"
#include "blackmisc/aviation/aircraftsituationlist.h"
@@ -206,11 +206,11 @@ namespace BlackMisc
//! Enabled reverse lookup logging?
//! \threadsafe
virtual bool isReverseLookupMessagesEnabled() const = 0;
virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const = 0;
//! Enable reverse lookup logging
//! \threadsafe
virtual void enableReverseLookupMessages(bool enabled) = 0;
virtual void enableReverseLookupMessages(ReverseLookupLogging enable) = 0;
//! Get aircraft parts history
//! \threadsafe
@@ -344,8 +344,8 @@ namespace BlackMisc
//! \ingroup remoteaircraftprovider
//! \ingroup reverselookup
//! @{
virtual void enableReverseLookupMessages(bool enabled) override;
virtual bool isReverseLookupMessagesEnabled() const override;
virtual void enableReverseLookupMessages(ReverseLookupLogging enable) override;
virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const override;
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! @}
@@ -450,6 +450,10 @@ namespace BlackMisc
//! Add an offset for testing
Aviation::CAircraftSituation addTestAltitudeOffsetToSituation(const Aviation::CAircraftSituation &situation) const;
//! What to log?
//! \threadsafe
ReverseLookupLogging whatToReverseLog() const;
private:
//! Store the latest changes
//! \remark latest first
@@ -465,6 +469,7 @@ namespace BlackMisc
int m_situationsAdded = 0; //!< total number of situations added, thread safe access required
int m_partsAdded = 0; //!< total number of parts added, thread safe access required
ReverseLookupLogging m_enableReverseLookupMsgs = RevLogSimplifiedInfo; //!< shall we log. information about the matching process
Simulation::CSimulatedAircraftPerCallsign m_aircraftInRange; //!< aircraft, thread safe access required
Aviation::CStatusMessageListPerCallsign m_reverseLookupMessages; //!< reverse lookup messages
Aviation::CStatusMessageListPerCallsign m_aircraftPartsMessages; //!< status messages for parts history
@@ -472,8 +477,7 @@ namespace BlackMisc
Aviation::CTimestampPerCallsign m_partsLastModified; //!< when parts last modified
Aviation::CLengthPerCallsign m_testOffset; //!< offsets
bool m_enableReverseLookupMsgs = false; //!< shall we log. information about the matching process
bool m_enableAircraftPartsHistory = true; //!< shall we keep a history of aircraft parts
bool m_enableAircraftPartsHistory = true; //!< shall we keep a history of aircraft parts
// locks
mutable QReadWriteLock m_lockSituations; //!< lock for situations: m_situationsByCallsign