Merge pull request #24 from edowson/user/edowson

CMake Files Added and xpcExample moved into src sub-folder
This commit is contained in:
Christopher Teubert
2015-01-15 09:50:13 -08:00
10 changed files with 82 additions and 40 deletions

2
.gitignore vendored
View File

@@ -38,3 +38,5 @@ xpcPlugin/build/xpcPlugin.build/Debug/xpcPlugin.build/Objects-normal/x86_64/XPCP
xpcPlugin/build/xpcPlugin.build/Debug/xpcPlugin.build/Objects-normal/x86_64/xplaneConnect.o xpcPlugin/build/xpcPlugin.build/Debug/xpcPlugin.build/Objects-normal/x86_64/xplaneConnect.o
xpcPlugin/xpcPlugin.xcodeproj/project.xcworkspace/xcuserdata/cteubert.xcuserdatad/UserInterfaceState.xcuserstate xpcPlugin/xpcPlugin.xcodeproj/project.xcworkspace/xcuserdata/cteubert.xcuserdatad/UserInterfaceState.xcuserstate
build/

5
C/CMakeLists.txt Normal file
View File

@@ -0,0 +1,5 @@
cmake_minimum_required(VERSION 2.8.4)
project(xplaneconnectlib)
add_subdirectory(src)

View File

@@ -1,31 +1,31 @@
X-Plane Connect-C (XPC-C) Readme X-Plane Connect-C (XPC-C) Readme
DESCRIPTION DESCRIPTION
XPC-C is a series of C functions that facilitate communication with X-Plane. XPC-C is a series of C functions that facilitate communication with X-Plane.
----------------------------------- -----------------------------------
SETUP SETUP
Before using XPC Functions you must Before using XPC Functions you must
1. Copy the file XPCPlugin.xpl to the "[X-Plane Directory]/Resources/plugins" directory. 1. Copy the file XPCPlugin.xpl to the "[X-Plane Directory]/Resources/plugins" directory.
2. Put in X-Plane CD 1 or X-Plane USB Key. 2. Put in X-Plane CD 1 or X-Plane USB Key.
3. Start X-Plane. 3. Start X-Plane.
4. #include "xplaneConnect.h" 4. #include "xplaneConnect.h"
----------------------------------- -----------------------------------
BASIC FUNCTIONS BASIC FUNCTIONS
1. openUDP opens a UDP Socket for communication. This is used to send data or receive. 1. openUDP opens a UDP Socket for communication. This is used to send data or receive.
INPUT: INPUT:
port (unsigned short): Port Number (ex:49067) port (unsigned short): Port Number (ex:49067)
xpIP (char *): IP Address of the computer running x-plane xpIP (char *): IP Address of the computer running x-plane
xpPort (unsigned short): Port number that the X-Plane/ xpcPlugin Receives on (send -1 for default (49009), Typically xpcPlugin is 49009) xpPort (unsigned short): Port number that the X-Plane/ xpcPlugin Receives on (send -1 for default (49009), Typically xpcPlugin is 49009)
OUTPUT: OUTPUT:
socket (xpcSocket): The Opened Socket socket (xpcSocket): The Opened Socket
USE: USE:
unsigned short portNumber = 49067; unsigned short portNumber = 49067;
struct xpcSocket theSocket = openUDP(portNumber, “127.0.0.1”, 49009); struct xpcSocket theSocket = openUDP(portNumber, “127.0.0.1”, 49009);
2. closeUDP closes an opened UDP Socket for communication. This is to be done after the program has finished using that socket. Use opedUDP to open socket. 2. closeUDP closes an opened UDP Socket for communication. This is to be done after the program has finished using that socket. Use opedUDP to open socket.
INPUT: INPUT:
socket (xpcSocket): The Opened Socket socket (xpcSocket): The Opened Socket
@@ -37,10 +37,10 @@ BASIC FUNCTIONS
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
recPort (unsigned Short): Port number for requested dataref values to be sent to recPort (unsigned Short): Port number for requested dataref values to be sent to
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
USE: USE:
char IP[16] = "127.0.0.1"; char IP[16] = "127.0.0.1";
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
@@ -50,7 +50,7 @@ BASIC FUNCTIONS
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
pause (short): 1=Pause, 0=Resume pause (short): 1=Pause, 0=Resume
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
@@ -58,22 +58,22 @@ BASIC FUNCTIONS
char IP[16] = "127.0.0.1"; char IP[16] = "127.0.0.1";
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
pauseSim(theSocket, IP, 49009, 1); pauseSim(theSocket, IP, 49009, 1);
5. sendDATA set the value of a state in the "DATA Input & Output" Table 5. sendDATA set the value of a state in the "DATA Input & Output" Table
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
dataArray (float[][9]): Array of data to be sent. The first element of each row is the item # (corresponding to the number on the X-Plane "DATA Input & Output" Screen). Send -999 to leave the value unchanged. dataArray (float[][9]): Array of data to be sent. The first element of each row is the item # (corresponding to the number on the X-Plane "DATA Input & Output" Screen). Send -999 to leave the value unchanged.
rows (unsigned short): Number of rows of data being sent rows (unsigned short): Number of rows of data being sent
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
USE: USE:
char IP[16] = "127.0.0.1"; char IP[16] = "127.0.0.1";
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
float data[] = {{14, 1, -999, -999, -999, -999, -999, -999, -999},{25, 0.8, 0.8, -999, -999, -999, -999, -999, -999}}; // Gear and Throttle float data[] = {{14, 1, -999, -999, -999, -999, -999, -999, -999},{25, 0.8, 0.8, -999, -999, -999, -999, -999, -999}}; // Gear and Throttle
sendDATA(theSocket,IP,49009,data,2); sendDATA(theSocket,IP,49009,data,2);
6. sendPOSI set the position of an aircraft 6. sendPOSI set the position of an aircraft
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
@@ -87,7 +87,7 @@ BASIC FUNCTIONS
position[4] = Pitch (deg) position[4] = Pitch (deg)
position[5] = True Heading (deg) position[5] = True Heading (deg)
position[6] = Gear (0=up, 1=down) position[6] = Gear (0=up, 1=down)
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
@@ -96,7 +96,7 @@ BASIC FUNCTIONS
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
float posit[] = {37.5242422, -122.06899, 2500, 0, 0, 0, 1}; float posit[] = {37.5242422, -122.06899, 2500, 0, 0, 0, 1};
sendPOSI(theSocket, IP, 49009, 7, posit); sendPOSI(theSocket, IP, 49009, 7, posit);
7. sendCTRL send control commands to the aircraft 7. sendCTRL send control commands to the aircraft
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
@@ -108,16 +108,16 @@ BASIC FUNCTIONS
control[3] = Throttle [-1, 1] control[3] = Throttle [-1, 1]
control[4] = Gear (0=up, 1=down) control[4] = Gear (0=up, 1=down)
control[5] = Flaps [0, 1] control[5] = Flaps [0, 1]
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
USE: USE:
char IP[16] = "127.0.0.1"; char IP[16] = "127.0.0.1";
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
float ctrl[] = {0, 0, 0, 0.8, 0, 1}; float ctrl[] = {0, 0, 0, 0.8, 0, 1};
sendCTRL(theSocket, IP, 49009, 6, ctrl); sendCTRL(theSocket, IP, 49009, 6, ctrl);
8. sendDREF set the value of a specific dataref. Dataref list found at http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html 8. sendDREF set the value of a specific dataref. Dataref list found at http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html
INPUT: INPUT:
socket (xpcSocket): Socket to use to send the command socket (xpcSocket): Socket to use to send the command
@@ -125,7 +125,7 @@ BASIC FUNCTIONS
length (short): length of dataref string length (short): length of dataref string
values (float *): Array of values to be sent values (float *): Array of values to be sent
length2 (short): Number of values in values array length2 (short): Number of values in values array
OUTPUT: OUTPUT:
status (short): 0 if successful status (short): 0 if successful
@@ -135,7 +135,7 @@ BASIC FUNCTIONS
char theDREF[] = "cockpit/switches/gear_handle_status"; char theDREF[] = "cockpit/switches/gear_handle_status";
float value = 1; float value = 1;
sendDREF(theSocket, IP, 49009, theDREF, strlen(theDREF), &value, 1); sendDREF(theSocket, IP, 49009, theDREF, strlen(theDREF), &value, 1);
9. requestDREF Request the value of specific dref(s). Dataref list found at http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html 9. requestDREF Request the value of specific dref(s). Dataref list found at http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html
INPUT: INPUT:
outSocket (xpcSocket): Socket to use to send the command outSocket (xpcSocket): Socket to use to send the command
@@ -145,7 +145,7 @@ BASIC FUNCTIONS
listLength (short): Number of DataRefs in DREFArray listLength (short): Number of DataRefs in DREFArray
result (*float[]): Array of pointers to the values returned result (*float[]): Array of pointers to the values returned
arrayLen (short[]): Array where each element corresponds to the number of elements in the float array. arrayLen (short[]): Array where each element corresponds to the number of elements in the float array.
OUTPUT: OUTPUT:
length (short): Number of Values Returned length (short): Number of Values Returned
@@ -154,7 +154,7 @@ BASIC FUNCTIONS
struct xpcSocket theSocket = openUDP(49067); struct xpcSocket theSocket = openUDP(49067);
char DREFArray[][100] = {"sim/cockpit/switches/gear_handle_status"}; char DREFArray[][100] = {"sim/cockpit/switches/gear_handle_status"};
requestDREF(theSocket, IP, 49009, DREFArray, strlen(DREFArray[0]),1); requestDREF(theSocket, IP, 49009, DREFArray, strlen(DREFArray[0]),1);
----------------------------------- -----------------------------------
ADVANCED FUNCTIONS (These are mostly used by the xpcPlugin to read requests) ADVANCED FUNCTIONS (These are mostly used by the xpcPlugin to read requests)
1. sendUDP 1. sendUDP

19
C/src/CMakeLists.txt Normal file
View File

@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 2.8.4)
set(LIBXPLANECONNECT_SRC xplaneConnect.c)
add_library(xplaneconnect_dynamic SHARED ${LIBXPLANECONNECT_SRC})
add_library(xplaneconnect_static STATIC ${LIBXPLANECONNECT_SRC})
set_target_properties(xplaneconnect_dynamic PROPERTIES OUTPUT_NAME "xplaneconnect")
set_target_properties(xplaneconnect_dynamic PROPERTIES VERSION 1.2 SOVERSION 1)
set_target_properties(xplaneconnect_static PROPERTIES OUTPUT_NAME "xplaneconnect")
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
install(TARGETS xplaneconnect_dynamic xplaneconnect_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(FILES xplaneConnect.h DESTINATION include/xplaneConnect)

View File

@@ -16,14 +16,14 @@
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
BE60308318E5F7A5004B5E1D /* CopyFiles */ = { BE60308318E5F7A5004B5E1D /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase; isa = PBXCopyFilesBuildPhase;
buildActionMask = 12; buildActionMask = 8;
dstPath = /Users/cteubert/Documents/flightdeckz/connections/src/xplaneconnect; dstPath = /Users/cteubert/Documents/flightdeckz/connections/src/xplaneconnect;
dstSubfolderSpec = 0; dstSubfolderSpec = 0;
files = ( files = (
BEDC620818EDF254005DB364 /* xplaneConnect.c in CopyFiles */, BEDC620818EDF254005DB364 /* xplaneConnect.c in CopyFiles */,
BEDC620918EDF257005DB364 /* xplaneConnect.h in CopyFiles */, BEDC620918EDF257005DB364 /* xplaneConnect.h in CopyFiles */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 1;
}; };
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
@@ -31,7 +31,7 @@
BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xplaneConnect.c; path = ../src/xplaneConnect.c; sourceTree = "<group>"; }; BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xplaneConnect.c; path = ../src/xplaneConnect.c; sourceTree = "<group>"; };
BEDC620018EDF0F5005DB364 /* xplaneConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xplaneConnect.h; path = ../src/xplaneConnect.h; sourceTree = "<group>"; }; BEDC620018EDF0F5005DB364 /* xplaneConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xplaneConnect.h; path = ../src/xplaneConnect.h; sourceTree = "<group>"; };
BEF9890B18E4E7F7005554D1 /* xpcExample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xpcExample; sourceTree = BUILT_PRODUCTS_DIR; }; BEF9890B18E4E7F7005554D1 /* xpcExample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xpcExample; sourceTree = BUILT_PRODUCTS_DIR; };
BEF9890E18E4E7F7005554D1 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; }; BEF9890E18E4E7F7005554D1 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -105,7 +105,7 @@
BEF9890318E4E7F7005554D1 /* Project object */ = { BEF9890318E4E7F7005554D1 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 0500; LastUpgradeCheck = 0610;
ORGANIZATIONNAME = "Chris Teubert"; ORGANIZATIONNAME = "Chris Teubert";
}; };
buildConfigurationList = BEF9890618E4E7F7005554D1 /* Build configuration list for PBXProject "xpcExample" */; buildConfigurationList = BEF9890618E4E7F7005554D1 /* Build configuration list for PBXProject "xpcExample" */;
@@ -209,7 +209,6 @@
BEF9891518E4E7F7005554D1 /* Debug */ = { BEF9891518E4E7F7005554D1 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
@@ -222,7 +221,6 @@
BEF9891618E4E7F7005554D1 /* Release */ = { BEF9891618E4E7F7005554D1 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,

View File

@@ -10,31 +10,31 @@
<string>xpcExample</string> <string>xpcExample</string>
<key>IDESourceControlProjectOriginsDictionary</key> <key>IDESourceControlProjectOriginsDictionary</key>
<dict> <dict>
<key>C03F0B00-9A73-4E8C-88E5-1BC53A92AE34</key> <key>975A665F236BF35140EC3819BE16448F522675A6</key>
<string>https://github.com/nasa/XPlaneConnect.git</string> <string>ssh://ares:8420/aerospace/simulation/xplane/xplane_connect</string>
</dict> </dict>
<key>IDESourceControlProjectPath</key> <key>IDESourceControlProjectPath</key>
<string>C/xpcExample/xpcExample.xcodeproj/project.xcworkspace</string> <string>C/xpcExample/xpcExample.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key> <key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict> <dict>
<key>C03F0B00-9A73-4E8C-88E5-1BC53A92AE34</key> <key>975A665F236BF35140EC3819BE16448F522675A6</key>
<string>../../../..</string> <string>../../../..</string>
</dict> </dict>
<key>IDESourceControlProjectURL</key> <key>IDESourceControlProjectURL</key>
<string>https://github.com/nasa/XPlaneConnect.git</string> <string>ssh://ares:8420/aerospace/simulation/xplane/xplane_connect</string>
<key>IDESourceControlProjectVersion</key> <key>IDESourceControlProjectVersion</key>
<integer>110</integer> <integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key> <key>IDESourceControlProjectWCCIdentifier</key>
<string>C03F0B00-9A73-4E8C-88E5-1BC53A92AE34</string> <string>975A665F236BF35140EC3819BE16448F522675A6</string>
<key>IDESourceControlProjectWCConfigurations</key> <key>IDESourceControlProjectWCConfigurations</key>
<array> <array>
<dict> <dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key> <key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string> <string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key> <key>IDESourceControlWCCIdentifierKey</key>
<string>C03F0B00-9A73-4E8C-88E5-1BC53A92AE34</string> <string>975A665F236BF35140EC3819BE16448F522675A6</string>
<key>IDESourceControlWCCName</key> <key>IDESourceControlWCCName</key>
<string>XPlaneConnect</string> <string>xplane_connect</string>
</dict> </dict>
</array> </array>
</dict> </dict>

View File

@@ -0,0 +1,5 @@
cmake_minimum_required(VERSION 2.8.4)
project(xpcExample)
add_subdirectory(src)

View File

@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 2.8.4)
add_executable(main main.cpp)
include_directories(/usr/local/include/xplaneConnect)
find_library(XPLANECONNECT_LIB NAMES xplaneconnect PATHS "/usr/local/lib")
message(STATUS "Library path XPLANECONNECT_LIB is " ${XPLANECONNECT_LIB})
target_link_libraries(main ${XPLANECONNECT_LIB})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)