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
conf.cpp@19:69b77f9e0446, 2011-06-03 (annotated)
- Committer:
- okini3939
- Date:
- Fri Jun 03 15:38:22 2011 +0000
- Revision:
- 19:69b77f9e0446
- Parent:
- 18:9286e5010c14
Who changed what in which revision?
User | Revision | Line number | New 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 | 18:9286e5010c14 | 5 | #include "weather.h" |
okini3939 | 9:8c63e4f3edab | 6 | #include "ConfigFile.h" |
okini3939 | 9:8c63e4f3edab | 7 | |
okini3939 | 9:8c63e4f3edab | 8 | |
okini3939 | 9:8c63e4f3edab | 9 | char* chop (char *s) { |
okini3939 | 9:8c63e4f3edab | 10 | int i; |
okini3939 | 9:8c63e4f3edab | 11 | |
okini3939 | 9:8c63e4f3edab | 12 | for (i = strlen(s) - 1; i >= 0; i --) { |
okini3939 | 9:8c63e4f3edab | 13 | if (s[i] == ' ' || s[i] == '\n' || s[i] == '\r') { |
okini3939 | 9:8c63e4f3edab | 14 | s[i] = 0; |
okini3939 | 9:8c63e4f3edab | 15 | } else { |
okini3939 | 9:8c63e4f3edab | 16 | break; |
okini3939 | 9:8c63e4f3edab | 17 | } |
okini3939 | 9:8c63e4f3edab | 18 | } |
okini3939 | 9:8c63e4f3edab | 19 | return s; |
okini3939 | 9:8c63e4f3edab | 20 | } |
okini3939 | 9:8c63e4f3edab | 21 | |
okini3939 | 9:8c63e4f3edab | 22 | int config (char *file) { |
okini3939 | 9:8c63e4f3edab | 23 | int i; |
okini3939 | 9:8c63e4f3edab | 24 | ConfigFile cfg; |
okini3939 | 9:8c63e4f3edab | 25 | char buf[80], key[20]; |
okini3939 | 9:8c63e4f3edab | 26 | int ip0, ip1, ip2, ip3; |
okini3939 | 10:848a2205aed1 | 27 | |
okini3939 | 9:8c63e4f3edab | 28 | conf.ipaddr = IpAddr(0, 0, 0, 0); |
okini3939 | 9:8c63e4f3edab | 29 | conf.netmask = IpAddr(255, 255, 255, 0); |
okini3939 | 9:8c63e4f3edab | 30 | conf.gateway = IpAddr(0, 0, 0, 0); |
okini3939 | 9:8c63e4f3edab | 31 | conf.nameserver = IpAddr(0, 0, 0, 0); |
okini3939 | 9:8c63e4f3edab | 32 | conf.interval = 60; |
okini3939 | 9:8c63e4f3edab | 33 | conf.ntpserver[0] = 0; |
okini3939 | 9:8c63e4f3edab | 34 | conf.filetype = 0; |
okini3939 | 9:8c63e4f3edab | 35 | conf.actionscount = 0; |
okini3939 | 9:8c63e4f3edab | 36 | conf.pachube_apikey[0] = 0; |
okini3939 | 9:8c63e4f3edab | 37 | conf.pachube_feedid[0] = 0; |
okini3939 | 9:8c63e4f3edab | 38 | conf.twitter_user[0] = 0; |
okini3939 | 9:8c63e4f3edab | 39 | conf.twitter_pwd[0] = 0; |
okini3939 | 15:07bfa25ba6ae | 40 | for (i = 0; i < CF_TWITTER_NUM; i ++) { |
okini3939 | 15:07bfa25ba6ae | 41 | conf.twitter_mesg[i][0] = 0; |
okini3939 | 15:07bfa25ba6ae | 42 | } |
okini3939 | 9:8c63e4f3edab | 43 | conf.stations_id[0] = 0; |
okini3939 | 9:8c63e4f3edab | 44 | conf.stations_pin[0] = 0; |
okini3939 | 9:8c63e4f3edab | 45 | conf.snmp_commname[0] = 0; |
okini3939 | 10:848a2205aed1 | 46 | conf.leddisp_mesg[0] = 0; |
okini3939 | 10:848a2205aed1 | 47 | conf.lcd_mesg[0] = 0; |
okini3939 | 16:df39da7bef98 | 48 | conf.lcdtype = LCD16x2; |
okini3939 | 16:df39da7bef98 | 49 | conf.lcdconf = LCDCFG_3V; |
okini3939 | 14:ee6cc1632166 | 50 | memset(&offset, 0, sizeof(offset)); |
okini3939 | 14:ee6cc1632166 | 51 | memset(&sensor_old, 0, sizeof(sensor_old)); |
okini3939 | 9:8c63e4f3edab | 52 | |
okini3939 | 9:8c63e4f3edab | 53 | if (! cfg.read(file)) { |
okini3939 | 9:8c63e4f3edab | 54 | return -1; |
okini3939 | 9:8c63e4f3edab | 55 | } |
okini3939 | 9:8c63e4f3edab | 56 | |
okini3939 | 9:8c63e4f3edab | 57 | if (cfg.getValue("INTERVAL", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 58 | conf.interval = atoi(chop(buf)); |
okini3939 | 9:8c63e4f3edab | 59 | } |
okini3939 | 9:8c63e4f3edab | 60 | if (cfg.getValue("FILE", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 61 | chop(buf); |
okini3939 | 9:8c63e4f3edab | 62 | if (strcmp(buf, "SD") == 0) { |
okini3939 | 9:8c63e4f3edab | 63 | conf.filetype = 1; |
okini3939 | 9:8c63e4f3edab | 64 | } else |
okini3939 | 9:8c63e4f3edab | 65 | if (strcmp(buf, "USB") == 0) { |
okini3939 | 9:8c63e4f3edab | 66 | conf.filetype = 2; |
okini3939 | 9:8c63e4f3edab | 67 | } |
okini3939 | 9:8c63e4f3edab | 68 | } |
okini3939 | 9:8c63e4f3edab | 69 | |
okini3939 | 9:8c63e4f3edab | 70 | if (cfg.getValue("IPADDRESS", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 71 | chop(buf); |
okini3939 | 9:8c63e4f3edab | 72 | if (strcmp(buf, "DHCP") == 0) { |
okini3939 | 9:8c63e4f3edab | 73 | conf.ipaddr = IpAddr(255, 255, 255, 255); |
okini3939 | 9:8c63e4f3edab | 74 | } else { |
okini3939 | 9:8c63e4f3edab | 75 | sscanf(buf, "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 9:8c63e4f3edab | 76 | conf.ipaddr = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 9:8c63e4f3edab | 77 | } |
okini3939 | 9:8c63e4f3edab | 78 | } |
okini3939 | 9:8c63e4f3edab | 79 | if (cfg.getValue("NETMASK", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 80 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 9:8c63e4f3edab | 81 | conf.netmask = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 9:8c63e4f3edab | 82 | } |
okini3939 | 9:8c63e4f3edab | 83 | if (cfg.getValue("GATEWAY", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 84 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 9:8c63e4f3edab | 85 | conf.gateway = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 9:8c63e4f3edab | 86 | } |
okini3939 | 9:8c63e4f3edab | 87 | if (cfg.getValue("NAMESERVER", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 88 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 9:8c63e4f3edab | 89 | conf.nameserver = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 9:8c63e4f3edab | 90 | } |
okini3939 | 9:8c63e4f3edab | 91 | |
okini3939 | 9:8c63e4f3edab | 92 | cfg.getValue("NTPSERVER", conf.ntpserver, sizeof(conf.ntpserver)); |
okini3939 | 9:8c63e4f3edab | 93 | chop(conf.ntpserver); |
okini3939 | 9:8c63e4f3edab | 94 | cfg.getValue("PACHUBE_APIKEY", conf.pachube_apikey, sizeof(conf.pachube_apikey)); |
okini3939 | 9:8c63e4f3edab | 95 | chop(conf.pachube_apikey); |
okini3939 | 9:8c63e4f3edab | 96 | cfg.getValue("PACHUBE_FEEDID", conf.pachube_feedid, sizeof(conf.pachube_feedid)); |
okini3939 | 9:8c63e4f3edab | 97 | chop(conf.pachube_feedid); |
okini3939 | 9:8c63e4f3edab | 98 | cfg.getValue("TWITTER_USER", conf.twitter_user, sizeof(conf.twitter_user)); |
okini3939 | 9:8c63e4f3edab | 99 | chop(conf.twitter_user); |
okini3939 | 9:8c63e4f3edab | 100 | cfg.getValue("TWITTER_PWD", conf.twitter_pwd, sizeof(conf.twitter_pwd)); |
okini3939 | 9:8c63e4f3edab | 101 | chop(conf.twitter_pwd); |
okini3939 | 15:07bfa25ba6ae | 102 | cfg.getValue("TWITTER_MESG", conf.twitter_mesg[0], sizeof(conf.twitter_mesg[0])); |
okini3939 | 15:07bfa25ba6ae | 103 | chop(conf.twitter_mesg[0]); |
okini3939 | 15:07bfa25ba6ae | 104 | for (i = 0; i < CF_TWITTER_NUM; i ++) { |
okini3939 | 15:07bfa25ba6ae | 105 | sprintf(key, "TWITTER_MESG[%d]", i); |
okini3939 | 15:07bfa25ba6ae | 106 | cfg.getValue(key, conf.twitter_mesg[i], sizeof(conf.twitter_mesg[i])); |
okini3939 | 15:07bfa25ba6ae | 107 | chop(conf.twitter_mesg[i]); |
okini3939 | 15:07bfa25ba6ae | 108 | } |
okini3939 | 15:07bfa25ba6ae | 109 | |
okini3939 | 9:8c63e4f3edab | 110 | cfg.getValue("STATIONS_ID", conf.stations_id, sizeof(conf.stations_id)); |
okini3939 | 9:8c63e4f3edab | 111 | chop(conf.stations_id); |
okini3939 | 9:8c63e4f3edab | 112 | cfg.getValue("STATIONS_PIN", conf.stations_pin, sizeof(conf.stations_pin)); |
okini3939 | 9:8c63e4f3edab | 113 | chop(conf.stations_pin); |
okini3939 | 9:8c63e4f3edab | 114 | cfg.getValue("SNMP_COMMNAME", conf.snmp_commname, sizeof(conf.snmp_commname)); |
okini3939 | 9:8c63e4f3edab | 115 | chop(conf.snmp_commname); |
okini3939 | 9:8c63e4f3edab | 116 | |
okini3939 | 10:848a2205aed1 | 117 | if (cfg.getValue("LCD_TYPE", buf, sizeof(buf))) { |
okini3939 | 16:df39da7bef98 | 118 | conf.lcdtype = (enum I2CLCDType)atoi(chop(buf)); |
okini3939 | 10:848a2205aed1 | 119 | } |
okini3939 | 10:848a2205aed1 | 120 | if (cfg.getValue("LCD_CONF", buf, sizeof(buf))) { |
okini3939 | 16:df39da7bef98 | 121 | conf.lcdconf = (enum I2CLCDConfig)atoi(chop(buf)); |
okini3939 | 10:848a2205aed1 | 122 | } |
okini3939 | 10:848a2205aed1 | 123 | if (cfg.getValue("LCD_MESG", conf.lcd_mesg, sizeof(conf.lcd_mesg))) { |
okini3939 | 10:848a2205aed1 | 124 | chop(conf.lcd_mesg); |
okini3939 | 10:848a2205aed1 | 125 | } |
okini3939 | 10:848a2205aed1 | 126 | if (cfg.getValue("LEDDISP_MESG", conf.leddisp_mesg, sizeof(conf.leddisp_mesg))) { |
okini3939 | 10:848a2205aed1 | 127 | chop(conf.leddisp_mesg); |
okini3939 | 10:848a2205aed1 | 128 | } |
okini3939 | 10:848a2205aed1 | 129 | |
okini3939 | 9:8c63e4f3edab | 130 | if (cfg.getValue("XBEE", buf, sizeof(buf))) { |
okini3939 | 9:8c63e4f3edab | 131 | xbee.baud(atoi(chop(buf))); |
okini3939 | 9:8c63e4f3edab | 132 | } |
okini3939 | 9:8c63e4f3edab | 133 | |
okini3939 | 11:c6356e5949cd | 134 | if (cfg.getValue("INPUT", buf, sizeof(buf))) { |
okini3939 | 11:c6356e5949cd | 135 | conf.inputtype = (enum eINPUTTYPE)atoi(chop(buf)); |
okini3939 | 11:c6356e5949cd | 136 | } |
okini3939 | 11:c6356e5949cd | 137 | |
okini3939 | 14:ee6cc1632166 | 138 | if (cfg.getValue("OFFSET[P]", buf, sizeof(buf))) { |
okini3939 | 14:ee6cc1632166 | 139 | offset.pres = atof(chop(buf)); |
okini3939 | 14:ee6cc1632166 | 140 | } |
okini3939 | 14:ee6cc1632166 | 141 | if (cfg.getValue("OFFSET[T]", buf, sizeof(buf))) { |
okini3939 | 14:ee6cc1632166 | 142 | offset.temp = atof(chop(buf)); |
okini3939 | 14:ee6cc1632166 | 143 | } |
okini3939 | 14:ee6cc1632166 | 144 | if (cfg.getValue("OFFSET[H]", buf, sizeof(buf))) { |
okini3939 | 14:ee6cc1632166 | 145 | offset.humi = atof(chop(buf)); |
okini3939 | 14:ee6cc1632166 | 146 | } |
okini3939 | 14:ee6cc1632166 | 147 | |
okini3939 | 9:8c63e4f3edab | 148 | return 0; |
okini3939 | 9:8c63e4f3edab | 149 | } |