diff --git a/src/blackmisc/simulation/fsx/simconnectutilities.h b/src/blackmisc/simulation/fsx/simconnectutilities.h index bea0ba4ec..7364af109 100644 --- a/src/blackmisc/simulation/fsx/simconnectutilities.h +++ b/src/blackmisc/simulation/fsx/simconnectutilities.h @@ -31,7 +31,7 @@ # ifndef NOMINMAX # define NOMINMAX # endif -# include +# include #else using DWORD = unsigned long; //!< Fake Windows DWORD #endif diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index 03f7cef2f..d0e0bc151 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -9,6 +9,7 @@ #include "simconnectdatadefinition.h" #include "simconnectsymbols.h" +#include "simconnectfunctions.h" #include "blackmisc/aviation/aircraftparts.h" #include "blackmisc/aviation/aircraftenginelist.h" #include "blackmisc/logmessage.h" @@ -75,7 +76,7 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initDataDefinitionsWhenConnected(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); hr += initOwnAircraft(hSimConnect); hr += initRemoteAircraft(hSimConnect); hr += initRemoteAircraftSimData(hSimConnect); @@ -86,7 +87,7 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initOwnAircraft(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "PLANE LATITUDE", "Degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "PLANE LONGITUDE", "Degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "PLANE ALTITUDE", "Feet"); @@ -105,7 +106,7 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT BEACON", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT NAV", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "LIGHT LOGO", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "TRANSPONDER CODE:1", NULL); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "TRANSPONDER CODE:1", nullptr); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM ACTIVE FREQUENCY:1", "MHz"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM ACTIVE FREQUENCY:2", "MHz"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM STANDBY FREQUENCY:1", "MHz"); @@ -120,8 +121,8 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GENERAL ENG COMBUSTION:3", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GENERAL ENG COMBUSTION:4", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle, "TITLE", NULL, SIMCONNECT_DATATYPE_STRING256); - if (hr != S_OK) + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle, "TITLE", nullptr, SIMCONNECT_DATATYPE_STRING256); + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initOwnAircraft %1") << hr; } @@ -130,9 +131,9 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initRemoteAircraft(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); // Position - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetPosition, "Initial Position", NULL, SIMCONNECT_DATATYPE_INITPOSITION); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetPosition, "Initial Position", nullptr, SIMCONNECT_DATATYPE_INITPOSITION); // Hint: "Bool" and "Percent .." are units name // default data type is SIMCONNECT_DATATYPE_FLOAT64 -> double @@ -154,7 +155,7 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "GENERAL ENG COMBUSTION:4", "Bool"); // Lights (other definition) - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle, "TITLE", NULL, SIMCONNECT_DATATYPE_STRING256); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle, "TITLE", nullptr, SIMCONNECT_DATATYPE_STRING256); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT STROBE", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT LANDING", "Bool"); @@ -166,7 +167,7 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT RECOGNITION", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT CABIN", "Bool"); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initRemoteAircraftSituation %1") << hr; } @@ -175,25 +176,25 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initRemoteAircraftSimData(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition, "PLANE LATITUDE", "degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition, "PLANE LONGITUDE", "degrees"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition, "PLANE ALTITUDE", "Feet"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition, "GROUND ALTITUDE", "Feet"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition, "STATIC CG TO GROUND", "Feet"); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initRemoteAircraftSimData DataRemoteAircraftGetPosition %1") << hr; } hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "STATIC CG TO GROUND", "Feet"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC TYPE", NULL, SIMCONNECT_DATATYPE_STRING32); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC MODEL", NULL, SIMCONNECT_DATATYPE_STRING32); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC ID", NULL, SIMCONNECT_DATATYPE_STRING32); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC AIRLINE", NULL, SIMCONNECT_DATATYPE_STRING64); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC FLIGHT NUMBER", NULL, SIMCONNECT_DATATYPE_STRING8); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "TITLE", NULL, SIMCONNECT_DATATYPE_STRING256); - if (hr != S_OK) + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC TYPE", nullptr, SIMCONNECT_DATATYPE_STRING32); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC MODEL", nullptr, SIMCONNECT_DATATYPE_STRING32); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC ID", nullptr, SIMCONNECT_DATATYPE_STRING32); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC AIRLINE", nullptr, SIMCONNECT_DATATYPE_STRING64); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "ATC FLIGHT NUMBER", nullptr, SIMCONNECT_DATATYPE_STRING8); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData, "TITLE", nullptr, SIMCONNECT_DATATYPE_STRING256); + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initRemoteAircraftSimData DataRemoteAircraftModelData %1") << hr; } @@ -203,10 +204,10 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initSimulatorEnvironment(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment, "ZULU TIME", "", SIMCONNECT_DATATYPE_INT32); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment, "LOCAL TIME", "", SIMCONNECT_DATATYPE_INT32); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initSimulatorEnvironment %1") << hr; } @@ -215,12 +216,12 @@ namespace BlackSimPlugin HRESULT CSimConnectDefinitions::initSbDataArea(const HANDLE hSimConnect) { - HRESULT hr = S_OK; + HRESULT hr = s_ok(); const DWORD sbSize = sizeof(DataDefinitionClientAreaSb); // We need to know the client area 'name' and map it to a client ID hr += SimConnect_MapClientDataNameToID(hSimConnect, "SquawkBox Data", ClientAreaSquawkBox); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: SimConnect_MapClientDataNameToID %1") << hr; return hr; @@ -228,7 +229,7 @@ namespace BlackSimPlugin // Mapping needs to be first hr += SimConnect_CreateClientData(hSimConnect, ClientAreaSquawkBox, sbSize, SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: SimConnect_CreateClientData %1") << hr; return hr; @@ -237,7 +238,7 @@ namespace BlackSimPlugin hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSb, 0, sbSize); hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbStandby, 17, 1); hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbIdent, 19, 1); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: SB data area data definitions %1") << hr; return hr; @@ -247,7 +248,7 @@ namespace BlackSimPlugin DataDefinitionClientAreaSb sbArea; sbArea.setDefaultValues(); hr += SimConnect_SetClientData(hSimConnect, ClientAreaSquawkBox, CSimConnectDefinitions::DataClientAreaSb, SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_DEFAULT, 0, sbSize, &sbArea); - if (hr != S_OK) + if (isFailure(hr)) { CLogMessage(static_cast(nullptr)).error("SimConnect error: SimConnect_SetClientData %1") << hr; } @@ -339,7 +340,10 @@ namespace BlackSimPlugin CAircraftLights DataDefinitionRemoteAircraftLights::toLights() const { - return CAircraftLights(lightStrobe, lightLanding, lightTaxi, lightBeacon, lightNav, lightLogo, lightRecognition, lightCabin); + return CAircraftLights( + dtb(lightStrobe), dtb(lightLanding), dtb(lightTaxi), + dtb(lightBeacon), dtb(lightNav), dtb(lightLogo), dtb(lightRecognition), + dtb(lightCabin)); } } // namespace } // namespace diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h index 5386c33bf..bdca4629e 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h @@ -9,8 +9,8 @@ //! \file -#ifndef BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H -#define BLACKSIMPLUGIN_FSX_SIMCONNECT_DATADEFINITION_H +#ifndef BLACKSIMPLUGIN_FSXCOMMON_SIMCONNECT_DATADEFINITION_H +#define BLACKSIMPLUGIN_FSXCOMMON_SIMCONNECT_DATADEFINITION_H #include diff --git a/src/plugins/simulator/fsxcommon/simconnectfunctions.h b/src/plugins/simulator/fsxcommon/simconnectfunctions.h new file mode 100644 index 000000000..baa6cc4f9 --- /dev/null +++ b/src/plugins/simulator/fsxcommon/simconnectfunctions.h @@ -0,0 +1,33 @@ +/* Copyright (C) 2018 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKSIMPLUGIN_FSXCOMMON_SIMCONNECTFUNCTIONS_H +#define BLACKSIMPLUGIN_FSXCOMMON_SIMCONNECTFUNCTIONS_H + +#include +#include + +namespace BlackSimPlugin +{ + namespace FsxCommon + { + //! Correctly casted values/checks @{ + HRESULT inline s_ok() { return S_OK; } + static bool inline isOk(HRESULT result) { return result == s_ok(); } + static bool inline isOk(HRESULT hr1, HRESULT hr2, HRESULT hr3 = s_ok(), HRESULT hr4 = s_ok()) { return isOk(hr1) && isOk(hr2) && isOk(hr3) && isOk(hr4); } + bool inline isFailure(HRESULT result) { return !isOk(result); } + bool inline isFailure(HRESULT hr1, HRESULT hr2, HRESULT hr3 = s_ok(), HRESULT hr4 = s_ok()) { return !isOk(hr1, hr2, hr3, hr4); } + bool inline dtb(double doubleBool) { return static_cast(qRound(doubleBool)); } + //! @} + } // namespace +} // namespace + +#endif // guard diff --git a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp index 180a5b348..5a4465027 100644 --- a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp @@ -10,7 +10,7 @@ #include "simconnectsymbols.h" #include "blackmisc/logmessage.h" #include -#include +#include #include #include diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 96fde07c3..932400c65 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -9,6 +9,7 @@ #include "simulatorfsxcommon.h" #include "simconnectsymbols.h" +#include "simconnectfunctions.h" #include "blackcore/application.h" #include "blackmisc/network/textmessage.h" #include "blackmisc/simulation/fsx/simconnectutilities.h" @@ -48,15 +49,6 @@ namespace BlackSimPlugin { namespace FsxCommon { - //! Correctly casted values/checks @{ - static HRESULT inline s_ok() { return S_OK; } - static bool inline isOk(HRESULT result) { return result == s_ok(); } - static bool inline isOk(HRESULT hr1, HRESULT hr2, HRESULT hr3 = s_ok(), HRESULT hr4 = s_ok()) { return isOk(hr1) && isOk(hr2) && isOk(hr3) && isOk(hr4); } - static bool inline isFailure(HRESULT result) { return !isOk(result); } - static bool inline isFailure(HRESULT hr1, HRESULT hr2, HRESULT hr3 = s_ok(), HRESULT hr4 = s_ok()) { return !isOk(hr1, hr2, hr3, hr4); } - static bool inline dtb(double doubleBool) { return static_cast(qRound(doubleBool)); } - //! @} - CSimulatorFsxCommon::CSimulatorFsxCommon(const CSimulatorPluginInfo &info, IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider,