125 lines
2.9 KiB
C++
125 lines
2.9 KiB
C++
#ifndef GERMANAIRLINESVA_GACONNECTOR_ESP_SIMCONNECT_H
|
|
#define GERMANAIRLINESVA_GACONNECTOR_ESP_SIMCONNECT_H
|
|
|
|
#include <cmath>
|
|
#include <functional>
|
|
#include <string>
|
|
|
|
#include "websocket.h"
|
|
|
|
#include <windows.h>
|
|
|
|
#include "SimConnect.h"
|
|
|
|
#include "config/config.hpp"
|
|
#include "constants.h"
|
|
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
|
|
struct data {
|
|
double parkingBrake; // BRAKE PARKING INDICATOR
|
|
double onGround; // SIM ON GROUND
|
|
|
|
double emptyWeight; // EMPTY WEIGHT
|
|
double currentWeight; // TOTAL WEIGHT
|
|
|
|
double fuel; // FUEL TOTAL QUANTITY WEIGHT
|
|
|
|
double headingTrue; // PLANE HEADING DEGREES TRUE
|
|
double headingMagnetic; // PLANE HEADING DEGREES Magnetic
|
|
|
|
double groundSpeed; // GROUND VELOCITY
|
|
double indicatedAirspeed; // AIRSPEED INDICATED
|
|
double barberPoleSpeed; // AIRSPEED BARBER POLE
|
|
|
|
double verticalVelocity; // VELOCITY WORLD Y
|
|
double verticalSpeed; // VERTICAL SPEED
|
|
double altitude; // PLANE ALTITUDE
|
|
double altitudeAGL; // PLANE ALT ABOVE GROUND
|
|
|
|
double latitude; // PLANE LATITUDE
|
|
double longitude; // PLANE LONGITUDE
|
|
|
|
double elapsedTime; // ABSOLUTE TIME
|
|
|
|
double fuelFlowEng1; // ENG FUEL FLOW PPH:1
|
|
double fuelFlowEng2; // ENG FUEL FLOW PPH:2
|
|
double fuelFlowEng3; // ENG FUEL FLOW PPH:3
|
|
double fuelFlowEng4; // ENG FUEL FLOW PPH:4
|
|
|
|
int brakePos;
|
|
int brakeParkPos;
|
|
int brakeLeftPos;
|
|
|
|
double timeZulu; // ZULU TIME IN SECONDS
|
|
|
|
double gForce; // G FORCE IN G
|
|
};
|
|
|
|
struct Port {
|
|
double headingTrue; // PLANE HEADING DEGREES TRUE
|
|
double latitude; // PLANE LATITUDE
|
|
double longitude; // PLANE LONGITUDE
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
enum DEFINITIONS {
|
|
D_DATA,
|
|
D_PORT,
|
|
};
|
|
|
|
enum REQUESTS {
|
|
R_DATA,
|
|
R_ACFT,
|
|
R_DIALOG,
|
|
R_PORT,
|
|
};
|
|
|
|
enum EVENTS {
|
|
E_PAUSE,
|
|
E_STATUS,
|
|
E_TEXT,
|
|
E_TIMEMIN,
|
|
E_TIMEHRS,
|
|
E_TIMESEC,
|
|
};
|
|
|
|
enum GROUPS {
|
|
G_TIME,
|
|
};
|
|
|
|
class SimConnect
|
|
{
|
|
private:
|
|
HANDLE simConnect;
|
|
bool connectedToSim;
|
|
char version;
|
|
std::string aircraftPath;
|
|
bool pausedMenu;
|
|
bool paused;
|
|
std::mutex mutex;
|
|
struct germanairlinesva::gaconnector::websocket::data simData;
|
|
std::shared_ptr<germanairlinesva::file::config::Config> configuration;
|
|
std::function<void(const std::string)> toLog;
|
|
|
|
void handleOpen(SIMCONNECT_RECV_OPEN *data);
|
|
void handleSystemEvent(SIMCONNECT_RECV_SYSTEM_STATE *state);
|
|
void handleEvent(SIMCONNECT_RECV_EVENT *event);
|
|
void handleData(SIMCONNECT_RECV_SIMOBJECT_DATA *data);
|
|
|
|
public:
|
|
SimConnect(
|
|
HWND hWnd,
|
|
std::function<void(const std::string)> toLog,
|
|
std::shared_ptr<germanairlinesva::file::config::Config> &configuration);
|
|
~SimConnect();
|
|
bool isConnected() const;
|
|
const std::string getVersion() const;
|
|
void getData(struct germanairlinesva::gaconnector::websocket::data *data);
|
|
void getStates() const;
|
|
void handleMessage();
|
|
};
|
|
|
|
#endif |