Changeset 24:838d1d1b619e in xplra
- Timestamp:
- 02/07/13 16:16:04 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/client/c/hu/varadiistvan/xplra/xplra.cc
r23 r24 414 414 //------------------------------------------------------------------------------ 415 415 416 extern "C" ssize_t xplra_get_float_array(float* dest, size_t length, size_t offset, 417 int connectionID, const char* name) 418 { 419 Connection* connection = Slot::getConnection(connectionID); 420 if (connection==0) return -1; 421 try { 422 return connection->getFloatArray(name, dest, length, offset); 423 } catch (...) { 424 connection->handleException(); 425 return -1; 426 } 427 } 428 429 /*----------------------------------------------------------------------------*/ 430 431 extern "C" float* xplra_get_float_array_new(size_t* length, size_t offset, 432 int connectionID, const char* name) 433 { 434 Connection* connection = Slot::getConnection(connectionID); 435 if (connection==0) return 0; 436 try { 437 return connection->getFloatArray(name, *length, offset); 438 } catch (...) { 439 connection->handleException(); 440 return 0; 441 } 442 } 443 444 //------------------------------------------------------------------------------ 445 446 extern "C" ssize_t xplra_get_int_array(int32_t* dest, size_t length, size_t offset, 447 int connectionID, const char* name) 448 { 449 Connection* connection = Slot::getConnection(connectionID); 450 if (connection==0) return -1; 451 try { 452 return connection->getIntArray(name, dest, length, offset); 453 } catch (...) { 454 connection->handleException(); 455 return -1; 456 } 457 } 458 459 /*----------------------------------------------------------------------------*/ 460 461 extern "C" int32_t* xplra_get_int_array_new(size_t* length, size_t offset, 462 int connectionID, const char* name) 463 { 464 Connection* connection = Slot::getConnection(connectionID); 465 if (connection==0) return 0; 466 try { 467 return connection->getIntArray(name, *length, offset); 468 } catch (...) { 469 connection->handleException(); 470 return 0; 471 } 472 } 473 474 //------------------------------------------------------------------------------ 475 476 extern "C" ssize_t xplra_get_byte_array(void* dest, size_t length, size_t offset, 477 int connectionID, const char* name) 478 { 479 Connection* connection = Slot::getConnection(connectionID); 480 if (connection==0) return -1; 481 try { 482 return connection->getByteArray(name, reinterpret_cast<uint8_t*>(dest), 483 length, offset); 484 } catch (...) { 485 connection->handleException(); 486 return -1; 487 } 488 } 489 490 /*----------------------------------------------------------------------------*/ 491 492 extern "C" uint8_t* xplra_get_byte_array_new(size_t* length, size_t offset, 493 int connectionID, const char* name) 494 { 495 Connection* connection = Slot::getConnection(connectionID); 496 if (connection==0) return 0; 497 try { 498 return connection->getByteArray(name, *length, offset); 499 } catch (...) { 500 connection->handleException(); 501 return 0; 502 } 503 } 504 505 //------------------------------------------------------------------------------ 506 416 507 extern "C" int xplra_disconnect(int connectionID) 417 508 { -
src/client/c/hu/varadiistvan/xplra/xplra.h
r23 r24 32 32 /*----------------------------------------------------------------------------*/ 33 33 34 #include <stdlib.h> 35 #include <inttypes.h> 36 37 /*----------------------------------------------------------------------------*/ 38 34 39 #ifdef __cplusplus 35 40 extern "C" { … … 150 155 151 156 /** 157 * Get an array of floats into a buffer. 158 * 159 * @param dest the array into which to get the data 160 * @param length the length of the destination buffer 161 * @param offset the offset from which to query the array 162 * 163 * @return the actual number of elements returned in case of success, 164 * -1 on error 165 */ 166 ssize_t xplra_get_float_array(float* dest, size_t length, size_t offset, 167 int connectionID, const char* name); 168 169 /*----------------------------------------------------------------------------*/ 170 171 /** 172 * Get an array of floats into a newly allocated buffer. 173 * 174 * @param length pointer to a variable containing the length to 175 * query. On return it will be set to the actual length, which can be 176 * less than or equal to the input value. 177 * @param offset the offset from which to query the array 178 * 179 * @return the new array on success, 0 on error 180 */ 181 float* xplra_get_float_array_new(size_t* length, size_t offset, 182 int connectionID, const char* name); 183 184 /*----------------------------------------------------------------------------*/ 185 186 /** 187 * Get an array of integers into a buffer. 188 * 189 * @param dest the array into which to get the data 190 * @param length the length of the destination buffer 191 * @param offset the offset from which to query the array 192 * 193 * @return the actual number of elements returned in case of success, 194 * -1 on error 195 */ 196 ssize_t xplra_get_int_array(int32_t* dest, size_t length, size_t offset, 197 int connectionID, const char* name); 198 199 /*----------------------------------------------------------------------------*/ 200 201 /** 202 * Get an array of integers into a newly allocated buffer. 203 * 204 * @param length pointer to a variable containing the length to 205 * query. On return it will be set to the actual length, which can be 206 * less than or equal to the input value. 207 * @param offset the offset from which to query the array 208 * 209 * @return the new array on success, 0 on error 210 */ 211 int32_t* xplra_get_int_array_new(size_t* length, size_t offset, 212 int connectionID, const char* name); 213 214 /*----------------------------------------------------------------------------*/ 215 216 /** 217 * Get an array of bytes into a buffer. 218 * 219 * @param dest the array into which to get the data 220 * @param length the length of the destination buffer 221 * @param offset the offset from which to query the array 222 * 223 * @return the actual number of elements returned in case of success, 224 * -1 on error 225 */ 226 ssize_t xplra_get_byte_array(void* dest, size_t length, size_t offset, 227 int connectionID, const char* name); 228 229 /*----------------------------------------------------------------------------*/ 230 231 /** 232 * Get an array of bytes into a newly allocated buffer. 233 * 234 * @param length pointer to a variable containing the length to 235 * query. On return it will be set to the actual length, which can be 236 * less than or equal to the input value. 237 * @param offset the offset from which to query the array 238 * 239 * @return the new array on success, 0 on error 240 */ 241 uint8_t* xplra_get_byte_array_new(size_t* length, size_t offset, 242 int connectionID, const char* name); 243 244 /*----------------------------------------------------------------------------*/ 245 246 /** 152 247 * Destroy the connection with the given ID. 153 248 * -
test/basicctest.c
r23 r24 42 42 float spoolTime = 0.0; 43 43 double latitude = 0.0, longitude = 0.0; 44 ssize_t length, i; 45 size_t length1, j; 46 uint8_t result[260]; 47 uint8_t* result1 = 0; 48 int32_t result3[8]; 49 int32_t* result4 = 0; 50 float result5[8]; 51 float* result6 = 0; 44 52 45 53 printf("Connection to X-Plane...\n"); … … 100 108 printf("The coordinates: %f, %f\n\n", latitude, longitude); 101 109 110 printf("Querying the aircraft's description as an array of a fixed size...\n"); 111 length = xplra_get_byte_array(result, sizeof(result)/sizeof(result[0]), 112 0, connectionID, 113 "sim/aircraft/view/acf_descrip"); 114 if (length<0) goto error; 115 printf("Got %zu bytes, as a string: '%s'\n\n", length, result); 116 117 printf("Querying the aircraft's description as a dynamically created array with an offset of 3...\n"); 118 length1 = 0; 119 result1 = xplra_get_byte_array_new(&length1, 3, connectionID, 120 "sim/aircraft/view/acf_descrip"); 121 if (result1==0) goto error; 122 printf("Got %zu bytes, as a string: '%s'\n\n", length1, result1); 123 124 printf("Querying the aircraft's engine types as an array of a fixed size...\n"); 125 length = xplra_get_int_array(result3, sizeof(result3)/sizeof(result3[0]), 0, 126 connectionID, "sim/aircraft/prop/acf_en_type"); 127 128 if (length<0) goto error; 129 printf("Got %zd values:", length); 130 for(i = 0; i<length; ++i) { 131 if (i>0) printf(","); 132 printf(" %d", result3[i]); 133 } 134 printf("\n\n"); 135 136 printf("Querying the aircraft's engine types as a dynamically created array...\n"); 137 length1 = 0; 138 result4 = xplra_get_int_array_new(&length1, 0, connectionID, 139 "sim/aircraft/prop/acf_en_type"); 140 printf("Got %zu values:", length1); 141 for(j = 0; j<length1; ++j) { 142 if (j>0) printf(","); 143 printf(" %d", result4[j]); 144 } 145 printf("\n\n"); 146 147 printf("Querying the aircraft's propeller direction as an array of a fixed size...\n"); 148 length = xplra_get_float_array(result5, sizeof(result5)/sizeof(result5[0]), 149 0, connectionID, 150 "sim/aircraft/prop/acf_prop_dir"); 151 printf("Got %zd values:", length); 152 for(i = 0; i<length; ++i) { 153 if (i>0) printf(","); 154 printf(" %f", result5[i]); 155 } 156 printf("\n\n"); 157 158 printf("Querying the aircraft's propeller direction as a dynamically created array...\n"); 159 length1 = 0; 160 result6 = xplra_get_float_array_new(&length1, 0, connectionID, 161 "sim/aircraft/prop/acf_prop_dir"); 162 printf("Got %zu values:", length1); 163 for(j = 0; j<length1; ++j) { 164 if (j>0) printf(","); 165 printf(" %f", result6[j]); 166 } 167 printf("\n\n"); 168 102 169 goto cleanup; 103 170 error: … … 116 183 // try { 117 184 118 // printf("Querying the aircraft's description as an array of a fixed size...\n");119 // uint8_t result[260];120 // size_t length = xplane.getByteArray("sim/aircraft/view/acf_descrip",121 // result, sizeof(result)/sizeof(result[0]));122 // printf("Got %zu bytes, as a string: '%s'\n\n", length, result);123 124 // printf("Querying the aircraft's description as a dynamically created array...\n");125 // uint8_t* result1 = xplane.getByteArray("sim/aircraft/view/acf_descrip", length);126 // printf("Got %zu bytes, as a string: '%s'\n\n", length, result1);127 128 // printf("Querying the aircraft's description as a string, with an offset of 3...\n");129 // string result2 = xplane.getString("sim/aircraft/view/acf_descrip", 3);130 // printf("Got: '%s'\n\n", result2.c_str());131 132 // printf("Querying the aircraft's engine types as an array of a fixed size...\n");133 // int32_t result3[8];134 // length = xplane.getIntArray("sim/aircraft/prop/acf_en_type",135 // result3, sizeof(result3)/sizeof(result3[0]));136 // printf("Got %zu values:", length);137 // for(size_t i = 0; i<length; ++i) {138 // if (i>0) printf(",");139 // printf(" %d", result3[i]);140 // }141 // printf("\n\n");142 143 // printf("Querying the aircraft's engine types as a dynamically created array...\n");144 // length = 0;145 // int32_t* result4 = xplane.getIntArray("sim/aircraft/prop/acf_en_type", length);146 // printf("Got %zu values:", length);147 // for(size_t i = 0; i<length; ++i) {148 // if (i>0) printf(",");149 // printf(" %d", result4[i]);150 // }151 // printf("\n\n");152 153 // printf("Querying the aircraft's propeller direction as an array of a fixed size...\n");154 // float result5[8];155 // length = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir",156 // result5, sizeof(result5)/sizeof(result5[0]));157 // printf("Got %zu values:", length);158 // for(size_t i = 0; i<length; ++i) {159 // if (i>0) printf(",");160 // printf(" %f", result5[i]);161 // }162 // printf("\n\n");163 164 // printf("Querying the aircraft's propeller direction as a dynamically created array...\n");165 // length = 0;166 // float* result6 = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir", length);167 // printf("Got %zu values:", length);168 // for(size_t i = 0; i<length; ++i) {169 // if (i>0) printf(",");170 // printf(" %f", result6[i]);171 // }172 // printf("\n\n");173 185 174 186 // printf("Setting the number of the engines to %d...\n", numEngines + 1);
Note:
See TracChangeset
for help on using the changeset viewer.