source: xplra/test/basictest.cc@ 16:1d329bbc0303

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

Added the functions to handle the array queries

File size: 6.2 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 return 0;
136 } catch(const Exception& exception) {
137 printf("\n>>>>>>>>>>>>>>>>> Exception caugth: %s\n", exception.what());
138
139 return 1;
140 }
141}
142
143//------------------------------------------------------------------------------
144
145// Local Variables:
146// mode: C++
147// c-basic-offset: 4
148// indent-tabs-mode: nil
149// End:
Note: See TracBrowser for help on using the repository browser.