* Minor improvements to the handling of landing gear by the SetGear and HandlePOSI functions * sendPOSI command change (double for lat/lon/h) (#111) * Updated POSI to use doubles for lat/lon/alt, as step size for floats was unacceptably large at high longitudes. * Updated Java library for MATLAB, updated Java project, and updated Windows plugin binaries * Rolled back Java version to 1.7 for MATLAB compatibility * Update MessageHandlers.cpp * Update DataManager.cpp * Added pause functionality for individual a/c Adds new cases such that: 0: Unpauses all a/c 1: Pauses all a/c 2: Switches case for all a/c 100:119: Pauses a/c 0:19 200:219: Unpauses a/c 0:19 Updates log messages. Keeps the 0,1,2 arguments as they previously were. * Finished individual pause functionality * Update DataManager.cpp * Updated flags to allow for individual pause commands * Individual pause command documentation * Updated flags to allow for individual pause commands * Adding individual pause to documentation * Updated flags to allow for individual pause commands * Requested changes, cleaning * Update CMakeLists.txt Include "-fno-stack-protector" for linking and compiling for systems that do not have this have this flag as a default. * Enabling AI after setting position (#118) Previously, the code enabled the AI before setting the position of a/c, which negated its purpose. * Updated XPlane SDK to version 2.1.3 * Resolve function ambiguity for std::abs on mac Fixes #126 * Update copyright notice * Update Windows binaries * Update Linux binaries * Update version numbers * fix osx abs ambiguity (#142) * fix indexing error (#143) * Runway camera location control (#144) * update ignore * basics working * set cam pos remotely * log cam position * keep default behaviour, if short view message is received Compatibility with existing software * all to tabs * rename variable * option to use camera direction fields * Added UDP multicast for plugin discovery (#153) * Added Timer * Added UDPSocket::GetAddr * Added MessageHandlers::SendBeacon() * PoC of starting a timer on PluginEnable * C++11 * Added Timer to xcode project * C++11 in cmake * added Timer to cmake * use function pointer in Timer * moved Timer to namespace + wait for thread to join when stopping the timer * Windows: changed uint to unisgned short * Windows: Added Timer.h/cpp to project * GetAddr static * Send xplane and plugin version with BECN * SendBeacon with params * fixed file copyrights * Include functional to fix Linux compile error * review fixes * Send plugin receive port in BECN * review fixes * Fixed tabs vs spaces indentations (#157) * Java client BECN implementation (#155) * Added MS Azure Dev Ops CI integration (#162) * Do not build for i386 on macOS Use ARCHS_STANDARD to avoid the error “The i386 architecture is deprecated. You should update your ARCHS build setting to remove the i386 architecture.” * Fixed missing include The Visual Studio solution was not compiling * Fixed isnan ambigious refernce Ambigious reference when compiling on travis https://stackoverflow.com/questions/33770374/why-is-isnan-ambiguous-and-how-to-avoid-it * Set MSVC warning level to 3 Too many warnings were generated when building a Release build making Travis job to fail because of too much output * Use default toolset for Visual Studio AppVeyor recommends to set the default toolset * #include <cstdint> * Use MSVC ToolsVersion="14.0" # Conflicts: # xpcPlugin/xpcPlugin/xpcPlugin.vcxproj * Removed binaries from repository # Conflicts: # xpcPlugin/XPlaneConnect/64/win.xpl # xpcPlugin/XPlaneConnect/win.xpl * Added ms azure ci xcode linux linux + macos linux + macos removed branch filter win tests win tests Test all platfroms artifacts tests * output all binaries to ‘XPlaneConnect’ All platforms produce a binary in xpcPlugin/XPlaneConnect/ xpcPlugin/XPlaneConnect/64/ * Added ms azure GH deploy deploy stage GH release test trigger tags * Clean up yml file - Added variables - Added job decriptions * Ignore script to ignore .exp files + fixed output path * Renamed ms azure GH connection * Update service connection for azure pipeline * Added Python3 compatible xpc client. (#156) * Update Azure Pipelines service connection
519 lines
13 KiB
C
Executable File
519 lines
13 KiB
C
Executable File
#ifndef _XPLMDefs_h_
|
|
#define _XPLMDefs_h_
|
|
|
|
/*
|
|
* Copyright 2005-2012 Sandy Barbour and Ben Supnik
|
|
*
|
|
* All rights reserved. See license.txt for usage.
|
|
*
|
|
* X-Plane SDK Version: 2.1.1
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* This file is contains the cross-platform and basic definitions for the
|
|
* X-Plane SDK.
|
|
*
|
|
* The preprocessor macros APL and IBM must be defined to specify the
|
|
* compilation target; define APL to 1 and IBM 0 to compile on Macintosh and
|
|
* APL to 0 and IBM to 1 for Windows. You must specify these macro definitions
|
|
* before including XPLMDefs.h or any other XPLM headers. You can do this
|
|
* using the -D command line option or a preprocessor header.
|
|
*
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if IBM
|
|
#include <windows.h>
|
|
#else
|
|
#include <stdint.h>
|
|
#endif
|
|
/***************************************************************************
|
|
* DLL Definitions
|
|
***************************************************************************/
|
|
/*
|
|
* These definitions control the importing and exporting of functions within
|
|
* the DLL.
|
|
*
|
|
* You can prefix your five required callbacks with the PLUGIN_API macro to
|
|
* declare them as exported C functions. The XPLM_API macro identifies
|
|
* functions that are provided to you via the plugin SDK. (Link against
|
|
* XPLM.lib to use these functions.)
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#if APL
|
|
#if __GNUC__ >= 4
|
|
#define PLUGIN_API extern "C" __attribute__((visibility("default")))
|
|
#elif __MACH__
|
|
#define PLUGIN_API extern "C"
|
|
#else
|
|
#define PLUGIN_API extern "C" __declspec(dllexport)
|
|
#endif
|
|
#elif IBM
|
|
#define PLUGIN_API extern "C" __declspec(dllexport)
|
|
#elif LIN
|
|
#if __GNUC__ >= 4
|
|
#define PLUGIN_API extern "C" __attribute__((visibility("default")))
|
|
#else
|
|
#define PLUGIN_API extern "C"
|
|
#endif
|
|
#else
|
|
#error "Platform not defined!"
|
|
#endif
|
|
#else
|
|
#if APL
|
|
#if __GNUC__ >= 4
|
|
#define PLUGIN_API __attribute__((visibility("default")))
|
|
#elif __MACH__
|
|
#define PLUGIN_API
|
|
#else
|
|
#define PLUGIN_API __declspec(dllexport)
|
|
#endif
|
|
#elif IBM
|
|
#define PLUGIN_API __declspec(dllexport)
|
|
#elif LIN
|
|
#if __GNUC__ >= 4
|
|
#define PLUGIN_API __attribute__((visibility("default")))
|
|
#else
|
|
#define PLUGIN_API
|
|
#endif
|
|
#else
|
|
#error "Platform not defined!"
|
|
#endif
|
|
#endif
|
|
|
|
#if APL
|
|
#if XPLM
|
|
#if __GNUC__ >= 4
|
|
#define XPLM_API __attribute__((visibility("default")))
|
|
#elif __MACH__
|
|
#define XPLM_API
|
|
#else
|
|
#define XPLM_API __declspec(dllexport)
|
|
#endif
|
|
#else
|
|
#define XPLM_API
|
|
#endif
|
|
#elif IBM
|
|
#if XPLM
|
|
#define XPLM_API __declspec(dllexport)
|
|
#else
|
|
#define XPLM_API __declspec(dllimport)
|
|
#endif
|
|
#elif LIN
|
|
#if XPLM
|
|
#if __GNUC__ >= 4
|
|
#define XPLM_API __attribute__((visibility("default")))
|
|
#else
|
|
#define XPLM_API
|
|
#endif
|
|
#else
|
|
#define XPLM_API
|
|
#endif
|
|
#else
|
|
#error "Platform not defined!"
|
|
#endif
|
|
|
|
/***************************************************************************
|
|
* GLOBAL DEFINITIONS
|
|
***************************************************************************/
|
|
/*
|
|
* These definitions are used in all parts of the SDK.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
* XPLMPluginID
|
|
*
|
|
* Each plug-in is identified by a unique integer ID. This ID can be used to
|
|
* disable or enable a plug-in, or discover what plug-in is 'running' at the
|
|
* time. A plug-in ID is unique within the currently running instance of
|
|
* X-Plane unless plug-ins are reloaded. Plug-ins may receive a different
|
|
* unique ID each time they are loaded.
|
|
*
|
|
* For persistent identification of plug-ins, use XPLMFindPluginBySignature in
|
|
* XPLMUtiltiies.h
|
|
*
|
|
* -1 indicates no plug-in.
|
|
*
|
|
*/
|
|
typedef int XPLMPluginID;
|
|
|
|
/* No plugin. */
|
|
#define XPLM_NO_PLUGIN_ID (-1)
|
|
|
|
/* X-Plane itself */
|
|
#define XPLM_PLUGIN_XPLANE (0)
|
|
|
|
/* The current XPLM revision is 2.10 (210). */
|
|
#define kXPLM_Version (210)
|
|
|
|
/*
|
|
* XPLMKeyFlags
|
|
*
|
|
* These bitfields define modifier keys in a platform independent way. When a
|
|
* key is pressed, a series of messages are sent to your plugin. The down
|
|
* flag is set in the first of these messages, and the up flag in the last.
|
|
* While the key is held down, messages are sent with neither to indicate that
|
|
* the key is being held down as a repeated character.
|
|
*
|
|
* The control flag is mapped to the control flag on Macintosh and PC.
|
|
* Generally X-Plane uses the control key and not the command key on
|
|
* Macintosh, providing a consistent interface across platforms that does not
|
|
* necessarily match the Macintosh user interface guidelines. There is not
|
|
* yet a way for plugins to access the Macintosh control keys without using
|
|
* #ifdefed code.
|
|
*
|
|
*/
|
|
enum {
|
|
/* The shift key is down */
|
|
xplm_ShiftFlag = 1
|
|
|
|
/* The option or alt key is down */
|
|
,xplm_OptionAltFlag = 2
|
|
|
|
/* The control key is down* */
|
|
,xplm_ControlFlag = 4
|
|
|
|
/* The key is being pressed down */
|
|
,xplm_DownFlag = 8
|
|
|
|
/* The key is being released */
|
|
,xplm_UpFlag = 16
|
|
|
|
|
|
};
|
|
typedef int XPLMKeyFlags;
|
|
|
|
/***************************************************************************
|
|
* ASCII CONTROL KEY CODES
|
|
***************************************************************************/
|
|
/*
|
|
* These definitions define how various control keys are mapped to ASCII key
|
|
* codes. Not all key presses generate an ASCII value, so plugin code should
|
|
* be prepared to see null characters come from the keyboard...this usually
|
|
* represents a key stroke that has no equivalent ASCII, like a page-down
|
|
* press. Use virtual key codes to find these key strokes. ASCII key codes
|
|
* take into account modifier keys; shift keys will affect capitals and
|
|
* punctuation; control key combinations may have no vaild ASCII and produce
|
|
* NULL. To detect control-key combinations, use virtual key codes, not ASCII
|
|
* keys.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
#define XPLM_KEY_RETURN 13
|
|
|
|
#define XPLM_KEY_ESCAPE 27
|
|
|
|
#define XPLM_KEY_TAB 9
|
|
|
|
#define XPLM_KEY_DELETE 8
|
|
|
|
#define XPLM_KEY_LEFT 28
|
|
|
|
#define XPLM_KEY_RIGHT 29
|
|
|
|
#define XPLM_KEY_UP 30
|
|
|
|
#define XPLM_KEY_DOWN 31
|
|
|
|
#define XPLM_KEY_0 48
|
|
|
|
#define XPLM_KEY_1 49
|
|
|
|
#define XPLM_KEY_2 50
|
|
|
|
#define XPLM_KEY_3 51
|
|
|
|
#define XPLM_KEY_4 52
|
|
|
|
#define XPLM_KEY_5 53
|
|
|
|
#define XPLM_KEY_6 54
|
|
|
|
#define XPLM_KEY_7 55
|
|
|
|
#define XPLM_KEY_8 56
|
|
|
|
#define XPLM_KEY_9 57
|
|
|
|
#define XPLM_KEY_DECIMAL 46
|
|
|
|
/***************************************************************************
|
|
* VIRTUAL KEY CODES
|
|
***************************************************************************/
|
|
/*
|
|
* These are cross-platform defines for every distinct keyboard press on the
|
|
* computer. Every physical key on the keyboard has a virtual key code. So
|
|
* the "two" key on the top row of the main keyboard has a different code
|
|
* from the "two" key on the numeric key pad. But the 'w' and 'W' character
|
|
* are indistinguishable by virtual key code because they are the same
|
|
* physical key (one with and one without the shift key).
|
|
*
|
|
* Use virtual key codes to detect keystrokes that do not have ASCII
|
|
* equivalents, allow the user to map the numeric keypad separately from the
|
|
* main keyboard, and detect control key and other modifier-key combinations
|
|
* that generate ASCII control key sequences (many of which are not available
|
|
* directly via character keys in the SDK).
|
|
*
|
|
* To assign virtual key codes we started with the Microsoft set but made some
|
|
* additions and changes. A few differences:
|
|
*
|
|
* 1. Modifier keys are not available as virtual key codes. You cannot get
|
|
* distinct modifier press and release messages. Please do not try to use
|
|
* modifier keys as regular keys; doing so will almost certainly interfere
|
|
* with users' abilities to use the native x-plane key bindings.
|
|
*
|
|
* 2. Some keys that do not exist on both Mac and PC keyboards are removed.
|
|
*
|
|
* 3. Do not assume that the values of these keystrokes are interchangeable
|
|
* with MS v-keys.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
#define XPLM_VK_BACK 0x08
|
|
|
|
#define XPLM_VK_TAB 0x09
|
|
|
|
#define XPLM_VK_CLEAR 0x0C
|
|
|
|
#define XPLM_VK_RETURN 0x0D
|
|
|
|
#define XPLM_VK_ESCAPE 0x1B
|
|
|
|
#define XPLM_VK_SPACE 0x20
|
|
|
|
#define XPLM_VK_PRIOR 0x21
|
|
|
|
#define XPLM_VK_NEXT 0x22
|
|
|
|
#define XPLM_VK_END 0x23
|
|
|
|
#define XPLM_VK_HOME 0x24
|
|
|
|
#define XPLM_VK_LEFT 0x25
|
|
|
|
#define XPLM_VK_UP 0x26
|
|
|
|
#define XPLM_VK_RIGHT 0x27
|
|
|
|
#define XPLM_VK_DOWN 0x28
|
|
|
|
#define XPLM_VK_SELECT 0x29
|
|
|
|
#define XPLM_VK_PRINT 0x2A
|
|
|
|
#define XPLM_VK_EXECUTE 0x2B
|
|
|
|
#define XPLM_VK_SNAPSHOT 0x2C
|
|
|
|
#define XPLM_VK_INSERT 0x2D
|
|
|
|
#define XPLM_VK_DELETE 0x2E
|
|
|
|
#define XPLM_VK_HELP 0x2F
|
|
|
|
/* XPLM_VK_0 thru XPLM_VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
|
|
#define XPLM_VK_0 0x30
|
|
|
|
#define XPLM_VK_1 0x31
|
|
|
|
#define XPLM_VK_2 0x32
|
|
|
|
#define XPLM_VK_3 0x33
|
|
|
|
#define XPLM_VK_4 0x34
|
|
|
|
#define XPLM_VK_5 0x35
|
|
|
|
#define XPLM_VK_6 0x36
|
|
|
|
#define XPLM_VK_7 0x37
|
|
|
|
#define XPLM_VK_8 0x38
|
|
|
|
#define XPLM_VK_9 0x39
|
|
|
|
/* XPLM_VK_A thru XPLM_VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
|
|
#define XPLM_VK_A 0x41
|
|
|
|
#define XPLM_VK_B 0x42
|
|
|
|
#define XPLM_VK_C 0x43
|
|
|
|
#define XPLM_VK_D 0x44
|
|
|
|
#define XPLM_VK_E 0x45
|
|
|
|
#define XPLM_VK_F 0x46
|
|
|
|
#define XPLM_VK_G 0x47
|
|
|
|
#define XPLM_VK_H 0x48
|
|
|
|
#define XPLM_VK_I 0x49
|
|
|
|
#define XPLM_VK_J 0x4A
|
|
|
|
#define XPLM_VK_K 0x4B
|
|
|
|
#define XPLM_VK_L 0x4C
|
|
|
|
#define XPLM_VK_M 0x4D
|
|
|
|
#define XPLM_VK_N 0x4E
|
|
|
|
#define XPLM_VK_O 0x4F
|
|
|
|
#define XPLM_VK_P 0x50
|
|
|
|
#define XPLM_VK_Q 0x51
|
|
|
|
#define XPLM_VK_R 0x52
|
|
|
|
#define XPLM_VK_S 0x53
|
|
|
|
#define XPLM_VK_T 0x54
|
|
|
|
#define XPLM_VK_U 0x55
|
|
|
|
#define XPLM_VK_V 0x56
|
|
|
|
#define XPLM_VK_W 0x57
|
|
|
|
#define XPLM_VK_X 0x58
|
|
|
|
#define XPLM_VK_Y 0x59
|
|
|
|
#define XPLM_VK_Z 0x5A
|
|
|
|
#define XPLM_VK_NUMPAD0 0x60
|
|
|
|
#define XPLM_VK_NUMPAD1 0x61
|
|
|
|
#define XPLM_VK_NUMPAD2 0x62
|
|
|
|
#define XPLM_VK_NUMPAD3 0x63
|
|
|
|
#define XPLM_VK_NUMPAD4 0x64
|
|
|
|
#define XPLM_VK_NUMPAD5 0x65
|
|
|
|
#define XPLM_VK_NUMPAD6 0x66
|
|
|
|
#define XPLM_VK_NUMPAD7 0x67
|
|
|
|
#define XPLM_VK_NUMPAD8 0x68
|
|
|
|
#define XPLM_VK_NUMPAD9 0x69
|
|
|
|
#define XPLM_VK_MULTIPLY 0x6A
|
|
|
|
#define XPLM_VK_ADD 0x6B
|
|
|
|
#define XPLM_VK_SEPARATOR 0x6C
|
|
|
|
#define XPLM_VK_SUBTRACT 0x6D
|
|
|
|
#define XPLM_VK_DECIMAL 0x6E
|
|
|
|
#define XPLM_VK_DIVIDE 0x6F
|
|
|
|
#define XPLM_VK_F1 0x70
|
|
|
|
#define XPLM_VK_F2 0x71
|
|
|
|
#define XPLM_VK_F3 0x72
|
|
|
|
#define XPLM_VK_F4 0x73
|
|
|
|
#define XPLM_VK_F5 0x74
|
|
|
|
#define XPLM_VK_F6 0x75
|
|
|
|
#define XPLM_VK_F7 0x76
|
|
|
|
#define XPLM_VK_F8 0x77
|
|
|
|
#define XPLM_VK_F9 0x78
|
|
|
|
#define XPLM_VK_F10 0x79
|
|
|
|
#define XPLM_VK_F11 0x7A
|
|
|
|
#define XPLM_VK_F12 0x7B
|
|
|
|
#define XPLM_VK_F13 0x7C
|
|
|
|
#define XPLM_VK_F14 0x7D
|
|
|
|
#define XPLM_VK_F15 0x7E
|
|
|
|
#define XPLM_VK_F16 0x7F
|
|
|
|
#define XPLM_VK_F17 0x80
|
|
|
|
#define XPLM_VK_F18 0x81
|
|
|
|
#define XPLM_VK_F19 0x82
|
|
|
|
#define XPLM_VK_F20 0x83
|
|
|
|
#define XPLM_VK_F21 0x84
|
|
|
|
#define XPLM_VK_F22 0x85
|
|
|
|
#define XPLM_VK_F23 0x86
|
|
|
|
#define XPLM_VK_F24 0x87
|
|
|
|
/* The following definitions are extended and are not based on the Microsoft *
|
|
* key set. */
|
|
#define XPLM_VK_EQUAL 0xB0
|
|
|
|
#define XPLM_VK_MINUS 0xB1
|
|
|
|
#define XPLM_VK_RBRACE 0xB2
|
|
|
|
#define XPLM_VK_LBRACE 0xB3
|
|
|
|
#define XPLM_VK_QUOTE 0xB4
|
|
|
|
#define XPLM_VK_SEMICOLON 0xB5
|
|
|
|
#define XPLM_VK_BACKSLASH 0xB6
|
|
|
|
#define XPLM_VK_COMMA 0xB7
|
|
|
|
#define XPLM_VK_SLASH 0xB8
|
|
|
|
#define XPLM_VK_PERIOD 0xB9
|
|
|
|
#define XPLM_VK_BACKQUOTE 0xBA
|
|
|
|
#define XPLM_VK_ENTER 0xBB
|
|
|
|
#define XPLM_VK_NUMPAD_ENT 0xBC
|
|
|
|
#define XPLM_VK_NUMPAD_EQ 0xBD
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|