swift
simconnectutilities.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_SIMULATION_FSX_SIMCONNECTUTILITIES_H
7 #define SWIFT_MISC_SIMULATION_FSX_SIMCONNECTUTILITIES_H
8 
9 #include <QMetaType>
10 #include <QObject>
11 #include <QSettings>
12 #include <QString>
13 
16 #include "misc/swiftmiscexport.h"
17 #include "misc/windllutils.h"
18 
19 // Apart from the below definitions, the following code is OS independent,
20 // though it does not make sense to be used on non WIN machines.
21 // But it allows such parts to compile on all platforms.
22 #ifdef Q_OS_WIN
23 # ifndef NOMINMAX
24 # define NOMINMAX
25 # endif
26 # include <Windows.h>
27 #else
28 using DWORD = unsigned long;
29 #endif
30 
31 namespace swift::misc::simulation::fsx
32 {
35  class SWIFT_MISC_EXPORT CSimConnectUtilities : public QObject
36  {
37  Q_OBJECT
38 
39  public:
43  static QString simConnectExceptionToString(const DWORD id);
44 
48  static QString simConnectSurfaceTypeToString(const DWORD type, bool beautify = true);
49 
53  {
54  Concrete,
55  Grass,
56  Water,
57  Grass_bumpy,
58  Asphalt,
59  Short_grass,
60  Long_grass,
61  Hard_turf,
62  Snow,
63  Ice,
64  Urban,
65  Forest,
66  Dirt,
67  Coral,
68  Gravel,
69  Oil_treated,
70  Steel_mats,
71  Bituminus,
72  Brick,
73  Macadam,
74  Planks,
75  Sand,
76  Shale,
77  Tarmac,
78  Wright_flyer_track
79  };
80  Q_ENUM(SIMCONNECT_SURFACE)
81 
82 
84  {
85  SIMCONNECT_EXCEPTION_NONE,
86  SIMCONNECT_EXCEPTION_ERROR,
87  SIMCONNECT_EXCEPTION_SIZE_MISMATCH,
88  SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID,
89  SIMCONNECT_EXCEPTION_UNOPENED,
90  SIMCONNECT_EXCEPTION_VERSION_MISMATCH,
91  SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS,
92  SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED,
93  SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES,
94  SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE,
95  SIMCONNECT_EXCEPTION_TOO_MANY_MAPS,
96  SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS,
97  SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS,
98  SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT,
99  SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR,
100  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION,
101  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION,
102  SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION,
103  SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE,
104  SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE,
105  SIMCONNECT_EXCEPTION_DATA_ERROR,
106  SIMCONNECT_EXCEPTION_INVALID_ARRAY,
107  SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED,
108  SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED,
109  SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OBJECT_TYPE,
110  SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION,
111  SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED,
112  SIMCONNECT_EXCEPTION_INVALID_ENUM,
113  SIMCONNECT_EXCEPTION_DEFINITION_ERROR,
114  SIMCONNECT_EXCEPTION_DUPLICATE_ID,
115  SIMCONNECT_EXCEPTION_DATUM_ID,
116  SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS,
117  SIMCONNECT_EXCEPTION_ALREADY_CREATED,
118  SIMCONNECT_EXCEPTION_OBJECT_OUTSIDE_REALITY_BUBBLE,
119  SIMCONNECT_EXCEPTION_OBJECT_CONTAINER,
120  SIMCONNECT_EXCEPTION_OBJECT_AI,
121  SIMCONNECT_EXCEPTION_OBJECT_ATC,
122  SIMCONNECT_EXCEPTION_OBJECT_SCHEDULE
123  };
124  Q_ENUM(SIMCONNECT_EXCEPTION)
125 
126 
129  {
130  Nav = 0x0001,
131  Beacon = 0x0002,
132  Landing = 0x0004,
133  Taxi = 0x0008,
134  Strobe = 0x0010,
135  Panel = 0x0020,
136  Recognition = 0x0040,
137  Wing = 0x0080,
138  Logo = 0x0100,
139  Cabin = 0x0200
140  };
141 
144  {
145  SIMCONNECT_RECV_ID_NULL,
146  SIMCONNECT_RECV_ID_EXCEPTION,
147  SIMCONNECT_RECV_ID_OPEN,
148  SIMCONNECT_RECV_ID_QUIT,
149  SIMCONNECT_RECV_ID_EVENT,
150  SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE,
151  SIMCONNECT_RECV_ID_EVENT_FILENAME,
152  SIMCONNECT_RECV_ID_EVENT_FRAME,
153  SIMCONNECT_RECV_ID_SIMOBJECT_DATA,
154  SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE,
155  SIMCONNECT_RECV_ID_WEATHER_OBSERVATION,
156  SIMCONNECT_RECV_ID_CLOUD_STATE,
157  SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID,
158  SIMCONNECT_RECV_ID_RESERVED_KEY,
159  SIMCONNECT_RECV_ID_CUSTOM_ACTION,
160  SIMCONNECT_RECV_ID_SYSTEM_STATE,
161  SIMCONNECT_RECV_ID_CLIENT_DATA,
162  SIMCONNECT_RECV_ID_EVENT_WEATHER_MODE,
163  SIMCONNECT_RECV_ID_AIRPORT_LIST,
164  SIMCONNECT_RECV_ID_VOR_LIST,
165  SIMCONNECT_RECV_ID_NDB_LIST,
166  SIMCONNECT_RECV_ID_WAYPOINT_LIST,
167  SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED,
168  SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED,
169  SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED,
170  SIMCONNECT_RECV_ID_EVENT_RACE_END,
171  SIMCONNECT_RECV_ID_EVENT_RACE_LAP,
172  };
173  Q_ENUM(SIMCONNECT_RECV_ID)
174 
175 
176  static QString simConnectReceiveIdToString(DWORD type);
177 
179  static int lightsToLightStates(const aviation::CAircraftLights &lights);
180 
182  static swift::misc::CWinDllUtils::DLLInfo simConnectDllInfo();
183 
185  static void registerMetadata();
186 
187  private:
193  static QString resolveEnumToString(const DWORD id, const char *enumName);
194 
197  };
198 } // namespace swift::misc::simulation::fsx
199 
203 
204 #endif // SWIFT_MISC_SIMULATION_FSX_SIMCONNECTUTILITIES_H
Value object encapsulating information about aircraft's lights.
LIGHT_STATES
Lights for FSX/P3D "LIGHT ON STATES".
void registerMetadata()
Register all relevant metadata in Misc.
unsigned long DWORD
Fake Windows DWORD.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.