diff --git a/src/plugins/simulator/fsx/simconnect_datadefinition.cpp b/src/plugins/simulator/fsx/simconnect_datadefinition.cpp index 7e4040ce2..2f2fe04a1 100644 --- a/src/plugins/simulator/fsx/simconnect_datadefinition.cpp +++ b/src/plugins/simulator/fsx/simconnect_datadefinition.cpp @@ -39,6 +39,7 @@ namespace BlackSimPlugin hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraft, "COM ACTIVE FREQUENCY:2", "MHz"); hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraft, "COM STANDBY FREQUENCY:1", "MHz"); hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraft, "COM STANDBY FREQUENCY:2", "MHz"); + hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraftTitle, "TITLE", NULL, SIMCONNECT_DATATYPE_STRING256); return hr; } diff --git a/src/plugins/simulator/fsx/simconnect_datadefinition.h b/src/plugins/simulator/fsx/simconnect_datadefinition.h index cb61aae0f..bb647034c 100644 --- a/src/plugins/simulator/fsx/simconnect_datadefinition.h +++ b/src/plugins/simulator/fsx/simconnect_datadefinition.h @@ -38,6 +38,12 @@ namespace BlackSimPlugin double com2StandbyMHz; //!< COM1 standby frequency }; + //! Data struct of aircraft position + struct DataDefinitionOwnAircraftModel + { + char title[256]; //!< Aircraft model string + }; + //! Data struct of aircraft position struct DataDefinitionRemoteAircraftSituation { @@ -59,6 +65,7 @@ namespace BlackSimPlugin enum DataDefiniton { DataOwnAircraft, + DataOwnAircraftTitle, DataDefinitionRemoteAircraftSituation, DataDefinitionGearHandlePosition }; @@ -66,8 +73,9 @@ namespace BlackSimPlugin //! SimConnect request IDs enum Requests { - RequestOwnAircraft = 1000, - RequestRemoveAircraft = 2000 + RequestOwnAircraft, + RequestRemoveAircraft, + RequestOwnAircraftTitle }; //! Constructor diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index f41070547..d0aac2f48 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -18,6 +18,7 @@ using namespace BlackMisc; using namespace BlackMisc::Aviation; using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Geo; +using namespace BlackMisc::Network; using namespace BlackSim; using namespace BlackSim::FsCommon; using namespace BlackSim::Fsx; @@ -337,6 +338,11 @@ namespace BlackSimPlugin ownAircaft = (DataDefinitionOwnAircraft *)&pObjData->dwData; simulatorFsx->updateOwnAircraftFromSim(*ownAircaft); break; + case CSimConnectDataDefinition::RequestOwnAircraftTitle: + DataDefinitionOwnAircraftModel *dataDefinitionModel = (DataDefinitionOwnAircraftModel *) &pObjData->dwData; + CAircraftModel model; + model.setQueriedModelString(dataDefinitionModel->title); + simulatorFsx->setAircraftModel(model); } break; } @@ -350,6 +356,13 @@ namespace BlackSimPlugin SimConnect_RequestDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::RequestOwnAircraft, CSimConnectDataDefinition::DataOwnAircraft, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME); + + + SimConnect_RequestDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::RequestOwnAircraftTitle, + CSimConnectDataDefinition::DataOwnAircraftTitle, + SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_SECOND, + SIMCONNECT_DATA_REQUEST_FLAG_CHANGED); + emit simulatorStarted(); } diff --git a/src/plugins/simulator/fsx/simulator_fsx.h b/src/plugins/simulator/fsx/simulator_fsx.h index 3a18746e0..58877467e 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.h +++ b/src/plugins/simulator/fsx/simulator_fsx.h @@ -12,6 +12,7 @@ #include "blackcore/interpolator_linear.h" #include "blackmisc/avaircraft.h" #include "blackmisc/statusmessage.h" +#include "blackmisc/nwaircraftmodel.h" #include "blacksim/simulatorinfo.h" #include @@ -137,6 +138,9 @@ namespace BlackSimPlugin //! \private void onSimExit(); + //! \private + void setAircraftModel( const BlackMisc::Network::CAircraftModel &model) { m_aircraftModel = model; } + protected: //! Timer event virtual void timerEvent(QTimerEvent *event); @@ -172,6 +176,8 @@ namespace BlackSimPlugin BlackSim::CSimulatorInfo m_simulatorInfo; BlackMisc::Aviation::CAircraft m_ownAircraft; //!< Object representing our own aircraft from simulator QHash m_simConnectObjects; + BlackMisc::Network::CAircraftModel m_aircraftModel; + int m_simconnectTimerId; int m_skipCockpitUpdateCycles; //!< Skip some update cycles to allow changes in simulator cockpit to be set QFutureWatcher m_watcherConnect;