The xplane_io (X-Plane I/O) program is used to establish network communications, via UDP, with the X-Plane flight simulator running on a computer. The code consists of class libraries that abstract the lower-level UDP packet encoding and decoding details, according to the UDP protocol specifications in X-Plane version 9. Any X-Plane DATA packets can be sent and received, and any X-Plane DataRefs can be set by sending DREF packets to X-Plane.

Dependencies:   EthernetNetIf mbed ConfigFile

Committer:
bapowell
Date:
Wed Dec 21 22:29:59 2011 +0000
Revision:
0:a5d13af495af

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bapowell 0:a5d13af495af 1 #include "XPlaneUdpDREF.h"
bapowell 0:a5d13af495af 2
bapowell 0:a5d13af495af 3
bapowell 0:a5d13af495af 4 XPlaneUdpDREF::XPlaneUdpDREF(char * drefName, bool reverseByteOrder) {
bapowell 0:a5d13af495af 5
bapowell 0:a5d13af495af 6 _drefName = drefName;
bapowell 0:a5d13af495af 7 _reverseByteOrder = reverseByteOrder;
bapowell 0:a5d13af495af 8
bapowell 0:a5d13af495af 9 _dataChanged = false;
bapowell 0:a5d13af495af 10 _drefFloat = DREF_VALUE_NA;
bapowell 0:a5d13af495af 11 _drefInt = DREF_VALUE_NA;
bapowell 0:a5d13af495af 12 }
bapowell 0:a5d13af495af 13
bapowell 0:a5d13af495af 14
bapowell 0:a5d13af495af 15 char * XPlaneUdpDREF::drefName() const {
bapowell 0:a5d13af495af 16 return _drefName;
bapowell 0:a5d13af495af 17 }
bapowell 0:a5d13af495af 18
bapowell 0:a5d13af495af 19 float XPlaneUdpDREF::drefFloat() const {
bapowell 0:a5d13af495af 20 return _drefFloat;
bapowell 0:a5d13af495af 21 }
bapowell 0:a5d13af495af 22
bapowell 0:a5d13af495af 23 int XPlaneUdpDREF::drefInt() const {
bapowell 0:a5d13af495af 24 return _drefInt;
bapowell 0:a5d13af495af 25 }
bapowell 0:a5d13af495af 26
bapowell 0:a5d13af495af 27 void XPlaneUdpDREF::drefFloat(float floatVal) {
bapowell 0:a5d13af495af 28 _drefFloat = floatVal;
bapowell 0:a5d13af495af 29 _drefInt = DREF_VALUE_NA;
bapowell 0:a5d13af495af 30 setDataChanged();
bapowell 0:a5d13af495af 31 }
bapowell 0:a5d13af495af 32
bapowell 0:a5d13af495af 33 void XPlaneUdpDREF::drefInt(int intVal) {
bapowell 0:a5d13af495af 34 _drefInt = intVal;
bapowell 0:a5d13af495af 35 _drefFloat = DREF_VALUE_NA;
bapowell 0:a5d13af495af 36 setDataChanged();
bapowell 0:a5d13af495af 37 }
bapowell 0:a5d13af495af 38
bapowell 0:a5d13af495af 39 /**
bapowell 0:a5d13af495af 40 * Starting at the given pointer location, populate bytes from the dataRef value and name.
bapowell 0:a5d13af495af 41 * Byte order will be reversed, according to the reverseBytes property.
bapowell 0:a5d13af495af 42 */
bapowell 0:a5d13af495af 43
bapowell 0:a5d13af495af 44 void XPlaneUdpDREF::populateDREFMessage(char * bytes) {
bapowell 0:a5d13af495af 45
bapowell 0:a5d13af495af 46 if (_drefInt != DREF_VALUE_NA) {
bapowell 0:a5d13af495af 47 memcpy(bytes, &_drefInt, 4);
bapowell 0:a5d13af495af 48 }
bapowell 0:a5d13af495af 49 else {
bapowell 0:a5d13af495af 50 memcpy(bytes, &_drefFloat, 4);
bapowell 0:a5d13af495af 51 }
bapowell 0:a5d13af495af 52
bapowell 0:a5d13af495af 53 if (_reverseByteOrder) {
bapowell 0:a5d13af495af 54 reverse4Bytes((char*) bytes);
bapowell 0:a5d13af495af 55 }
bapowell 0:a5d13af495af 56
bapowell 0:a5d13af495af 57 strcpy(bytes + 4, _drefName);
bapowell 0:a5d13af495af 58 }
bapowell 0:a5d13af495af 59
bapowell 0:a5d13af495af 60 bool XPlaneUdpDREF::isDataChanged() const {
bapowell 0:a5d13af495af 61 return _dataChanged;
bapowell 0:a5d13af495af 62 }
bapowell 0:a5d13af495af 63
bapowell 0:a5d13af495af 64 void XPlaneUdpDREF::setDataChanged() {
bapowell 0:a5d13af495af 65 _dataChanged = true;
bapowell 0:a5d13af495af 66 }
bapowell 0:a5d13af495af 67
bapowell 0:a5d13af495af 68 void XPlaneUdpDREF::resetDataChanged() {
bapowell 0:a5d13af495af 69 _dataChanged = false;
bapowell 0:a5d13af495af 70 }
bapowell 0:a5d13af495af 71
bapowell 0:a5d13af495af 72 void XPlaneUdpDREF::toString(FILE * outputStream) {
bapowell 0:a5d13af495af 73 fprintf(outputStream, "DataRef: name=%s, intVal=%d, floatVal=%f, revBytes=%d",
bapowell 0:a5d13af495af 74 _drefName, _drefInt, _drefFloat, _reverseByteOrder);
bapowell 0:a5d13af495af 75 }