Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nasa/XPlaneConnect
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.1.2
Choose a base ref
...
head repository: nasa/XPlaneConnect
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 5,577 additions and 865 deletions.
  1. +7 −1 .gitignore
  2. +102 −0 C/monitorExample/main.c
  3. +22 −0 C/monitorExample/monitorExample.sln
  4. +79 −0 C/monitorExample/monitorExample.vcxproj
  5. +25 −0 C/monitorExample/monitorExample.vcxproj.filters
  6. +71 −0 C/playbackExample/src/chrome.c
  7. +40 −0 C/playbackExample/src/chrome.h
  8. +70 −0 C/playbackExample/src/main.c
  9. +106 −0 C/playbackExample/src/playback.c
  10. +32 −0 C/playbackExample/src/playback.h
  11. +22 −0 C/playbackExample/win/playbackExample.sln
  12. +89 −0 C/playbackExample/win/playbackExample.vcxproj
  13. +42 −0 C/playbackExample/win/playbackExample.vcxproj.filters
  14. +342 −55 C/src/xplaneConnect.c
  15. +85 −24 C/src/xplaneConnect.h
  16. +2 −2 C/xpcExample/xpcExample/src/main.cpp
  17. BIN Contributor Agreements/XPC Corporate CLA.pdf
  18. BIN Contributor Agreements/XPC Individual CLA.pdf
  19. +1 −14 Java/.idea/misc.xml
  20. +1 −0 Java/.idea/modules.xml
  21. +2 −3 Java/Examples/BasicOperation/src/Main.java
  22. +1 −0 Java/Examples/ContinuousOperation/.idea/.name
  23. +22 −0 Java/Examples/ContinuousOperation/.idea/compiler.xml
  24. +3 −0 Java/Examples/ContinuousOperation/.idea/copyright/profiles_settings.xml
  25. +9 −0 Java/Examples/ContinuousOperation/.idea/libraries/XPlaneConnect.xml
  26. +19 −0 Java/Examples/ContinuousOperation/.idea/misc.xml
  27. +8 −0 Java/Examples/ContinuousOperation/.idea/modules.xml
  28. +6 −0 Java/Examples/ContinuousOperation/.idea/vcs.xml
  29. +12 −0 Java/Examples/ContinuousOperation/ContinuousOperation.iml
  30. BIN Java/Examples/ContinuousOperation/libs/XPlaneConnect.jar
  31. +47 −0 Java/Examples/ContinuousOperation/src/Main.java
  32. +12 −0 Java/Examples/DiscoveryExample/DiscoveryExample.iml
  33. +35 −0 Java/Examples/DiscoveryExample/src/DiscoveryConnectionExample.java
  34. +23 −0 Java/Examples/DiscoveryExample/src/SimpleDiscoveryExample.java
  35. +22 −0 Java/Examples/Playback/.idea/compiler.xml
  36. +3 −0 Java/Examples/Playback/.idea/copyright/profiles_settings.xml
  37. +1 −0 Java/Examples/Playback/.idea/description.html
  38. +9 −0 Java/Examples/Playback/.idea/libraries/XPlaneConnect.xml
  39. +12 −0 Java/Examples/Playback/.idea/misc.xml
  40. +8 −0 Java/Examples/Playback/.idea/modules.xml
  41. +3 −0 Java/Examples/Playback/.idea/project-template.xml
  42. +6 −0 Java/Examples/Playback/.idea/vcs.xml
  43. +12 −0 Java/Examples/Playback/Playback.iml
  44. +147 −0 Java/Examples/Playback/src/gov/nasa/xpc/Main.java
  45. +11 −2 Java/XPlaneConnect.iml
  46. BIN Java/lib/hamcrest-core-1.3.jar
  47. BIN Java/lib/junit-4.12.jar
  48. +1 −1 Java/src/ViewType.java
  49. +1 −1 Java/src/WaypointOp.java
  50. +148 −9 Java/src/XPlaneConnect.java
  51. +45 −0 Java/src/discovery/Beacon.java
  52. +54 −0 Java/src/discovery/BeaconParser.java
  53. +10 −0 Java/src/discovery/BeaconReceivedListener.java
  54. +14 −0 Java/src/discovery/DiscoveryConnectionCallback.java
  55. +94 −0 Java/src/discovery/XPlaneConnectDiscovery.java
  56. BIN MATLAB/+XPlaneConnect/XPlaneConnect.jar
  57. +29 −0 MATLAB/+XPlaneConnect/getCTRL.m
  58. +29 −0 MATLAB/+XPlaneConnect/getPOSI.m
  59. +1 −1 MATLAB/+XPlaneConnect/openUDP.m
  60. +2 −2 MATLAB/+XPlaneConnect/pauseSim.m
  61. +2 −2 MATLAB/+XPlaneConnect/readDATA.m
  62. +1 −1 MATLAB/+XPlaneConnect/selectDATA.m
  63. +7 −7 MATLAB/+XPlaneConnect/sendPOSI.m
  64. +19 −0 MATLAB/MonitorExample/MonitorExample.m
  65. +100 −0 MATLAB/PlaybackExample/MyRecording.txt
  66. +36 −0 MATLAB/PlaybackExample/Playback.m
  67. +34 −0 MATLAB/PlaybackExample/Record.m
  68. 0 Python/src/{example.py → basicExample.py}
  69. +16 −0 Python/src/monitorExample.py
  70. +82 −0 Python/src/playbackExample.py
  71. +84 −15 Python/src/xpc.py
  72. +8 −2 Python/xplaneConnect.pyproj
  73. +72 −0 Python3/src/basicExample.py
  74. +16 −0 Python3/src/monitorExample.py
  75. +82 −0 Python3/src/playbackExample.py
  76. +442 −0 Python3/src/xpc/__init__.py
  77. +58 −0 Python3/xplaneConnect.pyproj
  78. +24 −0 Python3/xplaneConnect.sln
  79. +26 −36 README.md
  80. +5 −5 TestScripts/C Tests.win/CTests.vcxproj
  81. +3 −0 TestScripts/C Tests.win/CTests.vcxproj.filters
  82. +79 −25 TestScripts/C Tests/CtrlTests.h
  83. +3 −3 TestScripts/C Tests/DataTests.h
  84. +9 −9 TestScripts/C Tests/DrefTests.h
  85. +55 −18 TestScripts/C Tests/PosiTests.h
  86. +3 −3 TestScripts/C Tests/SimuTests.h
  87. +34 −2 TestScripts/C Tests/Test.c
  88. +16 −2 TestScripts/C Tests/Test.h
  89. +2 −2 TestScripts/C Tests/TextTests.h
  90. +2 −2 TestScripts/C Tests/UDPTests.h
  91. +2 −2 TestScripts/C Tests/ViewTests.h
  92. +2 −2 TestScripts/C Tests/WyptTests.h
  93. +44 −20 TestScripts/C Tests/main.c
  94. +39 −12 TestScripts/Java Tests/XPlaneConnectTest.java
  95. +73 −0 TestScripts/Java Tests/XPlaneDiscoveryTests.java
  96. +15 −0 TestScripts/MATLAB Tests/getCTRLTest.m
  97. +17 −0 TestScripts/MATLAB Tests/getPOSITest.m
  98. +1 −1 TestScripts/MATLAB Tests/{CTRLTest.m → sendCTRLTest.m}
  99. +1 −1 TestScripts/MATLAB Tests/{POSITest.m → sendPOSITest.m}
  100. +4 −2 TestScripts/MATLAB Tests/tests.m
  101. +49 −1 TestScripts/Python Tests/Tests.py
  102. +434 −0 TestScripts/Python3 Tests/Tests.py
  103. +45 −0 TestScripts/Python3 Tests/Tests.pyproj
  104. +165 −0 azure-pipelines.yml
  105. +18 −0 setup.py
  106. +14 −4 xpcPlugin/CMakeLists.txt
  107. +173 −0 xpcPlugin/CameraCallbacks.cpp
  108. +69 −26 xpcPlugin/DataManager.cpp
  109. +8 −3 xpcPlugin/DataManager.h
  110. +3 −3 xpcPlugin/Drawing.cpp
  111. +1 −1 xpcPlugin/Drawing.h
  112. +3 −3 xpcPlugin/Log.cpp
  113. +2 −2 xpcPlugin/Log.h
  114. +83 −72 xpcPlugin/Message.cpp
  115. +1 −4 xpcPlugin/Message.h
  116. +380 −41 xpcPlugin/MessageHandlers.cpp
  117. +43 −5 xpcPlugin/MessageHandlers.h
  118. +1 −1 xpcPlugin/SDK/CHeaders/Wrappers/XPCBroadcaster.cpp
  119. +1 −1 xpcPlugin/SDK/CHeaders/Wrappers/XPCBroadcaster.h
  120. +1 −1 xpcPlugin/SDK/CHeaders/Wrappers/XPCListener.h
  121. +1 −1 xpcPlugin/SDK/CHeaders/Wrappers/XPCProcessing.cpp
  122. +1 −1 xpcPlugin/SDK/CHeaders/Wrappers/XPCProcessing.h
  123. +6 −6 xpcPlugin/SDK/CHeaders/Wrappers/XPCWidget.cpp
  124. +6 −6 xpcPlugin/SDK/CHeaders/Wrappers/XPCWidget.h
  125. +19 −19 xpcPlugin/SDK/CHeaders/Wrappers/XPCWidgetAttachments.cpp
  126. +20 −20 xpcPlugin/SDK/CHeaders/Wrappers/XPCWidgetAttachments.h
  127. +11 −11 xpcPlugin/SDK/CHeaders/XPLM/XPLMDefs.h
  128. +5 −0 xpcPlugin/SDK/README.txt
  129. +27 −0 xpcPlugin/Timer.cpp
  130. +30 −0 xpcPlugin/Timer.h
  131. +52 −26 xpcPlugin/UDPSocket.cpp
  132. +6 −2 xpcPlugin/UDPSocket.h
  133. +41 −12 xpcPlugin/XPCPlugin.cpp
  134. BIN xpcPlugin/XPlaneConnect/64/lin.xpl
  135. BIN xpcPlugin/XPlaneConnect/64/win.xpl
  136. BIN xpcPlugin/XPlaneConnect/lin.xpl
  137. BIN xpcPlugin/XPlaneConnect/mac.xpl
  138. BIN xpcPlugin/XPlaneConnect/win.xpl
  139. +26 −2 xpcPlugin/xpcPlugin.xcodeproj/project.pbxproj
  140. +2 −2 xpcPlugin/xpcPlugin/xpcPlugin.sln
  141. +231 −227 xpcPlugin/xpcPlugin/xpcPlugin.vcxproj
  142. +82 −73 xpcPlugin/xpcPlugin/xpcPlugin.vcxproj.filters
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
# OS generated files #
######################
.DS_Store?
.DS_Store
ehthumbs.db
Icon?
Thumbs.db
@@ -69,6 +70,7 @@ build/
xcuserdata
*.moved-aside
*.xccheckout
xcshareddata

# IntelliJ Files #
##################
@@ -90,4 +92,8 @@ out/

# Internal Docs #
#################
Docs/~$Capability Matrix.xlsx
Docs/~$Capability Matrix.xlsx
*.xpl
*.egg-info
build
dist
102 changes: 102 additions & 0 deletions C/monitorExample/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
// Copyright (c) 2013-2018 United States Government as represented by the Administrator of the
// National Aeronautics and Space Administration. All Rights Reserved.
//
// DISCLAIMERS
// No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND,
// EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT
// THE SUBJECT SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY
// THAT THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF PROVIDED,
// WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN ANY MANNER, CONSTITUTE AN
// ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR RECIPIENT OF ANY RESULTS, RESULTING DESIGNS,
// HARDWARE, SOFTWARE PRODUCTS OR ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT
// SOFTWARE. FURTHER, GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING
// THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES IT "AS IS."
//
// Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST THE UNITED STATES
// GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT. IF
// RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES
// OR LOSSES ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING
// FROM, RECIPIENT'S USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE
// UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT,
// TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY FOR ANY SUCH MATTER SHALL BE THE
// IMMEDIATE, UNILATERAL TERMINATION OF THIS AGREEMENT.

#include "../src/xplaneConnect.h"
#include <sys/time.h>
#include "stdio.h"

struct timeval tv;

#ifdef WIN32
HANDLE hStdIn = NULL;
INPUT_RECORD buffer;
int waitForInput()
{
if (hStdIn == NULL)
{
hStdIn = GetStdHandle(STD_INPUT_HANDLE);
}
FlushConsoleInputBuffer(hStdIn);
DWORD result = WaitForSingleObject(hStdIn, 100);
if (result == WAIT_OBJECT_0)
{
DWORD eventsRead;
PeekConsoleInput(hStdIn, &buffer, 1, &eventsRead);
if (eventsRead > 0)
{
return buffer.EventType == KEY_EVENT;
}
}
return FALSE;
}
#else
int fdstdin = 0;
fd_set fds;

int waitForInput()
{

FD_ZERO(&fds);
FD_SET(fdstdin, &fds);
select(1, &fds, NULL, NULL, &tv);
return FD_ISSET(fdstdin, &fds);
}
#endif

int main(void)
{
XPCSocket client = openUDP("127.0.0.1");
const int aircraftNum = 0;
tv.tv_usec = 100 * 1000;
while (1)
{
double posi[7];
int result = getPOSI(client, posi, aircraftNum);
if (result < 0) // Error in getPOSI
{
break;
}

float ctrl[7];
result = getCTRL(client, ctrl, aircraftNum);
if (result < 0) // Error in getCTRL
{
break;
}

printf("Loc: (%4f, %4f, %4f) Aileron:%2f Elevator:%2f Rudder:%2f\n",
posi[0], posi[1], posi[2], ctrl[1], ctrl[0], ctrl[2]);

// Check if any key has been pressed and break
if (waitForInput())
{
break;
}
}


printf("\n\nPress Any Key to exit...");
getchar();
return 0;
}
22 changes: 22 additions & 0 deletions C/monitorExample/monitorExample.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monitorExample", "monitorExample.vcxproj", "{0F45204B-6910-46C7-BECD-273985390F75}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0F45204B-6910-46C7-BECD-273985390F75}.Debug|Win32.ActiveCfg = Debug|Win32
{0F45204B-6910-46C7-BECD-273985390F75}.Debug|Win32.Build.0 = Debug|Win32
{0F45204B-6910-46C7-BECD-273985390F75}.Release|Win32.ActiveCfg = Release|Win32
{0F45204B-6910-46C7-BECD-273985390F75}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
79 changes: 79 additions & 0 deletions C/monitorExample/monitorExample.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{0F45204B-6910-46C7-BECD-273985390F75}</ProjectGuid>
<RootNamespace>monitorExample</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>../src;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<IncludePath>../src;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\xplaneConnect.c" />
<ClCompile Include="main.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
25 changes: 25 additions & 0 deletions C/monitorExample/monitorExample.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\xplaneConnect.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
71 changes: 71 additions & 0 deletions C/playbackExample/src/chrome.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
//Copyright (c) 2013-2018 United States Government as represented by the Administrator of the
//National Aeronautics and Space Administration. All Rights Reserved.
//
//DISCLAIMERS
// No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND,
// EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT
// THE SUBJECT SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY
// THAT THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF PROVIDED,
// WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN ANY MANNER, CONSTITUTE AN
// ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR RECIPIENT OF ANY RESULTS, RESULTING DESIGNS,
// HARDWARE, SOFTWARE PRODUCTS OR ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT
// SOFTWARE. FURTHER, GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING
// THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES IT "AS IS."
//
// Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST THE UNITED STATES
// GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT. IF
// RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES
// OR LOSSES ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING
// FROM, RECIPIENT'S USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE
// UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT,
// TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY FOR ANY SUCH MATTER SHALL BE THE
// IMMEDIATE, UNILATERAL TERMINATION OF THIS AGREEMENT.

#include "chrome.h"

#include <stdio.h>

void displayStart(char* version)
{
printf("X-Plane Connect Playback Example [Version %s]\n", version);
printf("(c) 2013-2015 United States Government as represented by the Administrator\n");
printf("of the National Aeronautics and Space Administration. All Rights Reserved.\n");
}

int displayMenu(char* title, char* opts[], size_t count)
{
printf("\n");
printf("+---------------------------------------------- +\n");
printf("| %-42s |\n", title);
printf("+---------------------------------------------- +\n");
for (size_t i = 0; i < count; i++)
{
printf("| %2u. %-40s |\n", i + 1, opts[i]);
}
printf("+---------------------------------------------- +\n");
printf("Please select an option: ");

int opt;
scanf("%d", &opt);
return opt;
}

void displayMsg(char* msg)
{
printf("%s\n", msg);
}

void getString(char* prompt, char buffer[255])
{
printf("%s: ", prompt);
scanf("%255s", buffer);
}

int getInt(char* prompt)
{
printf("%s: ", prompt);
int result;
scanf("%d", &result);
return result;
}
40 changes: 40 additions & 0 deletions C/playbackExample/src/chrome.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//Copyright (c) 2013-2018 United States Government as represented by the Administrator of the
//National Aeronautics and Space Administration. All Rights Reserved.
//
//DISCLAIMERS
// No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND,
// EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT
// THE SUBJECT SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY
// THAT THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF PROVIDED,
// WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN ANY MANNER, CONSTITUTE AN
// ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR RECIPIENT OF ANY RESULTS, RESULTING DESIGNS,
// HARDWARE, SOFTWARE PRODUCTS OR ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT
// SOFTWARE. FURTHER, GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING
// THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES IT "AS IS."
//
// Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST THE UNITED STATES
// GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT. IF
// RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES
// OR LOSSES ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING
// FROM, RECIPIENT'S USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE
// UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT,
// TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY FOR ANY SUCH MATTER SHALL BE THE
// IMMEDIATE, UNILATERAL TERMINATION OF THIS AGREEMENT.

#ifndef XPC_PLAYBACKEX_CHROME_H_
#define XPC_PLAYBACKEX_CHROME_H_

#include <stdlib.h>

void displayStart(char* version);

int displayMenu(char* title, char* opts[], size_t count);

void displayMsg(char* msg);

void getString(char* prompt, char buffer[255]);

int getInt(char* prompt);

#endif
Loading