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:
Tue Mar 29 18:15:27 2011 +0000
Revision:
14:ee6cc1632166
Parent:
11:c6356e5949cd
Child:
15:07bfa25ba6ae

        

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