From bdf58ff5382a8e49f688a19128a2741bb03a2006 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 10 Jun 2018 14:45:36 +0200 Subject: [PATCH] Ref T275, utility functions to trace request ids --- .../simulation/fsx/simconnectutilities.cpp | 10 +++- .../simulation/fsx/simconnectutilities.h | 46 +++++++++++++++++-- .../fsxcommon/simconnectdatadefinition.cpp | 29 ++++++++++++ .../fsxcommon/simconnectdatadefinition.h | 12 +++-- 4 files changed, 87 insertions(+), 10 deletions(-) diff --git a/src/blackmisc/simulation/fsx/simconnectutilities.cpp b/src/blackmisc/simulation/fsx/simconnectutilities.cpp index 373f2e0f4..02ef45694 100644 --- a/src/blackmisc/simulation/fsx/simconnectutilities.cpp +++ b/src/blackmisc/simulation/fsx/simconnectutilities.cpp @@ -119,12 +119,12 @@ namespace BlackMisc return n; } - const QString CSimConnectUtilities::simConnectExceptionToString(const DWORD id) + QString CSimConnectUtilities::simConnectExceptionToString(const DWORD id) { return CSimConnectUtilities::resolveEnumToString(id, "SIMCONNECT_EXCEPTION"); } - const QString CSimConnectUtilities::simConnectSurfaceTypeToString(const DWORD type, bool beautify) + QString CSimConnectUtilities::simConnectSurfaceTypeToString(const DWORD type, bool beautify) { QString sf = CSimConnectUtilities::resolveEnumToString(type, "SIMCONNECT_SURFACE"); return beautify ? sf.replace('_', ' ') : sf; @@ -188,6 +188,12 @@ namespace BlackMisc return iniDir; } + QString CSimConnectUtilities::simConnectReceiveIdToString(DWORD type) + { + const QString ri = CSimConnectUtilities::resolveEnumToString(type, "SIMCONNECT_RECV_ID"); + return ri; + } + int CSimConnectUtilities::lightsToLightStates(const CAircraftLights &lights) { int lightMask = 0; diff --git a/src/blackmisc/simulation/fsx/simconnectutilities.h b/src/blackmisc/simulation/fsx/simconnectutilities.h index 7bada04ec..9bfe9fdae 100644 --- a/src/blackmisc/simulation/fsx/simconnectutilities.h +++ b/src/blackmisc/simulation/fsx/simconnectutilities.h @@ -90,13 +90,12 @@ namespace BlackMisc //! Resolve SimConnect exception (based on Qt metadata). //! \param id enum element //! \return enum element's name - static const QString simConnectExceptionToString(const DWORD id); + static QString simConnectExceptionToString(const DWORD id); //! Resolve SimConnect surface (based on Qt metadata). //! \param type enum element //! \param beautify remove "_" - //! \return - static const QString simConnectSurfaceTypeToString(const DWORD type, bool beautify = true); + static QString simConnectSurfaceTypeToString(const DWORD type, bool beautify = true); //! For all P3D and FSX simulators //! \remark reevaluating directories every time @@ -200,11 +199,47 @@ namespace BlackMisc Cabin = 0x0200 }; + //! Receive IDs for SimConnect + enum SIMCONNECT_RECV_ID + { + SIMCONNECT_RECV_ID_NULL, + SIMCONNECT_RECV_ID_EXCEPTION, + SIMCONNECT_RECV_ID_OPEN, + SIMCONNECT_RECV_ID_QUIT, + SIMCONNECT_RECV_ID_EVENT, + SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE, + SIMCONNECT_RECV_ID_EVENT_FILENAME, + SIMCONNECT_RECV_ID_EVENT_FRAME, + SIMCONNECT_RECV_ID_SIMOBJECT_DATA, + SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE, + SIMCONNECT_RECV_ID_WEATHER_OBSERVATION, + SIMCONNECT_RECV_ID_CLOUD_STATE, + SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID, + SIMCONNECT_RECV_ID_RESERVED_KEY, + SIMCONNECT_RECV_ID_CUSTOM_ACTION, + SIMCONNECT_RECV_ID_SYSTEM_STATE, + SIMCONNECT_RECV_ID_CLIENT_DATA, + SIMCONNECT_RECV_ID_EVENT_WEATHER_MODE, + SIMCONNECT_RECV_ID_AIRPORT_LIST, + SIMCONNECT_RECV_ID_VOR_LIST, + SIMCONNECT_RECV_ID_NDB_LIST, + SIMCONNECT_RECV_ID_WAYPOINT_LIST, + SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED, + SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED, + SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED, + SIMCONNECT_RECV_ID_EVENT_RACE_END, + SIMCONNECT_RECV_ID_EVENT_RACE_LAP, + }; + Q_ENUM(SIMCONNECT_RECV_ID) + + //! Receive id to string + static QString simConnectReceiveIdToString(DWORD type); + //! Lights to states - static int lightsToLightStates(const BlackMisc::Aviation::CAircraftLights &lights); + static int lightsToLightStates(const Aviation::CAircraftLights &lights); //! Converts the weather at gridPoint to a SimConnect METAR string - static QString convertToSimConnectMetar(const BlackMisc::Weather::CGridPoint &gridPoint); + static QString convertToSimConnectMetar(const Weather::CGridPoint &gridPoint); //! Get info about SimConnect DLL static BlackMisc::CWinDllUtils::DLLInfo simConnectDllInfo(); @@ -237,5 +272,6 @@ namespace BlackMisc Q_DECLARE_METATYPE(BlackMisc::Simulation::Fsx::CSimConnectUtilities::SIMCONNECT_EXCEPTION) Q_DECLARE_METATYPE(BlackMisc::Simulation::Fsx::CSimConnectUtilities::SIMCONNECT_SURFACE) +Q_DECLARE_METATYPE(BlackMisc::Simulation::Fsx::CSimConnectUtilities::SIMCONNECT_RECV_ID) #endif // guard diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index e8ade8b5e..647a90d93 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -20,6 +20,35 @@ namespace BlackSimPlugin { namespace FsxCommon { + const QString &CSimConnectDefinitions::requestToString(Request request) + { + static const QString ownAircraft("RequestOwnAircraft"); + static const QString removeAircraft("RequestRemoveAircraft"); + static const QString title("RequestOwnAircraftTitle"); + static const QString simEnv("RequestSimEnvironment"); + static const QString sbData("RequestSbData"); + static const QString unknown("unknown"); + static const QString end(""); + static const QString simdata("range simdata"); + static const QString probe("range probe"); + static const QString lights("range lights"); + + switch (request) + { + case RequestOwnAircraft: return ownAircraft; + case RequestRemoveAircraft: return removeAircraft; + case RequestOwnAircraftTitle: return title; + case RequestSimEnvironment: return simEnv; + case RequestSbData: return sbData; + case RequestRangeForLights: return lights; + case RequestRangeForProbe: return probe; + case RequestRangeForSimData: return simdata; + case RequestEndMarker: return end; + default: break; + } + return unknown; + } + CSimConnectDefinitions::CSimConnectDefinitions() { } HRESULT CSimConnectDefinitions::initDataDefinitionsWhenConnected(const HANDLE hSimConnect) diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h index fd01f2999..62fb8d896 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h @@ -140,7 +140,7 @@ namespace BlackSimPlugin double cgToGroundFt; //!< Static CG to ground (ft) //! Above ground ft - double aboveGround() const { return altitudeFt - elevationFt; } + double aboveGroundFt() const { return altitudeFt - elevationFt; } }; //! Data struct simulator environment @@ -208,10 +208,16 @@ namespace BlackSimPlugin RequestRemoveAircraft, RequestOwnAircraftTitle, RequestSimEnvironment, - RequestSbData, //!< SB client area / XPDR mode - RequestEndMarker //!< free request ids can start here + RequestSbData, //!< SB client area / XPDR mode + RequestRangeForSimData, //!< range for sim data + RequestRangeForProbe, //!< range for probe + RequestRangeForLights, //!< range for lights + RequestEndMarker //!< free request ids can start here }; + //! Request to string + static const QString &requestToString(Request request); + //! Constructor CSimConnectDefinitions();