8 #include <QStringBuilder>
10 #include "../fscommon/simulatorfscommonfunctions.h"
18 using namespace swift::misc::aviation;
19 using namespace swift::misc::simulation;
20 using namespace swift::simplugin::fscommon;
22 namespace swift::simplugin::fsxcommon
24 const QString &CSimConnectDefinitions::requestToString(
Request request)
26 static const QString ownAircraft(
"RequestOwnAircraft");
27 static const QString title(
"RequestOwnAircraftTitle");
28 static const QString sbData(
"RequestSbData");
29 static const QString facility(
"RequestFacility");
30 static const QString
end(
"<end>");
31 static const QString unknown(
"unknown");
35 case RequestOwnAircraft:
return ownAircraft;
36 case RequestOwnAircraftTitle:
return title;
37 case RequestSbData:
return sbData;
38 case RequestFacility:
return facility;
39 case RequestEndMarker:
return end;
45 const QString &CSimConnectDefinitions::simObjectRequestToString(
SimObjectRequest simObjectRequest)
47 static const QString baseId(
"base id");
48 static const QString add(
"add");
49 static const QString remove(
"remove");
50 static const QString lights(
"lights");
51 static const QString pos(
"position");
52 static const QString model(
"model");
53 static const QString misc(
"misc");
54 static const QString
end(
"<end>");
55 static const QString unknown(
"unknown");
57 switch (simObjectRequest)
59 case SimObjectBaseId:
return baseId;
60 case SimObjectAdd:
return add;
61 case SimObjectRemove:
return remove;
62 case SimObjectLights:
return lights;
63 case SimObjectPositionData:
return pos;
64 case SimObjectModel:
return model;
65 case SimObjectMisc:
return misc;
66 case SimObjectEndMarker:
return end;
72 CSimConnectDefinitions::CSimConnectDefinitions() {}
74 HRESULT CSimConnectDefinitions::initDataDefinitionsWhenConnected(
const HANDLE hSimConnect,
78 hr += initOwnAircraft(hSimConnect);
79 hr += initRemoteAircraft(hSimConnect);
80 hr += initRemoteAircraftSimData(hSimConnect);
81 hr += initRemoteAircraftSimDataSet(hSimConnect);
82 hr += initSimulatorEnvironment(hSimConnect);
83 hr += initSbDataArea(hSimConnect);
84 if (simInfo.
isMSFS()) { hr += initMSFSTransponder(hSimConnect); }
85 if (simInfo.
isMSFS2024()) { hr += initMSFS2024Transponder(hSimConnect); }
89 HRESULT CSimConnectDefinitions::initOwnAircraft(
const HANDLE hSimConnect)
94 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"PLANE LATITUDE",
96 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"PLANE LONGITUDE",
98 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"PLANE ALTITUDE",
100 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
101 "PLANE ALT ABOVE GROUND",
"Feet");
102 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"PRESSURE ALTITUDE",
104 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
105 "STATIC CG TO GROUND",
"Feet");
106 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
107 "PLANE HEADING DEGREES TRUE",
"Degrees");
108 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
109 "PLANE PITCH DEGREES",
"Degrees");
110 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"PLANE BANK DEGREES",
112 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"GROUND VELOCITY",
114 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"GROUND ALTITUDE",
116 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"SIM ON GROUND",
118 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT STROBE",
120 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT LANDING",
123 SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT TAXI",
"Bool");
124 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT BEACON",
126 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT NAV",
"Bool");
128 SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"LIGHT LOGO",
"Bool");
129 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"TRANSPONDER CODE:1",
131 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
132 "COM ACTIVE FREQUENCY:1",
"MHz");
133 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
134 "COM ACTIVE FREQUENCY:2",
"MHz");
135 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
136 "COM STANDBY FREQUENCY:1",
"MHz");
137 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
138 "COM STANDBY FREQUENCY:2",
"MHz");
139 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM TRANSMIT:1",
141 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM TRANSMIT:2",
143 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM RECEIVE ALL",
146 SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM TEST:1",
"Bool");
148 SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM TEST:2",
"Bool");
149 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM STATUS:1",
151 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"COM STATUS:2",
153 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
154 "FLAPS HANDLE PERCENT",
"Percent Over 100");
155 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
156 "SPOILERS HANDLE POSITION",
"Percent Over 100");
157 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
158 "GEAR HANDLE POSITION",
"Bool");
159 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"NUMBER OF ENGINES",
162 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
163 "GENERAL ENG COMBUSTION:1",
"Bool");
164 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
165 "GENERAL ENG COMBUSTION:2",
"Bool");
166 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
167 "GENERAL ENG COMBUSTION:3",
"Bool");
168 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
169 "GENERAL ENG COMBUSTION:4",
"Bool");
170 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"VELOCITY WORLD X",
172 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"VELOCITY WORLD Y",
174 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
"VELOCITY WORLD Z",
176 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
177 "ROTATION VELOCITY BODY X",
"Radians per second");
178 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
179 "ROTATION VELOCITY BODY Y",
"Radians per second");
180 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
181 "ROTATION VELOCITY BODY Z",
"Radians per second");
183 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft,
184 "INDICATED ALTITUDE CALIBRATED",
"Feet");
186 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle,
"TITLE",
187 nullptr, SIMCONNECT_DATATYPE_STRING256);
196 HRESULT CSimConnectDefinitions::initRemoteAircraft(
const HANDLE hSimConnect)
200 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetPosition,
201 "Initial Position",
nullptr, SIMCONNECT_DATATYPE_INITPOSITION);
207 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
208 "LEADING EDGE FLAPS LEFT PERCENT",
"Percent Over 100");
209 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
210 "LEADING EDGE FLAPS RIGHT PERCENT",
"Percent Over 100");
211 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
212 "TRAILING EDGE FLAPS LEFT PERCENT",
"Percent Over 100");
213 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
214 "TRAILING EDGE FLAPS RIGHT PERCENT",
"Percent Over 100");
217 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
218 "GEAR HANDLE POSITION",
"Bool");
219 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
220 "SPOILERS HANDLE POSITION",
"Percent Over 100");
223 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
224 "GENERAL ENG COMBUSTION:1",
"Bool");
225 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
226 "GENERAL ENG COMBUSTION:2",
"Bool");
227 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
228 "GENERAL ENG COMBUSTION:3",
"Bool");
229 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftPartsWithoutLights,
230 "GENERAL ENG COMBUSTION:4",
"Bool");
233 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle,
"TITLE",
234 nullptr, SIMCONNECT_DATATYPE_STRING256);
236 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
237 "LIGHT STROBE",
"Bool");
238 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
239 "LIGHT LANDING",
"Bool");
240 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
241 "LIGHT TAXI",
"Bool");
242 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
243 "LIGHT BEACON",
"Bool");
244 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
"LIGHT NAV",
246 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
247 "LIGHT LOGO",
"Bool");
248 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
"LIGHT NAV",
250 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
251 "LIGHT RECOGNITION",
"Bool");
252 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights,
253 "LIGHT CABIN",
"Bool");
257 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
258 .
error(u
"SimConnect error: initRemoteAircraftSituation %1")
264 HRESULT CSimConnectDefinitions::initRemoteAircraftSimData(
const HANDLE hSimConnect)
267 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
268 "PLANE LATITUDE",
"degrees");
269 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
270 "PLANE LONGITUDE",
"degrees");
271 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
272 "PLANE ALTITUDE",
"Feet");
273 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
274 "GROUND ALTITUDE",
"Feet");
275 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
276 "STATIC CG TO GROUND",
"Feet");
279 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
280 .
error(u
"SimConnect error: initRemoteAircraftSimData DataRemoteAircraftGetPosition %1")
284 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
285 "STATIC CG TO GROUND",
"Feet");
286 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
287 "ATC TYPE",
nullptr, SIMCONNECT_DATATYPE_STRING32);
288 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
289 "ATC MODEL",
nullptr, SIMCONNECT_DATATYPE_STRING32);
290 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
"ATC ID",
291 nullptr, SIMCONNECT_DATATYPE_STRING32);
292 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
293 "ATC AIRLINE",
nullptr, SIMCONNECT_DATATYPE_STRING64);
294 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
295 "ATC FLIGHT NUMBER",
nullptr, SIMCONNECT_DATATYPE_STRING8);
296 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftModelData,
"TITLE",
297 nullptr, SIMCONNECT_DATATYPE_STRING256);
300 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
301 .
error(u
"SimConnect error: initRemoteAircraftSimData DataRemoteAircraftModelData %1")
307 HRESULT CSimConnectDefinitions::initRemoteAircraftSimDataSet(
const HANDLE hSimConnect)
311 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetData,
"ATC ID",
312 nullptr, SIMCONNECT_DATATYPE_STRING32);
313 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetData,
314 "ATC AIRLINE",
nullptr, SIMCONNECT_DATATYPE_STRING64);
315 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSetData,
316 "ATC FLIGHT NUMBER",
nullptr, SIMCONNECT_DATATYPE_STRING8);
319 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
320 .
error(u
"SimConnect error: initRemoteAircraftSimDataSet DataRemoteAircraftModelData %1")
326 HRESULT CSimConnectDefinitions::initSimulatorEnvironment(
const HANDLE hSimConnect)
329 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment,
"ZULU TIME",
"",
330 SIMCONNECT_DATATYPE_INT32);
331 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment,
"ZULU YEAR",
"",
332 SIMCONNECT_DATATYPE_INT32);
333 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment,
334 "ZULU MONTH OF YEAR",
"", SIMCONNECT_DATATYPE_INT32);
335 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataSimEnvironment,
336 "ZULU DAY OF MONTH",
"", SIMCONNECT_DATATYPE_INT32);
339 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
340 .
error(u
"SimConnect error: initSimulatorEnvironment %1")
346 HRESULT CSimConnectDefinitions::initSbDataArea(
const HANDLE hSimConnect)
349 const DWORD sbSize =
sizeof(DataDefinitionClientAreaSb);
352 hr += SimConnect_MapClientDataNameToID(hSimConnect,
"SquawkBox Data", ClientAreaSquawkBox);
355 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
356 .
error(u
"SimConnect error: SimConnect_MapClientDataNameToID %1")
362 hr += SimConnect_CreateClientData(hSimConnect, ClientAreaSquawkBox, sbSize,
363 SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT);
366 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
367 .
error(u
"SimConnect error: SimConnect_CreateClientData %1")
373 hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSb, 0,
375 hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbStandby, 17,
377 hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbIdent, 19,
379 hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbConnected, 1,
381 hr += SimConnect_AddToClientDataDefinition(hSimConnect, CSimConnectDefinitions::DataClientAreaSbRunning, 0,
386 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
387 .
error(u
"SimConnect error: SB data area data definitions %1")
393 DataDefinitionClientAreaSb sbArea;
395 sbArea.setDefaultValues();
396 hr += SimConnect_SetClientData(hSimConnect, ClientAreaSquawkBox, CSimConnectDefinitions::DataClientAreaSb,
397 SIMCONNECT_CLIENT_DATA_SET_FLAG_DEFAULT, 0, sbSize, &sbArea);
399 SimConnect_SetClientData(hSimConnect, ClientAreaSquawkBox, CSimConnectDefinitions::DataClientAreaSbRunning,
400 SIMCONNECT_CLIENT_DATA_SET_FLAG_DEFAULT, 0, 1, &sbRunning);
403 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
404 .
error(u
"SimConnect error: SimConnect_SetClientData %1")
410 HRESULT CSimConnectDefinitions::initMSFSTransponder(
const HANDLE hSimConnect)
413 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataTransponderModeMSFS,
414 "TRANSPONDER STATE:1",
"Enum");
415 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataTransponderModeMSFS,
416 "TRANSPONDER IDENT:1",
"Bool");
419 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
420 .
error(u
"SimConnect error: MSFS transponder data definitions %1")
426 HRESULT CSimConnectDefinitions::initMSFS2024Transponder(
const HANDLE hSimConnect)
429 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataTransponderModeMSFS,
430 "TRANSPONDER STATE:1",
"Enum");
431 hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataTransponderModeMSFS,
432 "TRANSPONDER IDENT:1",
"Bool");
435 CLogMessage(
static_cast<CSimConnectDefinitions *
>(
nullptr))
436 .
error(u
"SimConnect error: MSFS2024 transponder data definitions %1")
442 DataDefinitionRemoteAircraftPartsWithoutLights::DataDefinitionRemoteAircraftPartsWithoutLights()
444 this->resetToInvalid();
447 DataDefinitionRemoteAircraftPartsWithoutLights::DataDefinitionRemoteAircraftPartsWithoutLights(
450 this->initFromParts(parts);
453 bool DataDefinitionRemoteAircraftPartsWithoutLights::operator==(
456 return std::tie(flapsLeadingEdgeLeftPercent, flapsLeadingEdgeRightPercent, flapsTrailingEdgeLeftPercent,
457 flapsTrailingEdgeRightPercent, gearHandlePosition, spoilersHandlePosition, engine1Combustion,
458 engine2Combustion, engine3Combustion, engine4Combustion) ==
465 void DataDefinitionRemoteAircraftPartsWithoutLights::setAllEngines(
bool on)
467 engine1Combustion = on ? 1 : 0;
468 engine2Combustion = on ? 1 : 0;
469 engine3Combustion = on ? 1 : 0;
470 engine4Combustion = on ? 1 : 0;
473 void DataDefinitionRemoteAircraftPartsWithoutLights::setEngine(
int number1based,
bool on)
475 double v = on ? 1.0 : 0.0;
476 switch (number1based)
478 case 1: engine1Combustion = v;
break;
479 case 2: engine2Combustion = v;
break;
480 case 3: engine3Combustion = v;
break;
481 case 4: engine4Combustion = v;
break;
486 void DataDefinitionRemoteAircraftPartsWithoutLights::resetAllFlaps()
488 flapsLeadingEdgeLeftPercent = 0.0;
489 flapsLeadingEdgeRightPercent = 0.0;
490 flapsTrailingEdgeLeftPercent = 0.0;
491 flapsTrailingEdgeRightPercent = 0.0;
494 void DataDefinitionRemoteAircraftPartsWithoutLights::resetSpoilers() { spoilersHandlePosition = 0.0; }
496 void DataDefinitionRemoteAircraftPartsWithoutLights::resetToInvalid()
498 flapsLeadingEdgeLeftPercent = -1;
499 flapsLeadingEdgeRightPercent = -1;
500 flapsTrailingEdgeLeftPercent = -1;
501 flapsTrailingEdgeRightPercent = -1;
502 gearHandlePosition = -1;
503 spoilersHandlePosition = -1;
504 engine1Combustion = -1;
505 engine2Combustion = -1;
506 engine3Combustion = -1;
507 engine4Combustion = -1;
510 void DataDefinitionRemoteAircraftPartsWithoutLights::initFromParts(
const CAircraftParts &parts)
514 const double lead = trail;
515 flapsTrailingEdgeLeftPercent = trail;
516 flapsTrailingEdgeRightPercent = trail;
517 flapsLeadingEdgeLeftPercent = lead;
518 flapsLeadingEdgeRightPercent = lead;
520 this->setAllEngines(
false);
529 dtb(lightLogo),
dtb(lightRecognition),
dtb(lightCabin));
532 QString DataDefinitionClientAreaSb::toQString()
const
534 return u
"0 (running): " % QString::number(data[0]) % u
" 1 (connected): " % QString::number(data[1]) %
535 u
" 17 (standby): " % QString::number(data[17]) % u
" 19 (ident): " % QString::number(data[19]);
Class for emitting a log message.
Derived & error(const char16_t(&format)[N])
Set the severity to error, providing a format string.
Value object encapsulating information about aircraft's engines.
Value object encapsulating information about aircraft's lights.
Value object encapsulating information of aircraft's parts.
bool isSpoilersOut() const
Are spoilers out?
bool isFixedGearDown() const
Is fixed gear down?
int getFlapsPercent() const
Get flaps position in percent.
CAircraftEngineList getEngines() const
Get engines.
Simple hardcoded info about the corresponding simulator.
bool isMSFS2024() const
MSFS2024?
Handles SimConnect data definitions.
SimObjectRequest
SimObject requests used for AI aircraft and probes.
Request
SimConnect request IDs.
Free functions in swift::misc.
T::const_iterator end(const LockFreeReader< T > &reader)
Non-member begin() and end() for so LockFree containers can be used in ranged for loops.
unsigned long DWORD
Fake Windows DWORD.
HRESULT s_ok()
Correctly casted values/checks.
bool isFailure(HRESULT result)
Correctly casted values/checks.
bool dtb(double doubleBool)
Correctly casted values/checks.
Data struct of remote aircraft parts.
double engine2Combustion
Engine 2 combustion flag.
double engine1Combustion
Engine 1 combustion flag.
double flapsLeadingEdgeLeftPercent
Leading edge left in percent 0..1.
double flapsLeadingEdgeRightPercent
Leading edge right in percent 0..1.
double flapsTrailingEdgeLeftPercent
Trailing edge left in percent 0..1.
double engine3Combustion
Engine 3 combustion flag.
double gearHandlePosition
Gear handle position.
double spoilersHandlePosition
Spoilers out?
double engine4Combustion
Engine 4 combustion flag.
double flapsTrailingEdgeRightPercent
Trailing edge right in percent 0..1.