Files
Jason Watkins a3be4cb1b6 Version 1.3-rc.1 (#138)
* 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
2019-07-20 08:43:51 -07:00

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