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
Diff: LocalConfigFile/LocalConfigFile.cpp
- Revision:
- 0:a5d13af495af
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LocalConfigFile/LocalConfigFile.cpp Wed Dec 21 22:29:59 2011 +0000 @@ -0,0 +1,114 @@ +#include <ctype.h> +#include "LocalConfigFile.h" + +LocalConfigFile::LocalConfigFile(char *filename) { + LocalFileSystem localFileSys("local"); // create the local filesystem under the name "local" + sprintf(_buf, "/local/%s", filename); // set full file path into _buf + printf("Reading config file: %s ... ", _buf); + if (read(_buf)) { + printf("Success \n"); + } + else { + printf("Problem \n"); + } +} + +char LocalConfigFile::getChar(char *key, char defaultVal) { + if (getValueIntoBuf(key)) { + if (strlen(_buf) > 0) { + return _buf[0]; + } + else { + printf("getChar(key='%s'): Problem \n", key); + } + } + return defaultVal; +} + +bool LocalConfigFile::getBool(char *key, bool defaultVal) { + char c = getChar(key, '.'); + if (c != '.') { + c = toupper(c); + return (c == 'T' || c == 'Y' || c == '1'); + } + else { + printf("getBool(key='%s'): Problem \n", key); + } + return defaultVal; +} + +int LocalConfigFile::getInt(char *key, int defaultVal) { + if (getValueIntoBuf(key)) { + int val; + int cnt = sscanf(_buf, "%d", &val); + if (cnt == 1) { + return val; + } + else { + printf("getInt(key='%s'): Problem \n", key); + } + } + return defaultVal; +} + +PinName LocalConfigFile::getPin(char *key, PinName defaultVal) { + const PinName pinName[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, + p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30}; + int p = getInt(key, -1); + if (p == -1) { + printf("getPin(key='%s'): Problem \n", key); + } + else if (p < 5 || p > 30) { + printf("getPin(key='%s'): Invalid pin#: %d. Pin# must be between 5 and 30, inclusive.\n", key, p); + } + else { + return pinName[p - 5]; + } + return defaultVal; +} + +bool LocalConfigFile::fillIntArray4(char *key, int *intArray) { + if (getValueIntoBuf(key)) { + int a0, a1, a2, a3; + int cnt = sscanf(_buf, "%d %d %d %d", &a0, &a1, &a2, &a3); + if (cnt == 4) { + intArray[0] = a0; + intArray[1] = a1; + intArray[2] = a2; + intArray[3] = a3; + return true; + } + else { + printf("fillIntArray4(key='%s'): Problem \n", key); + } + } + return false; +} + +bool LocalConfigFile::fillFloatArray4(char *key, float *floatArray) { + if (getValueIntoBuf(key)) { + float a0, a1, a2, a3; + int cnt = sscanf(_buf, "%f %f %f %f", &a0, &a1, &a2, &a3); + if (cnt == 4) { + floatArray[0] = a0; + floatArray[1] = a1; + floatArray[2] = a2; + floatArray[3] = a3; + return true; + } + else { + printf("fillFloatArray4(key='%s'): Problem \n", key); + } + } + return false; +} + +bool LocalConfigFile::getValueIntoBuf(char *key) { + if (getValue(key, _buf, sizeof(_buf))) { + return true; + } + else { + printf("LocalConfigFile.getValueIntoBuf(key='%s'): Problem, or config key not found \n", key); + return false; + } +}