mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   EthernetNetIf SDHCFileSystem I2CLEDDisp Agentbed NTPClient_NetServices mbed BMP085 HTTPClient ConfigFile I2CLCD

Committer:
okini3939
Date:
Fri Apr 01 23:37:04 2011 +0000
Revision:
16:df39da7bef98
Parent:
15:07bfa25ba6ae
Child:
18:9286e5010c14

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 9:8c63e4f3edab 1 /** @file
okini3939 9:8c63e4f3edab 2 * @brief mbed Weather Platform
okini3939 9:8c63e4f3edab 3 */
okini3939 9:8c63e4f3edab 4 #include "mbed.h"
okini3939 9:8c63e4f3edab 5 #include "conf.h"
okini3939 9:8c63e4f3edab 6 #include "ConfigFile.h"
okini3939 9:8c63e4f3edab 7
okini3939 10:848a2205aed1 8 extern Serial xbee;
okini3939 10:848a2205aed1 9 extern Config conf;
okini3939 14:ee6cc1632166 10 extern Sensor sensor, offset, sensor_old;
okini3939 11:c6356e5949cd 11
okini3939 11:c6356e5949cd 12 void int_counter();
okini3939 9:8c63e4f3edab 13
okini3939 9:8c63e4f3edab 14 char* chop (char *s) {
okini3939 9:8c63e4f3edab 15 int i;
okini3939 9:8c63e4f3edab 16
okini3939 9:8c63e4f3edab 17 for (i = strlen(s) - 1; i >= 0; i --) {
okini3939 9:8c63e4f3edab 18 if (s[i] == ' ' || s[i] == '\n' || s[i] == '\r') {
okini3939 9:8c63e4f3edab 19 s[i] = 0;
okini3939 9:8c63e4f3edab 20 } else {
okini3939 9:8c63e4f3edab 21 break;
okini3939 9:8c63e4f3edab 22 }
okini3939 9:8c63e4f3edab 23 }
okini3939 9:8c63e4f3edab 24 return s;
okini3939 9:8c63e4f3edab 25 }
okini3939 9:8c63e4f3edab 26
okini3939 9:8c63e4f3edab 27 int check_action (char type) {
okini3939 9:8c63e4f3edab 28 int i, j, count;
okini3939 14:ee6cc1632166 29 float value, vold;
okini3939 9:8c63e4f3edab 30 time_t sec = time(NULL) + (60 * 60 * 9);
okini3939 9:8c63e4f3edab 31 struct tm *tim = localtime(&sec);
okini3939 9:8c63e4f3edab 32
okini3939 9:8c63e4f3edab 33 for(i = 0; i < conf.actionscount; i ++) {
okini3939 9:8c63e4f3edab 34 if (conf.actions[i].action != type) continue;
okini3939 9:8c63e4f3edab 35
okini3939 9:8c63e4f3edab 36 count = 0;
okini3939 9:8c63e4f3edab 37 for (j = 0; j < conf.actions[i].count; j ++) {
okini3939 9:8c63e4f3edab 38 switch (conf.actions[i].exps[j].key) {
okini3939 9:8c63e4f3edab 39 case 'P':
okini3939 14:ee6cc1632166 40 value = sensor.pres;
okini3939 14:ee6cc1632166 41 vold = sensor_old.pres;
okini3939 9:8c63e4f3edab 42 break;
okini3939 9:8c63e4f3edab 43 case 'T':
okini3939 14:ee6cc1632166 44 value = sensor.temp;
okini3939 14:ee6cc1632166 45 vold = sensor_old.temp;
okini3939 9:8c63e4f3edab 46 break;
okini3939 9:8c63e4f3edab 47 case 'H':
okini3939 14:ee6cc1632166 48 value = sensor.humi;
okini3939 14:ee6cc1632166 49 vold = sensor_old.humi;
okini3939 9:8c63e4f3edab 50 break;
okini3939 9:8c63e4f3edab 51 case 'A':
okini3939 14:ee6cc1632166 52 value = sensor.anemo;
okini3939 14:ee6cc1632166 53 vold = sensor_old.anemo;
okini3939 9:8c63e4f3edab 54 break;
okini3939 9:8c63e4f3edab 55 case 'V':
okini3939 14:ee6cc1632166 56 value = sensor.vane;
okini3939 14:ee6cc1632166 57 vold = sensor_old.vane;
okini3939 9:8c63e4f3edab 58 break;
okini3939 9:8c63e4f3edab 59 case 'R':
okini3939 14:ee6cc1632166 60 value = sensor.rain;
okini3939 14:ee6cc1632166 61 vold = sensor_old.rain;
okini3939 14:ee6cc1632166 62 break;
okini3939 14:ee6cc1632166 63 case 'L':
okini3939 14:ee6cc1632166 64 value = sensor.light;
okini3939 14:ee6cc1632166 65 vold = sensor_old.light;
okini3939 14:ee6cc1632166 66 break;
okini3939 14:ee6cc1632166 67 case 'U':
okini3939 14:ee6cc1632166 68 value = sensor.uv;
okini3939 14:ee6cc1632166 69 vold = sensor_old.uv;
okini3939 14:ee6cc1632166 70 break;
okini3939 14:ee6cc1632166 71 case 'M':
okini3939 14:ee6cc1632166 72 value = sensor.moist;
okini3939 14:ee6cc1632166 73 vold = sensor_old.moist;
okini3939 9:8c63e4f3edab 74 break;
okini3939 9:8c63e4f3edab 75
okini3939 9:8c63e4f3edab 76 case 'y':
okini3939 9:8c63e4f3edab 77 value = tim->tm_year + 1900;
okini3939 9:8c63e4f3edab 78 break;
okini3939 9:8c63e4f3edab 79 case 'm':
okini3939 9:8c63e4f3edab 80 value = tim->tm_mon;
okini3939 9:8c63e4f3edab 81 break;
okini3939 9:8c63e4f3edab 82 case 'd':
okini3939 9:8c63e4f3edab 83 value = tim->tm_mday;
okini3939 9:8c63e4f3edab 84 break;
okini3939 9:8c63e4f3edab 85 case 'h':
okini3939 9:8c63e4f3edab 86 value = tim->tm_hour;
okini3939 9:8c63e4f3edab 87 break;
okini3939 9:8c63e4f3edab 88 case 'i':
okini3939 9:8c63e4f3edab 89 value = tim->tm_min;
okini3939 9:8c63e4f3edab 90 break;
okini3939 9:8c63e4f3edab 91 case 's':
okini3939 9:8c63e4f3edab 92 value = tim->tm_sec;
okini3939 9:8c63e4f3edab 93 break;
okini3939 9:8c63e4f3edab 94
okini3939 9:8c63e4f3edab 95 default:
okini3939 9:8c63e4f3edab 96 value = 0;
okini3939 9:8c63e4f3edab 97 break;
okini3939 9:8c63e4f3edab 98 }
okini3939 9:8c63e4f3edab 99
okini3939 9:8c63e4f3edab 100 switch (conf.actions[i].exps[j].expression) {
okini3939 9:8c63e4f3edab 101 case EXP_EQ:
okini3939 9:8c63e4f3edab 102 if (value == conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 103 count ++;
okini3939 9:8c63e4f3edab 104 }
okini3939 9:8c63e4f3edab 105 break;
okini3939 9:8c63e4f3edab 106 case EXP_NE:
okini3939 9:8c63e4f3edab 107 if (value != conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 108 count ++;
okini3939 9:8c63e4f3edab 109 }
okini3939 9:8c63e4f3edab 110 break;
okini3939 9:8c63e4f3edab 111 case EXP_LE:
okini3939 9:8c63e4f3edab 112 if (value <= conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 113 count ++;
okini3939 9:8c63e4f3edab 114 }
okini3939 9:8c63e4f3edab 115 break;
okini3939 9:8c63e4f3edab 116 case EXP_LT:
okini3939 9:8c63e4f3edab 117 if (value < conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 118 count ++;
okini3939 9:8c63e4f3edab 119 }
okini3939 9:8c63e4f3edab 120 break;
okini3939 9:8c63e4f3edab 121 case EXP_GE:
okini3939 9:8c63e4f3edab 122 if (value >= conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 123 count ++;
okini3939 9:8c63e4f3edab 124 }
okini3939 9:8c63e4f3edab 125 break;
okini3939 9:8c63e4f3edab 126 case EXP_GT:
okini3939 9:8c63e4f3edab 127 if (value > conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 128 count ++;
okini3939 9:8c63e4f3edab 129 }
okini3939 9:8c63e4f3edab 130 break;
okini3939 9:8c63e4f3edab 131 case EXP_MOD:
okini3939 9:8c63e4f3edab 132 if ((int)value % (int)conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 133 count ++;
okini3939 9:8c63e4f3edab 134 }
okini3939 9:8c63e4f3edab 135 break;
okini3939 9:8c63e4f3edab 136 case EXP_NMOD:
okini3939 9:8c63e4f3edab 137 if (! (int)value % (int)conf.actions[i].exps[j].value) {
okini3939 9:8c63e4f3edab 138 count ++;
okini3939 9:8c63e4f3edab 139 }
okini3939 9:8c63e4f3edab 140 break;
okini3939 14:ee6cc1632166 141 case EXP_FALL:
okini3939 14:ee6cc1632166 142 if (value < conf.actions[i].exps[j].value && vold >= conf.actions[i].exps[j].value) {
okini3939 14:ee6cc1632166 143 count ++;
okini3939 14:ee6cc1632166 144 }
okini3939 14:ee6cc1632166 145 break;
okini3939 14:ee6cc1632166 146 case EXP_RISE:
okini3939 14:ee6cc1632166 147 if (value > conf.actions[i].exps[j].value && vold <= conf.actions[i].exps[j].value) {
okini3939 14:ee6cc1632166 148 count ++;
okini3939 14:ee6cc1632166 149 }
okini3939 14:ee6cc1632166 150 break;
okini3939 9:8c63e4f3edab 151
okini3939 9:8c63e4f3edab 152 default:
okini3939 9:8c63e4f3edab 153 count ++;
okini3939 9:8c63e4f3edab 154 break;
okini3939 9:8c63e4f3edab 155 }
okini3939 9:8c63e4f3edab 156 }
okini3939 9:8c63e4f3edab 157 if (count == conf.actions[i].count) {
okini3939 15:07bfa25ba6ae 158 return conf.actions[i].sub ? conf.actions[i].sub : ' ';
okini3939 9:8c63e4f3edab 159 }
okini3939 9:8c63e4f3edab 160 }
okini3939 9:8c63e4f3edab 161 return 0;
okini3939 9:8c63e4f3edab 162 }
okini3939 9:8c63e4f3edab 163
okini3939 9:8c63e4f3edab 164 void add_actionsub (struct tExpression *exp, char *buf) {
okini3939 9:8c63e4f3edab 165
okini3939 9:8c63e4f3edab 166 exp->key = buf[0];
okini3939 9:8c63e4f3edab 167
okini3939 9:8c63e4f3edab 168 switch (buf[1]) {
okini3939 9:8c63e4f3edab 169 case '=':
okini3939 9:8c63e4f3edab 170 if (buf[2] == '=') {
okini3939 9:8c63e4f3edab 171 exp->expression = EXP_EQ;
okini3939 9:8c63e4f3edab 172 exp->value = atof(&buf[3]);
okini3939 9:8c63e4f3edab 173 }
okini3939 9:8c63e4f3edab 174 break;
okini3939 9:8c63e4f3edab 175
okini3939 9:8c63e4f3edab 176 case '!':
okini3939 9:8c63e4f3edab 177 if (buf[2] == '=') {
okini3939 9:8c63e4f3edab 178 exp->expression = EXP_NE;
okini3939 9:8c63e4f3edab 179 exp->value = atof(&buf[3]);
okini3939 9:8c63e4f3edab 180 } else
okini3939 9:8c63e4f3edab 181 if (buf[2] == '%') {
okini3939 9:8c63e4f3edab 182 exp->expression = EXP_NMOD;
okini3939 9:8c63e4f3edab 183 exp->value = atof(&buf[3]);
okini3939 9:8c63e4f3edab 184 }
okini3939 9:8c63e4f3edab 185 break;
okini3939 9:8c63e4f3edab 186
okini3939 9:8c63e4f3edab 187 case '<':
okini3939 9:8c63e4f3edab 188 if (buf[2] == '=') {
okini3939 9:8c63e4f3edab 189 exp->expression = EXP_LE;
okini3939 9:8c63e4f3edab 190 exp->value = atof(&buf[3]);
okini3939 9:8c63e4f3edab 191 } else {
okini3939 9:8c63e4f3edab 192 exp->expression = EXP_LT;
okini3939 9:8c63e4f3edab 193 exp->value = atof(&buf[2]);
okini3939 9:8c63e4f3edab 194 }
okini3939 9:8c63e4f3edab 195 break;
okini3939 9:8c63e4f3edab 196
okini3939 9:8c63e4f3edab 197 case '>':
okini3939 9:8c63e4f3edab 198 if (buf[2] == '=') {
okini3939 9:8c63e4f3edab 199 exp->expression = EXP_GE;
okini3939 9:8c63e4f3edab 200 exp->value = atof(&buf[3]);
okini3939 9:8c63e4f3edab 201 } else {
okini3939 9:8c63e4f3edab 202 exp->expression = EXP_GT;
okini3939 9:8c63e4f3edab 203 exp->value = atof(&buf[2]);
okini3939 9:8c63e4f3edab 204 }
okini3939 9:8c63e4f3edab 205 break;
okini3939 9:8c63e4f3edab 206
okini3939 9:8c63e4f3edab 207 case '%':
okini3939 9:8c63e4f3edab 208 exp->expression = EXP_MOD;
okini3939 9:8c63e4f3edab 209 exp->value = atof(&buf[2]);
okini3939 9:8c63e4f3edab 210 break;
okini3939 14:ee6cc1632166 211
okini3939 14:ee6cc1632166 212 case '_':
okini3939 14:ee6cc1632166 213 exp->expression = EXP_FALL;
okini3939 14:ee6cc1632166 214 exp->value = atof(&buf[2]);
okini3939 14:ee6cc1632166 215 break;
okini3939 14:ee6cc1632166 216 case '^':
okini3939 14:ee6cc1632166 217 exp->expression = EXP_RISE;
okini3939 14:ee6cc1632166 218 exp->value = atof(&buf[2]);
okini3939 14:ee6cc1632166 219 break;
okini3939 14:ee6cc1632166 220
okini3939 9:8c63e4f3edab 221 default:
okini3939 9:8c63e4f3edab 222 exp->expression = EXP_NULL;
okini3939 9:8c63e4f3edab 223 break;
okini3939 9:8c63e4f3edab 224 }
okini3939 9:8c63e4f3edab 225 }
okini3939 9:8c63e4f3edab 226
okini3939 9:8c63e4f3edab 227 void add_action (char *buf) {
okini3939 9:8c63e4f3edab 228 int i, len, count;
okini3939 9:8c63e4f3edab 229 char c;
okini3939 9:8c63e4f3edab 230 char *tmp = NULL;
okini3939 9:8c63e4f3edab 231
okini3939 9:8c63e4f3edab 232 if (conf.actionscount >= CF_ACTION_NUM) return;
okini3939 9:8c63e4f3edab 233
okini3939 9:8c63e4f3edab 234 // conf.actions[conf.actionscount].action = atoi(&buf[0]);
okini3939 9:8c63e4f3edab 235 conf.actions[conf.actionscount].action = buf[0];
okini3939 15:07bfa25ba6ae 236 conf.actions[conf.actionscount].sub = buf[1];
okini3939 9:8c63e4f3edab 237
okini3939 9:8c63e4f3edab 238 count = 0;
okini3939 9:8c63e4f3edab 239 strcat(buf, "\n");
okini3939 9:8c63e4f3edab 240 len = strlen(buf);
okini3939 15:07bfa25ba6ae 241 for (i = 1; i < len; i ++) {
okini3939 9:8c63e4f3edab 242 c = buf[i];
okini3939 9:8c63e4f3edab 243 if (c == ' ' || c == '\t' || c == '\n' || c == '\r') {
okini3939 9:8c63e4f3edab 244 buf[i] = 0;
okini3939 9:8c63e4f3edab 245 if (count) {
okini3939 9:8c63e4f3edab 246 add_actionsub(&conf.actions[conf.actionscount].exps[count - 1], tmp);
okini3939 9:8c63e4f3edab 247 }
okini3939 9:8c63e4f3edab 248 if (count >= CF_ACTION_EXPS || c == '\n') break;
okini3939 9:8c63e4f3edab 249 tmp = &buf[i + 1];
okini3939 9:8c63e4f3edab 250 count ++;
okini3939 9:8c63e4f3edab 251 }
okini3939 9:8c63e4f3edab 252 }
okini3939 9:8c63e4f3edab 253
okini3939 9:8c63e4f3edab 254 conf.actions[conf.actionscount].count = count;
okini3939 9:8c63e4f3edab 255 conf.actionscount ++;
okini3939 9:8c63e4f3edab 256 }
okini3939 9:8c63e4f3edab 257
okini3939 9:8c63e4f3edab 258 int config (char *file) {
okini3939 9:8c63e4f3edab 259 int i;
okini3939 9:8c63e4f3edab 260 ConfigFile cfg;
okini3939 9:8c63e4f3edab 261 char buf[80], key[20];
okini3939 9:8c63e4f3edab 262 int ip0, ip1, ip2, ip3;
okini3939 10:848a2205aed1 263
okini3939 9:8c63e4f3edab 264 conf.ipaddr = IpAddr(0, 0, 0, 0);
okini3939 9:8c63e4f3edab 265 conf.netmask = IpAddr(255, 255, 255, 0);
okini3939 9:8c63e4f3edab 266 conf.gateway = IpAddr(0, 0, 0, 0);
okini3939 9:8c63e4f3edab 267 conf.nameserver = IpAddr(0, 0, 0, 0);
okini3939 9:8c63e4f3edab 268 conf.interval = 60;
okini3939 9:8c63e4f3edab 269 conf.ntpserver[0] = 0;
okini3939 9:8c63e4f3edab 270 conf.filetype = 0;
okini3939 9:8c63e4f3edab 271 conf.actionscount = 0;
okini3939 9:8c63e4f3edab 272 conf.pachube_apikey[0] = 0;
okini3939 9:8c63e4f3edab 273 conf.pachube_feedid[0] = 0;
okini3939 9:8c63e4f3edab 274 conf.twitter_user[0] = 0;
okini3939 9:8c63e4f3edab 275 conf.twitter_pwd[0] = 0;
okini3939 15:07bfa25ba6ae 276 for (i = 0; i < CF_TWITTER_NUM; i ++) {
okini3939 15:07bfa25ba6ae 277 conf.twitter_mesg[i][0] = 0;
okini3939 15:07bfa25ba6ae 278 }
okini3939 9:8c63e4f3edab 279 conf.stations_id[0] = 0;
okini3939 9:8c63e4f3edab 280 conf.stations_pin[0] = 0;
okini3939 9:8c63e4f3edab 281 conf.snmp_commname[0] = 0;
okini3939 10:848a2205aed1 282 conf.leddisp_mesg[0] = 0;
okini3939 10:848a2205aed1 283 conf.lcd_mesg[0] = 0;
okini3939 16:df39da7bef98 284 conf.lcdtype = LCD16x2;
okini3939 16:df39da7bef98 285 conf.lcdconf = LCDCFG_3V;
okini3939 14:ee6cc1632166 286 memset(&offset, 0, sizeof(offset));
okini3939 14:ee6cc1632166 287 memset(&sensor_old, 0, sizeof(sensor_old));
okini3939 9:8c63e4f3edab 288
okini3939 9:8c63e4f3edab 289 if (! cfg.read(file)) {
okini3939 9:8c63e4f3edab 290 return -1;
okini3939 9:8c63e4f3edab 291 }
okini3939 9:8c63e4f3edab 292
okini3939 9:8c63e4f3edab 293 if (cfg.getValue("INTERVAL", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 294 conf.interval = atoi(chop(buf));
okini3939 9:8c63e4f3edab 295 }
okini3939 9:8c63e4f3edab 296 if (cfg.getValue("FILE", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 297 chop(buf);
okini3939 9:8c63e4f3edab 298 if (strcmp(buf, "SD") == 0) {
okini3939 9:8c63e4f3edab 299 conf.filetype = 1;
okini3939 9:8c63e4f3edab 300 } else
okini3939 9:8c63e4f3edab 301 if (strcmp(buf, "USB") == 0) {
okini3939 9:8c63e4f3edab 302 conf.filetype = 2;
okini3939 9:8c63e4f3edab 303 }
okini3939 9:8c63e4f3edab 304 }
okini3939 9:8c63e4f3edab 305
okini3939 9:8c63e4f3edab 306 if (cfg.getValue("IPADDRESS", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 307 chop(buf);
okini3939 9:8c63e4f3edab 308 if (strcmp(buf, "DHCP") == 0) {
okini3939 9:8c63e4f3edab 309 conf.ipaddr = IpAddr(255, 255, 255, 255);
okini3939 9:8c63e4f3edab 310 } else {
okini3939 9:8c63e4f3edab 311 sscanf(buf, "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3);
okini3939 9:8c63e4f3edab 312 conf.ipaddr = IpAddr(ip0, ip1, ip2, ip3);
okini3939 9:8c63e4f3edab 313 }
okini3939 9:8c63e4f3edab 314 }
okini3939 9:8c63e4f3edab 315 if (cfg.getValue("NETMASK", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 316 sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3);
okini3939 9:8c63e4f3edab 317 conf.netmask = IpAddr(ip0, ip1, ip2, ip3);
okini3939 9:8c63e4f3edab 318 }
okini3939 9:8c63e4f3edab 319 if (cfg.getValue("GATEWAY", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 320 sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3);
okini3939 9:8c63e4f3edab 321 conf.gateway = IpAddr(ip0, ip1, ip2, ip3);
okini3939 9:8c63e4f3edab 322 }
okini3939 9:8c63e4f3edab 323 if (cfg.getValue("NAMESERVER", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 324 sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3);
okini3939 9:8c63e4f3edab 325 conf.nameserver = IpAddr(ip0, ip1, ip2, ip3);
okini3939 9:8c63e4f3edab 326 }
okini3939 9:8c63e4f3edab 327
okini3939 9:8c63e4f3edab 328 cfg.getValue("NTPSERVER", conf.ntpserver, sizeof(conf.ntpserver));
okini3939 9:8c63e4f3edab 329 chop(conf.ntpserver);
okini3939 9:8c63e4f3edab 330 cfg.getValue("PACHUBE_APIKEY", conf.pachube_apikey, sizeof(conf.pachube_apikey));
okini3939 9:8c63e4f3edab 331 chop(conf.pachube_apikey);
okini3939 9:8c63e4f3edab 332 cfg.getValue("PACHUBE_FEEDID", conf.pachube_feedid, sizeof(conf.pachube_feedid));
okini3939 9:8c63e4f3edab 333 chop(conf.pachube_feedid);
okini3939 9:8c63e4f3edab 334 cfg.getValue("TWITTER_USER", conf.twitter_user, sizeof(conf.twitter_user));
okini3939 9:8c63e4f3edab 335 chop(conf.twitter_user);
okini3939 9:8c63e4f3edab 336 cfg.getValue("TWITTER_PWD", conf.twitter_pwd, sizeof(conf.twitter_pwd));
okini3939 9:8c63e4f3edab 337 chop(conf.twitter_pwd);
okini3939 15:07bfa25ba6ae 338 cfg.getValue("TWITTER_MESG", conf.twitter_mesg[0], sizeof(conf.twitter_mesg[0]));
okini3939 15:07bfa25ba6ae 339 chop(conf.twitter_mesg[0]);
okini3939 15:07bfa25ba6ae 340 for (i = 0; i < CF_TWITTER_NUM; i ++) {
okini3939 15:07bfa25ba6ae 341 sprintf(key, "TWITTER_MESG[%d]", i);
okini3939 15:07bfa25ba6ae 342 cfg.getValue(key, conf.twitter_mesg[i], sizeof(conf.twitter_mesg[i]));
okini3939 15:07bfa25ba6ae 343 chop(conf.twitter_mesg[i]);
okini3939 15:07bfa25ba6ae 344 }
okini3939 15:07bfa25ba6ae 345
okini3939 9:8c63e4f3edab 346 cfg.getValue("STATIONS_ID", conf.stations_id, sizeof(conf.stations_id));
okini3939 9:8c63e4f3edab 347 chop(conf.stations_id);
okini3939 9:8c63e4f3edab 348 cfg.getValue("STATIONS_PIN", conf.stations_pin, sizeof(conf.stations_pin));
okini3939 9:8c63e4f3edab 349 chop(conf.stations_pin);
okini3939 9:8c63e4f3edab 350 cfg.getValue("SNMP_COMMNAME", conf.snmp_commname, sizeof(conf.snmp_commname));
okini3939 9:8c63e4f3edab 351 chop(conf.snmp_commname);
okini3939 9:8c63e4f3edab 352
okini3939 10:848a2205aed1 353 if (cfg.getValue("LCD_TYPE", buf, sizeof(buf))) {
okini3939 16:df39da7bef98 354 conf.lcdtype = (enum I2CLCDType)atoi(chop(buf));
okini3939 10:848a2205aed1 355 }
okini3939 10:848a2205aed1 356 if (cfg.getValue("LCD_CONF", buf, sizeof(buf))) {
okini3939 16:df39da7bef98 357 conf.lcdconf = (enum I2CLCDConfig)atoi(chop(buf));
okini3939 10:848a2205aed1 358 }
okini3939 10:848a2205aed1 359 if (cfg.getValue("LCD_MESG", conf.lcd_mesg, sizeof(conf.lcd_mesg))) {
okini3939 10:848a2205aed1 360 chop(conf.lcd_mesg);
okini3939 10:848a2205aed1 361 }
okini3939 10:848a2205aed1 362 if (cfg.getValue("LEDDISP_MESG", conf.leddisp_mesg, sizeof(conf.leddisp_mesg))) {
okini3939 10:848a2205aed1 363 chop(conf.leddisp_mesg);
okini3939 10:848a2205aed1 364 }
okini3939 10:848a2205aed1 365
okini3939 9:8c63e4f3edab 366 if (cfg.getValue("XBEE", buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 367 xbee.baud(atoi(chop(buf)));
okini3939 9:8c63e4f3edab 368 }
okini3939 9:8c63e4f3edab 369
okini3939 11:c6356e5949cd 370 if (cfg.getValue("INPUT", buf, sizeof(buf))) {
okini3939 11:c6356e5949cd 371 conf.inputtype = (enum eINPUTTYPE)atoi(chop(buf));
okini3939 11:c6356e5949cd 372 }
okini3939 11:c6356e5949cd 373
okini3939 9:8c63e4f3edab 374 for (i = 0; i < CF_ACTION_NUM; i ++) {
okini3939 9:8c63e4f3edab 375 sprintf(key, "ACTION[%d]", i);
okini3939 9:8c63e4f3edab 376 if (cfg.getValue(key, buf, sizeof(buf))) {
okini3939 9:8c63e4f3edab 377 add_action(chop(buf));
okini3939 9:8c63e4f3edab 378 }
okini3939 9:8c63e4f3edab 379 }
okini3939 9:8c63e4f3edab 380
okini3939 14:ee6cc1632166 381 if (cfg.getValue("OFFSET[P]", buf, sizeof(buf))) {
okini3939 14:ee6cc1632166 382 offset.pres = atof(chop(buf));
okini3939 14:ee6cc1632166 383 }
okini3939 14:ee6cc1632166 384 if (cfg.getValue("OFFSET[T]", buf, sizeof(buf))) {
okini3939 14:ee6cc1632166 385 offset.temp = atof(chop(buf));
okini3939 14:ee6cc1632166 386 }
okini3939 14:ee6cc1632166 387 if (cfg.getValue("OFFSET[H]", buf, sizeof(buf))) {
okini3939 14:ee6cc1632166 388 offset.humi = atof(chop(buf));
okini3939 14:ee6cc1632166 389 }
okini3939 14:ee6cc1632166 390
okini3939 9:8c63e4f3edab 391 return 0;
okini3939 9:8c63e4f3edab 392 }