diff --git a/.gitignore b/.gitignore index 8d7ff37..9eaaea2 100644 --- a/.gitignore +++ b/.gitignore @@ -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/xpcPlugin.xcodeproj/project.xcworkspace/xcuserdata/cteubert.xcuserdatad/UserInterfaceState.xcuserstate + +build/ diff --git a/C/CMakeLists.txt b/C/CMakeLists.txt new file mode 100644 index 0000000..e265d37 --- /dev/null +++ b/C/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(xplaneconnectlib) + +add_subdirectory(src) diff --git a/C/User Guide (C).txt b/C/User Guide (C).txt index 16bbae5..60e4bf0 100644 --- a/C/User Guide (C).txt +++ b/C/User Guide (C).txt @@ -1,31 +1,31 @@ X-Plane Connect-C (XPC-C) Readme 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 - Before using XPC Functions you must - 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. - 3. Start X-Plane. + Before using XPC Functions you must + 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. + 3. Start X-Plane. 4. #include "xplaneConnect.h" ----------------------------------- BASIC FUNCTIONS 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) 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) OUTPUT: socket (xpcSocket): The Opened Socket - + USE: unsigned short portNumber = 49067; 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. INPUT: socket (xpcSocket): The Opened Socket @@ -37,10 +37,10 @@ BASIC FUNCTIONS INPUT: socket (xpcSocket): Socket to use to send the command recPort (unsigned Short): Port number for requested dataref values to be sent to - + OUTPUT: status (short): 0 if successful - + USE: char IP[16] = "127.0.0.1"; struct xpcSocket theSocket = openUDP(49067); @@ -50,7 +50,7 @@ BASIC FUNCTIONS INPUT: socket (xpcSocket): Socket to use to send the command pause (short): 1=Pause, 0=Resume - + OUTPUT: status (short): 0 if successful @@ -58,22 +58,22 @@ BASIC FUNCTIONS char IP[16] = "127.0.0.1"; struct xpcSocket theSocket = openUDP(49067); pauseSim(theSocket, IP, 49009, 1); - + 5. sendDATA set the value of a state in the "DATA Input & Output" Table INPUT: 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. rows (unsigned short): Number of rows of data being sent - + OUTPUT: status (short): 0 if successful - + USE: char IP[16] = "127.0.0.1"; 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 sendDATA(theSocket,IP,49009,data,2); - + 6. sendPOSI set the position of an aircraft INPUT: socket (xpcSocket): Socket to use to send the command @@ -87,7 +87,7 @@ BASIC FUNCTIONS position[4] = Pitch (deg) position[5] = True Heading (deg) position[6] = Gear (0=up, 1=down) - + OUTPUT: status (short): 0 if successful @@ -96,7 +96,7 @@ BASIC FUNCTIONS struct xpcSocket theSocket = openUDP(49067); float posit[] = {37.5242422, -122.06899, 2500, 0, 0, 0, 1}; sendPOSI(theSocket, IP, 49009, 7, posit); - + 7. sendCTRL send control commands to the aircraft INPUT: socket (xpcSocket): Socket to use to send the command @@ -108,16 +108,16 @@ BASIC FUNCTIONS control[3] = Throttle [-1, 1] control[4] = Gear (0=up, 1=down) control[5] = Flaps [0, 1] - + OUTPUT: status (short): 0 if successful - + USE: char IP[16] = "127.0.0.1"; struct xpcSocket theSocket = openUDP(49067); float ctrl[] = {0, 0, 0, 0.8, 0, 1}; 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 INPUT: socket (xpcSocket): Socket to use to send the command @@ -125,7 +125,7 @@ BASIC FUNCTIONS length (short): length of dataref string values (float *): Array of values to be sent length2 (short): Number of values in values array - + OUTPUT: status (short): 0 if successful @@ -135,7 +135,7 @@ BASIC FUNCTIONS char theDREF[] = "cockpit/switches/gear_handle_status"; float 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 INPUT: outSocket (xpcSocket): Socket to use to send the command @@ -145,7 +145,7 @@ BASIC FUNCTIONS listLength (short): Number of DataRefs in DREFArray 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. - + OUTPUT: length (short): Number of Values Returned @@ -154,7 +154,7 @@ BASIC FUNCTIONS struct xpcSocket theSocket = openUDP(49067); char DREFArray[][100] = {"sim/cockpit/switches/gear_handle_status"}; requestDREF(theSocket, IP, 49009, DREFArray, strlen(DREFArray[0]),1); - + ----------------------------------- ADVANCED FUNCTIONS (These are mostly used by the xpcPlugin to read requests) 1. sendUDP diff --git a/C/src/CMakeLists.txt b/C/src/CMakeLists.txt new file mode 100644 index 0000000..38a7621 --- /dev/null +++ b/C/src/CMakeLists.txt @@ -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) diff --git a/C/xpcExample/xpcExample.xcodeproj/project.pbxproj b/C/xpcExample/xpcExample.xcodeproj/project.pbxproj index 3028f4e..21f3aec 100644 --- a/C/xpcExample/xpcExample.xcodeproj/project.pbxproj +++ b/C/xpcExample/xpcExample.xcodeproj/project.pbxproj @@ -16,14 +16,14 @@ /* Begin PBXCopyFilesBuildPhase section */ BE60308318E5F7A5004B5E1D /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; - buildActionMask = 12; + buildActionMask = 8; dstPath = /Users/cteubert/Documents/flightdeckz/connections/src/xplaneconnect; dstSubfolderSpec = 0; files = ( BEDC620818EDF254005DB364 /* xplaneConnect.c in CopyFiles */, BEDC620918EDF257005DB364 /* xplaneConnect.h in CopyFiles */, ); - runOnlyForDeploymentPostprocessing = 0; + runOnlyForDeploymentPostprocessing = 1; }; /* 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 = ""; }; BEDC620018EDF0F5005DB364 /* xplaneConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xplaneConnect.h; path = ../src/xplaneConnect.h; sourceTree = ""; }; 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 = ""; }; + BEF9890E18E4E7F7005554D1 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -105,7 +105,7 @@ BEF9890318E4E7F7005554D1 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = "Chris Teubert"; }; buildConfigurationList = BEF9890618E4E7F7005554D1 /* Build configuration list for PBXProject "xpcExample" */; @@ -209,7 +209,6 @@ BEF9891518E4E7F7005554D1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, @@ -222,7 +221,6 @@ BEF9891618E4E7F7005554D1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, diff --git a/C/xpcExample/xpcExample.xcodeproj/project.xcworkspace/xcshareddata/xpcExample.xccheckout b/C/xpcExample/xpcExample.xcodeproj/project.xcworkspace/xcshareddata/xpcExample.xccheckout index 94d88f7..b474632 100644 --- a/C/xpcExample/xpcExample.xcodeproj/project.xcworkspace/xcshareddata/xpcExample.xccheckout +++ b/C/xpcExample/xpcExample.xcodeproj/project.xcworkspace/xcshareddata/xpcExample.xccheckout @@ -10,31 +10,31 @@ xpcExample IDESourceControlProjectOriginsDictionary - C03F0B00-9A73-4E8C-88E5-1BC53A92AE34 - https://github.com/nasa/XPlaneConnect.git + 975A665F236BF35140EC3819BE16448F522675A6 + ssh://ares:8420/aerospace/simulation/xplane/xplane_connect IDESourceControlProjectPath - C/xpcExample/xpcExample.xcodeproj/project.xcworkspace + C/xpcExample/xpcExample.xcodeproj IDESourceControlProjectRelativeInstallPathDictionary - C03F0B00-9A73-4E8C-88E5-1BC53A92AE34 + 975A665F236BF35140EC3819BE16448F522675A6 ../../../.. IDESourceControlProjectURL - https://github.com/nasa/XPlaneConnect.git + ssh://ares:8420/aerospace/simulation/xplane/xplane_connect IDESourceControlProjectVersion - 110 + 111 IDESourceControlProjectWCCIdentifier - C03F0B00-9A73-4E8C-88E5-1BC53A92AE34 + 975A665F236BF35140EC3819BE16448F522675A6 IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - C03F0B00-9A73-4E8C-88E5-1BC53A92AE34 + 975A665F236BF35140EC3819BE16448F522675A6 IDESourceControlWCCName - XPlaneConnect + xplane_connect diff --git a/C/xpcExample/xpcExample/CMakeLists.txt b/C/xpcExample/xpcExample/CMakeLists.txt new file mode 100644 index 0000000..79ce885 --- /dev/null +++ b/C/xpcExample/xpcExample/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(xpcExample) + +add_subdirectory(src) diff --git a/C/xpcExample/xpcExample/src/CMakeLists.txt b/C/xpcExample/xpcExample/src/CMakeLists.txt new file mode 100644 index 0000000..8c0308b --- /dev/null +++ b/C/xpcExample/xpcExample/src/CMakeLists.txt @@ -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) diff --git a/C/xpcExample/xpcExample/main.cpp b/C/xpcExample/xpcExample/src/main.cpp similarity index 100% rename from C/xpcExample/xpcExample/main.cpp rename to C/xpcExample/xpcExample/src/main.cpp diff --git a/C/xpcExample/xpcExample/xpcExample.1 b/C/xpcExample/xpcExample/src/xpcExample.1 similarity index 100% rename from C/xpcExample/xpcExample/xpcExample.1 rename to C/xpcExample/xpcExample/src/xpcExample.1