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
XPlaneUdp/XPlaneUdpDREF.cpp
- Committer:
- bapowell
- Date:
- 2011-12-21
- Revision:
- 0:a5d13af495af
File content as of revision 0:a5d13af495af:
#include "XPlaneUdpDREF.h" XPlaneUdpDREF::XPlaneUdpDREF(char * drefName, bool reverseByteOrder) { _drefName = drefName; _reverseByteOrder = reverseByteOrder; _dataChanged = false; _drefFloat = DREF_VALUE_NA; _drefInt = DREF_VALUE_NA; } char * XPlaneUdpDREF::drefName() const { return _drefName; } float XPlaneUdpDREF::drefFloat() const { return _drefFloat; } int XPlaneUdpDREF::drefInt() const { return _drefInt; } void XPlaneUdpDREF::drefFloat(float floatVal) { _drefFloat = floatVal; _drefInt = DREF_VALUE_NA; setDataChanged(); } void XPlaneUdpDREF::drefInt(int intVal) { _drefInt = intVal; _drefFloat = DREF_VALUE_NA; setDataChanged(); } /** * Starting at the given pointer location, populate bytes from the dataRef value and name. * Byte order will be reversed, according to the reverseBytes property. */ void XPlaneUdpDREF::populateDREFMessage(char * bytes) { if (_drefInt != DREF_VALUE_NA) { memcpy(bytes, &_drefInt, 4); } else { memcpy(bytes, &_drefFloat, 4); } if (_reverseByteOrder) { reverse4Bytes((char*) bytes); } strcpy(bytes + 4, _drefName); } bool XPlaneUdpDREF::isDataChanged() const { return _dataChanged; } void XPlaneUdpDREF::setDataChanged() { _dataChanged = true; } void XPlaneUdpDREF::resetDataChanged() { _dataChanged = false; } void XPlaneUdpDREF::toString(FILE * outputStream) { fprintf(outputStream, "DataRef: name=%s, intVal=%d, floatVal=%f, revBytes=%d", _drefName, _drefInt, _drefFloat, _reverseByteOrder); }