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
LocalConfigFile/LocalConfigFile.cpp@0:a5d13af495af, 2011-12-21 (annotated)
- Committer:
- bapowell
- Date:
- Wed Dec 21 22:29:59 2011 +0000
- Revision:
- 0:a5d13af495af
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bapowell | 0:a5d13af495af | 1 | #include <ctype.h> |
bapowell | 0:a5d13af495af | 2 | #include "LocalConfigFile.h" |
bapowell | 0:a5d13af495af | 3 | |
bapowell | 0:a5d13af495af | 4 | LocalConfigFile::LocalConfigFile(char *filename) { |
bapowell | 0:a5d13af495af | 5 | LocalFileSystem localFileSys("local"); // create the local filesystem under the name "local" |
bapowell | 0:a5d13af495af | 6 | sprintf(_buf, "/local/%s", filename); // set full file path into _buf |
bapowell | 0:a5d13af495af | 7 | printf("Reading config file: %s ... ", _buf); |
bapowell | 0:a5d13af495af | 8 | if (read(_buf)) { |
bapowell | 0:a5d13af495af | 9 | printf("Success \n"); |
bapowell | 0:a5d13af495af | 10 | } |
bapowell | 0:a5d13af495af | 11 | else { |
bapowell | 0:a5d13af495af | 12 | printf("Problem \n"); |
bapowell | 0:a5d13af495af | 13 | } |
bapowell | 0:a5d13af495af | 14 | } |
bapowell | 0:a5d13af495af | 15 | |
bapowell | 0:a5d13af495af | 16 | char LocalConfigFile::getChar(char *key, char defaultVal) { |
bapowell | 0:a5d13af495af | 17 | if (getValueIntoBuf(key)) { |
bapowell | 0:a5d13af495af | 18 | if (strlen(_buf) > 0) { |
bapowell | 0:a5d13af495af | 19 | return _buf[0]; |
bapowell | 0:a5d13af495af | 20 | } |
bapowell | 0:a5d13af495af | 21 | else { |
bapowell | 0:a5d13af495af | 22 | printf("getChar(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 23 | } |
bapowell | 0:a5d13af495af | 24 | } |
bapowell | 0:a5d13af495af | 25 | return defaultVal; |
bapowell | 0:a5d13af495af | 26 | } |
bapowell | 0:a5d13af495af | 27 | |
bapowell | 0:a5d13af495af | 28 | bool LocalConfigFile::getBool(char *key, bool defaultVal) { |
bapowell | 0:a5d13af495af | 29 | char c = getChar(key, '.'); |
bapowell | 0:a5d13af495af | 30 | if (c != '.') { |
bapowell | 0:a5d13af495af | 31 | c = toupper(c); |
bapowell | 0:a5d13af495af | 32 | return (c == 'T' || c == 'Y' || c == '1'); |
bapowell | 0:a5d13af495af | 33 | } |
bapowell | 0:a5d13af495af | 34 | else { |
bapowell | 0:a5d13af495af | 35 | printf("getBool(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 36 | } |
bapowell | 0:a5d13af495af | 37 | return defaultVal; |
bapowell | 0:a5d13af495af | 38 | } |
bapowell | 0:a5d13af495af | 39 | |
bapowell | 0:a5d13af495af | 40 | int LocalConfigFile::getInt(char *key, int defaultVal) { |
bapowell | 0:a5d13af495af | 41 | if (getValueIntoBuf(key)) { |
bapowell | 0:a5d13af495af | 42 | int val; |
bapowell | 0:a5d13af495af | 43 | int cnt = sscanf(_buf, "%d", &val); |
bapowell | 0:a5d13af495af | 44 | if (cnt == 1) { |
bapowell | 0:a5d13af495af | 45 | return val; |
bapowell | 0:a5d13af495af | 46 | } |
bapowell | 0:a5d13af495af | 47 | else { |
bapowell | 0:a5d13af495af | 48 | printf("getInt(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 49 | } |
bapowell | 0:a5d13af495af | 50 | } |
bapowell | 0:a5d13af495af | 51 | return defaultVal; |
bapowell | 0:a5d13af495af | 52 | } |
bapowell | 0:a5d13af495af | 53 | |
bapowell | 0:a5d13af495af | 54 | PinName LocalConfigFile::getPin(char *key, PinName defaultVal) { |
bapowell | 0:a5d13af495af | 55 | const PinName pinName[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, |
bapowell | 0:a5d13af495af | 56 | p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30}; |
bapowell | 0:a5d13af495af | 57 | int p = getInt(key, -1); |
bapowell | 0:a5d13af495af | 58 | if (p == -1) { |
bapowell | 0:a5d13af495af | 59 | printf("getPin(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 60 | } |
bapowell | 0:a5d13af495af | 61 | else if (p < 5 || p > 30) { |
bapowell | 0:a5d13af495af | 62 | printf("getPin(key='%s'): Invalid pin#: %d. Pin# must be between 5 and 30, inclusive.\n", key, p); |
bapowell | 0:a5d13af495af | 63 | } |
bapowell | 0:a5d13af495af | 64 | else { |
bapowell | 0:a5d13af495af | 65 | return pinName[p - 5]; |
bapowell | 0:a5d13af495af | 66 | } |
bapowell | 0:a5d13af495af | 67 | return defaultVal; |
bapowell | 0:a5d13af495af | 68 | } |
bapowell | 0:a5d13af495af | 69 | |
bapowell | 0:a5d13af495af | 70 | bool LocalConfigFile::fillIntArray4(char *key, int *intArray) { |
bapowell | 0:a5d13af495af | 71 | if (getValueIntoBuf(key)) { |
bapowell | 0:a5d13af495af | 72 | int a0, a1, a2, a3; |
bapowell | 0:a5d13af495af | 73 | int cnt = sscanf(_buf, "%d %d %d %d", &a0, &a1, &a2, &a3); |
bapowell | 0:a5d13af495af | 74 | if (cnt == 4) { |
bapowell | 0:a5d13af495af | 75 | intArray[0] = a0; |
bapowell | 0:a5d13af495af | 76 | intArray[1] = a1; |
bapowell | 0:a5d13af495af | 77 | intArray[2] = a2; |
bapowell | 0:a5d13af495af | 78 | intArray[3] = a3; |
bapowell | 0:a5d13af495af | 79 | return true; |
bapowell | 0:a5d13af495af | 80 | } |
bapowell | 0:a5d13af495af | 81 | else { |
bapowell | 0:a5d13af495af | 82 | printf("fillIntArray4(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 83 | } |
bapowell | 0:a5d13af495af | 84 | } |
bapowell | 0:a5d13af495af | 85 | return false; |
bapowell | 0:a5d13af495af | 86 | } |
bapowell | 0:a5d13af495af | 87 | |
bapowell | 0:a5d13af495af | 88 | bool LocalConfigFile::fillFloatArray4(char *key, float *floatArray) { |
bapowell | 0:a5d13af495af | 89 | if (getValueIntoBuf(key)) { |
bapowell | 0:a5d13af495af | 90 | float a0, a1, a2, a3; |
bapowell | 0:a5d13af495af | 91 | int cnt = sscanf(_buf, "%f %f %f %f", &a0, &a1, &a2, &a3); |
bapowell | 0:a5d13af495af | 92 | if (cnt == 4) { |
bapowell | 0:a5d13af495af | 93 | floatArray[0] = a0; |
bapowell | 0:a5d13af495af | 94 | floatArray[1] = a1; |
bapowell | 0:a5d13af495af | 95 | floatArray[2] = a2; |
bapowell | 0:a5d13af495af | 96 | floatArray[3] = a3; |
bapowell | 0:a5d13af495af | 97 | return true; |
bapowell | 0:a5d13af495af | 98 | } |
bapowell | 0:a5d13af495af | 99 | else { |
bapowell | 0:a5d13af495af | 100 | printf("fillFloatArray4(key='%s'): Problem \n", key); |
bapowell | 0:a5d13af495af | 101 | } |
bapowell | 0:a5d13af495af | 102 | } |
bapowell | 0:a5d13af495af | 103 | return false; |
bapowell | 0:a5d13af495af | 104 | } |
bapowell | 0:a5d13af495af | 105 | |
bapowell | 0:a5d13af495af | 106 | bool LocalConfigFile::getValueIntoBuf(char *key) { |
bapowell | 0:a5d13af495af | 107 | if (getValue(key, _buf, sizeof(_buf))) { |
bapowell | 0:a5d13af495af | 108 | return true; |
bapowell | 0:a5d13af495af | 109 | } |
bapowell | 0:a5d13af495af | 110 | else { |
bapowell | 0:a5d13af495af | 111 | printf("LocalConfigFile.getValueIntoBuf(key='%s'): Problem, or config key not found \n", key); |
bapowell | 0:a5d13af495af | 112 | return false; |
bapowell | 0:a5d13af495af | 113 | } |
bapowell | 0:a5d13af495af | 114 | } |