C client style tweaks.

- Standardized C client to use tabs.
 - Improved consistency of indentation.
 - Updated copyright and description headers.
This commit is contained in:
Jason Watkins
2015-04-15 14:41:23 -07:00
parent 8591db96c0
commit a6196dece9
4 changed files with 613 additions and 594 deletions

View File

@@ -1,63 +1,55 @@
// //Copyright (c) 2013-2015 United States Government as represented by the Administrator of the
// xPlaneConnect.c Beta //National Aeronautics and Space Administration. All Rights Reserved.
//
// DESCRIPTION
// XPLANECONNECT (XPC) Facilitates Communication to and from the XPCPlugin
//
// REQUIREMENTS
// 1. X-Plane Version 9.0 or newer (untested on previous versions)
// 2. XPCPlugin.xpl-must be placed in [X-Plane Directory]/Resources/plugins
// 3. OS X 10.8 or newer (untested on previous versions)
//
// INSTRUCTIONS
// 1. Include the header "xplaneConnect.h"
// EXAMPLE: #include "xplaneConnect.h"
// 2. Open UDP Socket using openUDP
// EXAMPLE: struct xpcSocket theSocket = openUDP(port_number);
// NOTE: Do not send/receive on the same socket
// 3. Use functions described below
// 4. Close UDP Socket using closeUDP
//
// NOTICES:
// Copyright ã 2013-2014 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.
// //
//DISCLAIMERS //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." // 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. // 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.
// X-Plane Connect Client
// //
// X-Plane API // DESCRIPTION
// Copyright (c) 2008, Sandy Barbour and Ben Supnik All rights reserved. // Communicates with the XPC plugin to facilitate controling and gathering data from X-Plane.
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Neither the names of the authors nor that of X-Plane or Laminar Research may be used to endorse or promote products derived from this software without specific prior written permission from the authors or Laminar Research, respectively.
// //
// X-Plane API SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // INSTRUCTIONS
// See Readme.md in the root of this repository or the wiki hosted on GitHub at
// https://github.com/nasa/XPlaneConnect/wiki for requirements, installation instructions,
// and detailed documentation.
// //
// CONTACT // CONTACT
// For questions email Christopher Teubert (christopher.a.teubert@nasa.gov) // For questions email Christopher Teubert (christopher.a.teubert@nasa.gov)
// //
// TO DO // CONTRIBUTORS
// 1. Update SelectData // CT: Christopher Teubert (christopher.a.teubert@nasa.gov)
// 2. RequestDREF: look into removing DREFSizes // JW: Jason Watkins (jason.w.watkins@nasa.gov)
// #include "xplaneConnect.h"
// BEGIN CODE
#include <math.h>
#include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h>
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <time.h> #include <time.h>
#include <math.h>
#include "xplaneConnect.h"
#ifdef _WIN32 /* WIN32 SYSTEM */ #ifdef _WIN32 /* WIN32 SYSTEM */
#include <WS2tcpip.h> #include <WS2tcpip.h>
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define snprintf sprintf_s
#define socklen_t int
void usleep(__int64 usec) void usleep(__int64 usec)
{ // From http://www.c-plusplus.de/forum/109539-full { // From http://www.c-plusplus.de/forum/109539-full
@@ -74,7 +66,7 @@
#endif #endif
short errorReport(char *functionName, char *errorMessage); short errorReport(char *functionName, char *errorMessage);
short sendRequest(struct xpcSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength); short sendRequest(XPCSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength);
short errorReport(char *functionName, char *errorMessage) short errorReport(char *functionName, char *errorMessage)
{ {
@@ -82,9 +74,9 @@ short errorReport(char *functionName, char *errorMessage)
return -1; return -1;
} }
struct xpcSocket openUDP(unsigned short port_number, const char *xpIP, unsigned short xpPort) XPCSocket openUDP(unsigned short port_number, const char *xpIP, unsigned short xpPort)
{ {
struct xpcSocket theSocket; XPCSocket theSocket;
struct sockaddr_in server; struct sockaddr_in server;
#if (__APPLE__ || __linux) #if (__APPLE__ || __linux)
@@ -173,7 +165,7 @@ struct xpcSocket openUDP(unsigned short port_number, const char *xpIP, unsigned
return theSocket; return theSocket;
} }
void closeUDP(struct xpcSocket socketNumber) void closeUDP(XPCSocket socketNumber)
{ {
#ifdef _WIN32 #ifdef _WIN32
closesocket(socketNumber.sock); closesocket(socketNumber.sock);
@@ -182,7 +174,7 @@ void closeUDP(struct xpcSocket socketNumber)
#endif #endif
} }
short sendUDP(struct xpcSocket recfd, char my_message[], short messageLength) short sendUDP(XPCSocket recfd, char my_message[], short messageLength)
{ {
struct sockaddr_in servaddr; struct sockaddr_in servaddr;
@@ -216,7 +208,7 @@ short sendUDP(struct xpcSocket recfd, char my_message[], short messageLength)
return 0; return 0;
} }
short sendDATA(struct xpcSocket recfd, float dataRef[][9], unsigned short rows) short sendDATA(XPCSocket recfd, float dataRef[][9], unsigned short rows)
{ {
int i; int i;
unsigned short length = rows*9*sizeof(float) + 5; unsigned short length = rows*9*sizeof(float) + 5;
@@ -239,7 +231,7 @@ short sendDATA(struct xpcSocket recfd, float dataRef[][9], unsigned short rows)
return 0; return 0;
} }
short sendDREF(struct xpcSocket recfd, const char *dataRef, unsigned short length_of_DREF, float *values, unsigned short number_of_values) { short sendDREF(XPCSocket recfd, const char *dataRef, unsigned short length_of_DREF, float *values, unsigned short number_of_values) {
char message[5000]; char message[5000];
int length = 7+length_of_DREF+number_of_values*sizeof(float); int length = 7+length_of_DREF+number_of_values*sizeof(float);
@@ -258,7 +250,7 @@ short sendDREF(struct xpcSocket recfd, const char *dataRef, unsigned short lengt
return 0; return 0;
} }
short sendRequest(struct xpcSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength) short sendRequest(XPCSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength)
{ {
int i; int i;
char message[5000]={0}; char message[5000]={0};
@@ -282,7 +274,7 @@ short sendRequest(struct xpcSocket recfd, char DREFArray[][100], short DREFSizes
return 0; return 0;
} }
short requestDREF(struct xpcSocket sendfd, struct xpcSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength, float *resultArray[], short arraySizes[]) short requestDREF(XPCSocket sendfd, XPCSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength, float *resultArray[], short arraySizes[])
{ {
int i; int i;
@@ -300,7 +292,7 @@ short requestDREF(struct xpcSocket sendfd, struct xpcSocket recfd, char DREFArra
return -1; return -1;
} }
short pauseSim(struct xpcSocket recfd, short pause) short pauseSim(XPCSocket recfd, short pause)
{ {
char message[7]; char message[7];
@@ -319,7 +311,7 @@ short pauseSim(struct xpcSocket recfd, short pause)
return 0; return 0;
} }
short setCONN(struct xpcSocket recfd, unsigned short recPort) short setCONN(XPCSocket recfd, unsigned short recPort)
{ {
char message[10] = {0}; char message[10] = {0};
int length; int length;
@@ -334,7 +326,7 @@ short setCONN(struct xpcSocket recfd, unsigned short recPort)
return 0; return 0;
} }
short sendPOSI(struct xpcSocket recfd, short ACNum, short numArgs, float valueArray[]) short sendPOSI(XPCSocket recfd, short ACNum, short numArgs, float valueArray[])
{ {
char message[40] = {0}; char message[40] = {0};
int i; int i;
@@ -371,12 +363,12 @@ short sendPOSI(struct xpcSocket recfd, short ACNum, short numArgs, float valueAr
return 0; return 0;
} }
short sendCTRL(struct xpcSocket recfd, short numArgs, float valueArray[]) short sendCTRL(XPCSocket recfd, short numArgs, float valueArray[])
{ {
return sendpCTRL(recfd, numArgs, valueArray, 0); return sendpCTRL(recfd, numArgs, valueArray, 0);
} }
short sendpCTRL(struct xpcSocket recfd, short numArgs, float valueArray[], char acNum) short sendpCTRL(XPCSocket recfd, short numArgs, float valueArray[], char acNum)
{ {
char message[27] = { 0 }; char message[27] = { 0 };
int i; int i;
@@ -419,7 +411,7 @@ short sendpCTRL(struct xpcSocket recfd, short numArgs, float valueArray[], char
return 0; return 0;
} }
short sendTEXT(struct xpcSocket sendfd, char* msg, int x, int y) short sendTEXT(XPCSocket sendfd, char* msg, int x, int y)
{ {
char buf[269] = { 0 }; char buf[269] = { 0 };
size_t msgLen = strnlen(msg, 255); size_t msgLen = strnlen(msg, 255);
@@ -434,7 +426,7 @@ short sendTEXT(struct xpcSocket sendfd, char* msg, int x, int y)
return 0; return 0;
} }
short sendWYPT(struct xpcSocket sendfd, WYPT_OP op, float points[], int numPoints) short sendWYPT(XPCSocket sendfd, WYPT_OP op, float points[], int numPoints)
{ {
char buf[255] = "WYPT"; char buf[255] = "WYPT";
//Preconditions //Preconditions
@@ -462,7 +454,7 @@ short sendWYPT(struct xpcSocket sendfd, WYPT_OP op, float points[], int numPoint
//READ //READ
//---------------------------------------- //----------------------------------------
short readUDP(struct xpcSocket recfd, char *dataRef, struct sockaddr *recvaddr) short readUDP(XPCSocket recfd, char *dataRef, struct sockaddr *recvaddr)
{ {
socklen_t recvaddrlen = sizeof(*recvaddr); socklen_t recvaddrlen = sizeof(*recvaddr);
int status = 0; int status = 0;
@@ -508,7 +500,7 @@ short readUDP(struct xpcSocket recfd, char *dataRef, struct sockaddr *recvaddr)
return status; return status;
} }
short readDATA(struct xpcSocket recfd, float dataRef[][9]) short readDATA(XPCSocket recfd, float dataRef[][9])
{ {
char buf[5000]; char buf[5000];
int buflen = readUDP(recfd,buf, NULL); int buflen = readUDP(recfd,buf, NULL);
@@ -520,7 +512,7 @@ short readDATA(struct xpcSocket recfd, float dataRef[][9])
return -1; return -1;
} }
short readRequest(struct xpcSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr) short readRequest(XPCSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr)
{ {
char buf[5000]; char buf[5000];
readUDP(recfd,buf, recvaddr); readUDP(recfd,buf, recvaddr);
@@ -531,7 +523,7 @@ short readRequest(struct xpcSocket recfd, float *dataRef[], short arraySizes[],
return -1; return -1;
} }
short readDREF(struct xpcSocket recfd, float *resultArray[], short arraySizes[]) short readDREF(XPCSocket recfd, float *resultArray[], short arraySizes[])
{ {
char buf[5000] = {0}; char buf[5000] = {0};
readUDP(recfd,buf, NULL); readUDP(recfd,buf, NULL);
@@ -543,7 +535,7 @@ short readDREF(struct xpcSocket recfd, float *resultArray[], short arraySizes[])
return -1; return -1;
} }
short readPOSI(struct xpcSocket recfd, float resultArray[], int arraySize, float *gear) short readPOSI(XPCSocket recfd, float resultArray[], int arraySize, float *gear)
{ {
char buf[5000] = {0}; char buf[5000] = {0};
readUDP(recfd,buf, NULL); readUDP(recfd,buf, NULL);
@@ -555,7 +547,7 @@ short readPOSI(struct xpcSocket recfd, float resultArray[], int arraySize, floa
return -1; return -1;
} }
xpcCtrl readCTRL(struct xpcSocket recfd) xpcCtrl readCTRL(XPCSocket recfd)
{ {
xpcCtrl result; xpcCtrl result;
char buf[5000] = { 0 }; char buf[5000] = { 0 };

View File

@@ -1,16 +1,34 @@
//Copyright (c) 2013-2015 United States Government as represented by the Administrator of the
//National Aeronautics and Space Administration. All Rights Reserved.
// //
// xplaneConnect.h //DISCLAIMERS
// // No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND,
// Created by Chris Teubert on 12/2/13. // 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 xplaneConnect_h
#define xplaneConnect_h
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifndef xplaneConnect_h #include "stdlib.h"
#define xplaneConnect_h
#ifdef _WIN32 /* WIN32 SYSTEM */ #ifdef _WIN32 /* WIN32 SYSTEM */
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
@@ -22,20 +40,21 @@
#include <unistd.h> #include <unistd.h>
#endif #endif
struct xpcSocket { typedef struct
short open; {
char open;
unsigned short port; unsigned short port;
// X-Plane IP and Port // X-Plane IP and Port
char xpIP[16]; char xpIP[16];
unsigned short xpPort; unsigned short xpPort;
#ifdef _WIN32 /* WIN32 SYSTEM */ #ifdef _WIN32
SOCKET sock; SOCKET sock;
#elif (__APPLE__ || __linux) //OS X/Linux #else
int sock; int sock;
#endif #endif
}; } XPCSocket;
typedef struct typedef struct
{ {
@@ -70,50 +89,50 @@
} xpcWypt; } xpcWypt;
// Basic Functions // Basic Functions
struct xpcSocket openUDP(unsigned short port, const char *xpIP, unsigned short xpPort); XPCSocket openUDP(unsigned short port, const char *xpIP, unsigned short xpPort);
void closeUDP(struct xpcSocket); void closeUDP(XPCSocket sock);
short sendUDP(struct xpcSocket recfd, char my_message[], short messageLength); int sendUDP(XPCSocket sock, char buffer[], int len);
short readUDP(struct xpcSocket recfd, char *dataRef, struct sockaddr *recvaddr); int readUDP(XPCSocket sock, char buffer[], int len, struct sockaddr* recvaddr);
// Configuration // Configuration
short setCONN(struct xpcSocket recfd, unsigned short recPort); short setCONN(XPCSocket recfd, unsigned short recPort);
short pauseSim(struct xpcSocket recfd, short); short pauseSim(XPCSocket recfd, short);
// UDP DATA // UDP DATA
short parseDATA(const char my_message[], short messageLength, float dataRef[][9]); short parseDATA(const char my_message[], short messageLength, float dataRef[][9]);
short readDATA(struct xpcSocket recfd, float dataRef[][9]); short readDATA(XPCSocket recfd, float dataRef[][9]);
short sendDATA(struct xpcSocket recfd, float dataRef[][9], unsigned short rows); short sendDATA(XPCSocket recfd, float dataRef[][9], unsigned short rows);
// Position // Position
short parsePOSI(const char my_message[], float resultArray[], int arraySize, float *gear); short parsePOSI(const char my_message[], float resultArray[], int arraySize, float *gear);
short readPOSI(struct xpcSocket recfd, float resultArray[], int arraySize, float *gear); short readPOSI(XPCSocket recfd, float resultArray[], int arraySize, float *gear);
short sendPOSI(struct xpcSocket recfd, short ACNum, short numArgs, float valueArray[]); short sendPOSI(XPCSocket recfd, short ACNum, short numArgs, float valueArray[]);
// Controls // Controls
xpcCtrl parseCTRL(const char data[]); xpcCtrl parseCTRL(const char data[]);
xpcCtrl readCTRL(struct xpcSocket recfd); xpcCtrl readCTRL(XPCSocket recfd);
short sendCTRL(struct xpcSocket recfd, short numArgs, float valueArray[]); short sendCTRL(XPCSocket recfd, short numArgs, float valueArray[]);
short sendpCTRL(struct xpcSocket recfd, short numArgs, float valueArray[], char acNum); short sendpCTRL(XPCSocket recfd, short numArgs, float valueArray[], char acNum);
// DREF Manipulation // DREF Manipulation
short readDREF(struct xpcSocket recfd, float *resultArray[], short arraySizes[]); short readDREF(XPCSocket recfd, float *resultArray[], short arraySizes[]);
short parseDREF(const char my_message[], char *dataRef, unsigned short *length_of_DREF, float *values, unsigned short *number_of_values); short parseDREF(const char my_message[], char *dataRef, unsigned short *length_of_DREF, float *values, unsigned short *number_of_values);
short sendDREF(struct xpcSocket recfd, const char *dataRef, unsigned short length_of_DREF, float *values, unsigned short number_of_values); short sendDREF(XPCSocket recfd, const char *dataRef, unsigned short length_of_DREF, float *values, unsigned short number_of_values);
short requestDREF(struct xpcSocket sendfd, struct xpcSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength, float *resultArray[], short arraySizes[]); short requestDREF(XPCSocket sendfd, XPCSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength, float *resultArray[], short arraySizes[]);
int parseGETD(const char my_message[], char *DREFArray[], int DREFSizes[]); int parseGETD(const char my_message[], char *DREFArray[], int DREFSizes[]);
short parseRequest(const char my_message[], float *resultArray[], short arraySizes[]); short parseRequest(const char my_message[], float *resultArray[], short arraySizes[]);
short readRequest(struct xpcSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr); short readRequest(XPCSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr);
// Waypoints // Waypoints
xpcWypt parseWYPT(const char data[]); xpcWypt parseWYPT(const char data[]);
short sendWYPT(struct xpcSocket sendfd, WYPT_OP op, float points[], int numPoints); short sendWYPT(XPCSocket sendfd, WYPT_OP op, float points[], int numPoints);
// Screen Text // Screen Text
short sendTEXT(struct xpcSocket sendfd, char* msg, int x, int y); short sendTEXT(XPCSocket sendfd, char* msg, int x, int y);
#endif //ifdef _h
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif //ifdef _h

View File

@@ -22,6 +22,9 @@
<ClCompile Include="..\..\C\src\xplaneConnect.c" /> <ClCompile Include="..\..\C\src\xplaneConnect.c" />
<ClCompile Include="..\C Tests\main.c" /> <ClCompile Include="..\C Tests\main.c" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\C\src\xplaneConnect.h" />
</ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{BC701AF4-552C-4C9D-82A1-B352542783A4}</ProjectGuid> <ProjectGuid>{BC701AF4-552C-4C9D-82A1-B352542783A4}</ProjectGuid>
<RootNamespace>CTests</RootNamespace> <RootNamespace>CTests</RootNamespace>

View File

@@ -22,4 +22,9 @@
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\C\src\xplaneConnect.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project> </Project>