Setup SimConnect data structure and requests for user

aircraft title

refs #235
This commit is contained in:
Roland Winklmeier
2014-06-03 19:58:53 +02:00
parent 3b32991fc0
commit fdb4403904
4 changed files with 30 additions and 2 deletions

View File

@@ -39,6 +39,7 @@ namespace BlackSimPlugin
hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraft, "COM ACTIVE FREQUENCY:2", "MHz"); 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:1", "MHz");
hr = SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDataDefinition::DataOwnAircraft, "COM STANDBY FREQUENCY:2", "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; return hr;
} }

View File

@@ -38,6 +38,12 @@ namespace BlackSimPlugin
double com2StandbyMHz; //!< COM1 standby frequency double com2StandbyMHz; //!< COM1 standby frequency
}; };
//! Data struct of aircraft position
struct DataDefinitionOwnAircraftModel
{
char title[256]; //!< Aircraft model string
};
//! Data struct of aircraft position //! Data struct of aircraft position
struct DataDefinitionRemoteAircraftSituation struct DataDefinitionRemoteAircraftSituation
{ {
@@ -59,6 +65,7 @@ namespace BlackSimPlugin
enum DataDefiniton enum DataDefiniton
{ {
DataOwnAircraft, DataOwnAircraft,
DataOwnAircraftTitle,
DataDefinitionRemoteAircraftSituation, DataDefinitionRemoteAircraftSituation,
DataDefinitionGearHandlePosition DataDefinitionGearHandlePosition
}; };
@@ -66,8 +73,9 @@ namespace BlackSimPlugin
//! SimConnect request IDs //! SimConnect request IDs
enum Requests enum Requests
{ {
RequestOwnAircraft = 1000, RequestOwnAircraft,
RequestRemoveAircraft = 2000 RequestRemoveAircraft,
RequestOwnAircraftTitle
}; };
//! Constructor //! Constructor

View File

@@ -18,6 +18,7 @@ using namespace BlackMisc;
using namespace BlackMisc::Aviation; using namespace BlackMisc::Aviation;
using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::PhysicalQuantities;
using namespace BlackMisc::Geo; using namespace BlackMisc::Geo;
using namespace BlackMisc::Network;
using namespace BlackSim; using namespace BlackSim;
using namespace BlackSim::FsCommon; using namespace BlackSim::FsCommon;
using namespace BlackSim::Fsx; using namespace BlackSim::Fsx;
@@ -337,6 +338,11 @@ namespace BlackSimPlugin
ownAircaft = (DataDefinitionOwnAircraft *)&pObjData->dwData; ownAircaft = (DataDefinitionOwnAircraft *)&pObjData->dwData;
simulatorFsx->updateOwnAircraftFromSim(*ownAircaft); simulatorFsx->updateOwnAircraftFromSim(*ownAircaft);
break; break;
case CSimConnectDataDefinition::RequestOwnAircraftTitle:
DataDefinitionOwnAircraftModel *dataDefinitionModel = (DataDefinitionOwnAircraftModel *) &pObjData->dwData;
CAircraftModel model;
model.setQueriedModelString(dataDefinitionModel->title);
simulatorFsx->setAircraftModel(model);
} }
break; break;
} }
@@ -350,6 +356,13 @@ namespace BlackSimPlugin
SimConnect_RequestDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::RequestOwnAircraft, SimConnect_RequestDataOnSimObject(m_hSimConnect, CSimConnectDataDefinition::RequestOwnAircraft,
CSimConnectDataDefinition::DataOwnAircraft, CSimConnectDataDefinition::DataOwnAircraft,
SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME); 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(); emit simulatorStarted();
} }

View File

@@ -12,6 +12,7 @@
#include "blackcore/interpolator_linear.h" #include "blackcore/interpolator_linear.h"
#include "blackmisc/avaircraft.h" #include "blackmisc/avaircraft.h"
#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessage.h"
#include "blackmisc/nwaircraftmodel.h"
#include "blacksim/simulatorinfo.h" #include "blacksim/simulatorinfo.h"
#include <simconnect/SimConnect.h> #include <simconnect/SimConnect.h>
@@ -137,6 +138,9 @@ namespace BlackSimPlugin
//! \private //! \private
void onSimExit(); void onSimExit();
//! \private
void setAircraftModel( const BlackMisc::Network::CAircraftModel &model) { m_aircraftModel = model; }
protected: protected:
//! Timer event //! Timer event
virtual void timerEvent(QTimerEvent *event); virtual void timerEvent(QTimerEvent *event);
@@ -172,6 +176,8 @@ namespace BlackSimPlugin
BlackSim::CSimulatorInfo m_simulatorInfo; BlackSim::CSimulatorInfo m_simulatorInfo;
BlackMisc::Aviation::CAircraft m_ownAircraft; //!< Object representing our own aircraft from simulator BlackMisc::Aviation::CAircraft m_ownAircraft; //!< Object representing our own aircraft from simulator
QHash<BlackMisc::Aviation::CCallsign, CSimConnectObject> m_simConnectObjects; QHash<BlackMisc::Aviation::CCallsign, CSimConnectObject> m_simConnectObjects;
BlackMisc::Network::CAircraftModel m_aircraftModel;
int m_simconnectTimerId; int m_simconnectTimerId;
int m_skipCockpitUpdateCycles; //!< Skip some update cycles to allow changes in simulator cockpit to be set int m_skipCockpitUpdateCycles; //!< Skip some update cycles to allow changes in simulator cockpit to be set
QFutureWatcher<bool> m_watcherConnect; QFutureWatcher<bool> m_watcherConnect;