diff --git a/C/src/xplaneConnect.c b/C/src/xplaneConnect.c index 9cc8575..bf76113 100755 --- a/C/src/xplaneConnect.c +++ b/C/src/xplaneConnect.c @@ -419,6 +419,20 @@ short sendpCTRL(struct xpcSocket recfd, short numArgs, float valueArray[], char return 0; } +short sendTEXT(struct xpcSocket sendfd, char* msg, int x, int y) +{ + char buf[269] = { 0 }; + size_t msgLen = strnlen(msg, 255); + size_t len = 14 + msgLen; + strcpy(buf, "TEXT"); + memcpy(buf + 5, &x, sizeof(int)); + memcpy(buf + 9, &y, sizeof(int)); + buf[13] = msgLen; + strncpy(buf + 14, msg, msgLen); + + sendUDP(sendfd, buf, len); +} + //READ //---------------------------------------- short readUDP(struct xpcSocket recfd, char *dataRef, struct sockaddr *recvaddr) diff --git a/C/src/xplaneConnect.h b/C/src/xplaneConnect.h index dff7b5d..f9d92e9 100644 --- a/C/src/xplaneConnect.h +++ b/C/src/xplaneConnect.h @@ -81,7 +81,11 @@ short requestDREF(struct xpcSocket sendfd, struct xpcSocket recfd, char DREFArray[][100], short DREFSizes[], short listLength, float *resultArray[], short arraySizes[]); int parseGETD(const char my_message[], char *DREFArray[], int DREFSizes[]); short parseRequest(const char my_message[], float *resultArray[], short arraySizes[]); - short readRequest(struct xpcSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr); + short readRequest(struct xpcSocket recfd, float *dataRef[], short arraySizes[], struct sockaddr *recvaddr); + + // Screen Text + short sendTEXT(struct xpcSocket sendfd, int x, int y, char* msg); + #endif //ifdef _h diff --git a/TestScripts/C Tests/main.c b/TestScripts/C Tests/main.c index 148637f..3da7739 100644 --- a/TestScripts/C Tests/main.c +++ b/TestScripts/C Tests/main.c @@ -84,6 +84,25 @@ short sendReadTest() // send/read Test return 0; } +short sendTEXTTest() +{ + printf("sendTEXT - "); + + // Setup + struct xpcSocket sendPort = openUDP(49064, "127.0.0.1", 49009); + int x = 100; + int y = 700; + char* msg = "XPlaneConnect test message. Now with 100% fewer new lines!"; + + // Test + sendTEXT(sendPort, msg, x, y); + // NOTE: Manually verify that msg appears on the screen in X-Plane! + + // Cleanup + closeUDP(sendPort); + return 0; +} + short requestDREFTest() // Request DREF Test (Required for next tests) { printf("requestDREF - "); @@ -542,15 +561,16 @@ int main(int argc, const char * argv[]) runTest(openTest); runTest(closeTest); - runTest(sendReadTest); + runTest(sendReadTest); + runTest(sendTEXTTest); runTest(requestDREFTest); runTest(sendDREFTest); runTest(sendDATATest); runTest(sendCTRLTest); runTest(sendpCTRLTest); runTest(sendPOSITest); - runTest(pauseTest); - runTest(connTest); + runTest(pauseTest); + runTest(connTest); printf( "----------------\nTest Summary\n\tFailed: %i\n\tPassed: %i\n", testFailed, testPassed );