Inject global weather grid to Flight Simulators via FSUIPC

In the short term FSUIPC is used for all MSFS simulators, but in the
mid term this will be superceded by the Simconnect Weather API.

refs #579
This commit is contained in:
Roland Winklmeier
2016-03-01 23:09:21 +01:00
parent 16315ec2ec
commit 99ab20bcc5
7 changed files with 238 additions and 4 deletions

View File

@@ -33,6 +33,7 @@ using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation::FsCommon;
using namespace BlackMisc::Simulation::Fsx;
using namespace BlackMisc::Weather;
using namespace BlackCore;
namespace BlackSimPlugin
@@ -50,7 +51,7 @@ namespace BlackSimPlugin
Q_ASSERT(remoteAircraftProvider);
this->m_simulatorSetup = CFsxSimulatorSetup::getInitialSetup();
m_useFsuipc = false; // do not use FSUIPC at the moment with FSX
m_useFsuipc = true; // Temporarily enabled until Simconnect Weather is implemented.
this->m_interpolator = new CInterpolatorLinear(remoteAircraftProvider, this);
m_modelMatcher.setDefaultModel(CAircraftModel(
"Boeing 737-800 Paint1",
@@ -95,6 +96,10 @@ namespace BlackSimPlugin
m_simconnectTimerId = startTimer(10);
m_simConnected = true;
emitSimulatorCombinedStatus();
// Pull weather data from core.
// Since we don't get weather data from core yet, use hard coded weather.
injectWeatherGrid(CWeatherGrid::getCavokGrid());
return true;
}
@@ -824,6 +829,11 @@ namespace BlackSimPlugin
}
}
void CSimulatorFsx::injectWeatherGrid(const Weather::CWeatherGrid &weatherGrid)
{
m_fsuipc->write(weatherGrid);
}
CSimulatorFsxListener::CSimulatorFsxListener(const CSimulatorPluginInfo &info) :
ISimulatorListener(info),
m_timer(new QTimer(this))

View File

@@ -179,6 +179,9 @@ namespace BlackSimPlugin
//! Sync time with user's computer
void synchronizeTime(const BlackMisc::PhysicalQuantities::CTime &zuluTimeSim, const BlackMisc::PhysicalQuantities::CTime &localTimeSim);
//! Inject weather grid to simulator
void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid);
static const int SkipUpdateCyclesForCockpit = 10; //!< skip x cycles before updating cockpit again
bool m_simConnected = false; //!< Is simulator connected?
bool m_simSimulating = false; //!< Simulator running?