source: xplra/test/basictest.cc@ 17:2b7d9b08ce3f

Last change on this file since 17:2b7d9b08ce3f was 17:2b7d9b08ce3f, checked in by István Váradi <ivaradi@…>, 11 years ago

Setting of scalar values works

File size: 7.7 KB
Line 
1// Copyright (c) 2013 by István Váradi
2
3// This file is part of XPLRA, a remote-access plugin for X-Plane
4
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are met:
7
8// 1. Redistributions of source code must retain the above copyright notice, this
9// list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright notice,
11// this list of conditions and the following disclaimer in the documentation
12// and/or other materials provided with the distribution.
13
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25// The views and conclusions contained in the software and documentation are those
26// of the authors and should not be interpreted as representing official policies,
27// either expressed or implied, of the FreeBSD Project.
28
29//------------------------------------------------------------------------------
30
31#include <hu/varadiistvan/xplra/XPlane.h>
32
33#include <cstdio>
34
35//------------------------------------------------------------------------------
36
37using hu::varadiistvan::xplra::XPlane;
38using hu::varadiistvan::xplra::Exception;
39using hu::varadiistvan::xplra::ProtocolException;
40
41using std::string;
42
43//------------------------------------------------------------------------------
44
45int main()
46{
47 try {
48 XPlane xplane;
49
50 printf("Connecting to X-Plane...\n");
51 xplane.connect();
52 printf("Connected to X-Plane.\n\n");
53
54 printf("Querying the number of the engines...\n");
55 int numEngines = xplane.getInt("sim/aircraft/engine/acf_num_engines");
56 printf("The number of engines: %d\n\n", numEngines);
57
58 try {
59 printf("Querying an invalid dataref...\n");
60 xplane.getInt("sim/aircraft/engine/num_engines");
61 printf("\n>>>>>>>>>>>> Succeeded!!!!!!!!!!!!!!!!!!!!!!\n\n");
62 } catch(const ProtocolException& exception) {
63 printf("Exception caugth: %s\n\n", exception.what());
64 }
65
66 printf("Querying the spool time of a jet engine...\n");
67 float spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_jet");
68 printf("The spool time: %f\n\n", spoolTime);
69
70 printf("Querying the spool time of a propeller...\n");
71 spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_prop");
72 printf("The spool time: %f\n\n", spoolTime);
73
74 printf("Querying the coordinates...\n");
75 double latitude = xplane.getDouble("sim/flightmodel/position/latitude");
76 double longitude = xplane.getDouble("sim/flightmodel/position/longitude");
77 printf("The coordinates: %f, %f\n\n", latitude, longitude);
78
79 printf("Querying the aircraft's description as an array of a fixed size...\n");
80 uint8_t result[260];
81 size_t length = xplane.getByteArray("sim/aircraft/view/acf_descrip",
82 result, sizeof(result)/sizeof(result[0]));
83 printf("Got %zu bytes, as a string: '%s'\n\n", length, result);
84
85 printf("Querying the aircraft's description as a dynamically created array...\n");
86 uint8_t* result1 = xplane.getByteArray("sim/aircraft/view/acf_descrip", length);
87 printf("Got %zu bytes, as a string: '%s'\n\n", length, result1);
88
89 printf("Querying the aircraft's description as a string, with an offset of 3...\n");
90 string result2 = xplane.getString("sim/aircraft/view/acf_descrip", 3);
91 printf("Got: '%s'\n\n", result2.c_str());
92
93 printf("Querying the aircraft's engine types as an array of a fixed size...\n");
94 int32_t result3[8];
95 length = xplane.getIntArray("sim/aircraft/prop/acf_en_type",
96 result3, sizeof(result3)/sizeof(result3[0]));
97 printf("Got %zu values:", length);
98 for(size_t i = 0; i<length; ++i) {
99 if (i>0) printf(",");
100 printf(" %d", result3[i]);
101 }
102 printf("\n\n");
103
104 printf("Querying the aircraft's engine types as a dynamically created array...\n");
105 length = 0;
106 int32_t* result4 = xplane.getIntArray("sim/aircraft/prop/acf_en_type", length);
107 printf("Got %zu values:", length);
108 for(size_t i = 0; i<length; ++i) {
109 if (i>0) printf(",");
110 printf(" %d", result4[i]);
111 }
112 printf("\n\n");
113
114 printf("Querying the aircraft's propeller direction as an array of a fixed size...\n");
115 float result5[8];
116 length = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir",
117 result5, sizeof(result5)/sizeof(result5[0]));
118 printf("Got %zu values:", length);
119 for(size_t i = 0; i<length; ++i) {
120 if (i>0) printf(",");
121 printf(" %f", result5[i]);
122 }
123 printf("\n\n");
124
125 printf("Querying the aircraft's propeller direction as a dynamically created array...\n");
126 length = 0;
127 float* result6 = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir", length);
128 printf("Got %zu values:", length);
129 for(size_t i = 0; i<length; ++i) {
130 if (i>0) printf(",");
131 printf(" %f", result6[i]);
132 }
133 printf("\n\n");
134
135 printf("Setting the number of the engines to %d...\n", numEngines + 1);
136 xplane.setInt("sim/aircraft/engine/acf_num_engines", numEngines + 1);
137 numEngines = xplane.getInt("sim/aircraft/engine/acf_num_engines");
138 printf("The new number of engines: %d\n\n", numEngines);
139
140 float acfElevUp = xplane.getFloat("sim/aircraft/controls/acf_elev_up");
141 printf("Setting the aircraft elevator up control from %f to %f...\n",
142 acfElevUp, acfElevUp + 15.0);
143 xplane.setFloat("sim/aircraft/controls/acf_elev_up", acfElevUp);
144 acfElevUp = xplane.getFloat("sim/aircraft/controls/acf_elev_up");
145 printf("The aircraft elevator up control set to %f\n\n", acfElevUp);
146
147 double acfElevDown = xplane.getDouble("sim/flightmodel/position/local_x");
148 printf("Setting the aircraft elevator down control from %f to %f...\n",
149 acfElevDown, acfElevDown + 15.0);
150 xplane.setDouble("sim/flightmodel/position/local_x", acfElevDown + 15.0);
151 acfElevDown = xplane.getDouble("sim/flightmodel/position/local_x");
152 printf("The aircraft elevator down control set to %f\n\n", acfElevDown);
153
154 try {
155 printf("Querying an invalid dataref...\n");
156 xplane.getInt("sim/aircraft/engine/num_engines");
157 printf("\n>>>>>>>>>>>> Succeeded!!!!!!!!!!!!!!!!!!!!!!\n\n");
158 } catch(const ProtocolException& exception) {
159 printf("Exception caugth: %s\n\n", exception.what());
160 }
161
162
163 return 0;
164 } catch(const Exception& exception) {
165 printf("\n>>>>>>>>>>>>>>>>> Exception caugth: %s\n", exception.what());
166
167 return 1;
168 }
169}
170
171//------------------------------------------------------------------------------
172
173// Local Variables:
174// mode: C++
175// c-basic-offset: 4
176// indent-tabs-mode: nil
177// End:
Note: See TracBrowser for help on using the repository browser.