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 <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 }