#ifndef GERMANAIRLINESVA_GACONNECTOR_SOCKET_TYPES_H
#define GERMANAIRLINESVA_GACONNECTOR_SOCKET_TYPES_H

#include <cstdint>

#pragma pack(push) /* push current alignment to stack */
#pragma pack(1)    /* set alignment to 1 byte boundary */
namespace germanairlinesva_websocket
{
  /* Structures and enums */
  typedef struct data {
      std::int32_t pause = 0;
      float pBrake = 0;
      std::int32_t onGrnd = 0;
      float totFuelKg = 0;
      float truHdg = 0;
      double alt = 0;
      float gs = 0;
      float ias = 0;
      float vs = 0;
      double lat = 0;
      double lon = 0;
      float ff[8] = {0, 0, 0, 0, 0, 0, 0, 0};
      float maxSpd = 0;
      char path[513] = "";
      float uptime = 0;
      float magHeading = 0;
      float payloadKg = 0;
      float totalWeightKg = 0;
  } data;

  typedef enum commands {
    PROCESS,
    SAVE,
    LOAD,
    TEXT,
    TIME,
    UNPAUSE,
    PAUSE,
    PORT,
    END
  } commands;

  typedef struct command_base {
      commands type;
  } command_base;


  typedef struct command_port {
      double latitude;
      double longitude;
      float trueHeading;
  } command_port;

#pragma pack(pop) /* restore original alignment from stack */
} // namespace germanairlinesva_websocket

#endif
