mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/
Dependencies: ChaNFSSD EthernetNetIf I2CLEDDisp Agentbed ChaNFSUSB ILinterpreter mbed BMP085 WeatherMeters ConfigFile ChaNFS I2CLCD
net.cpp@0:bdb53686c194, 2011-07-04 (annotated)
- Committer:
- okini3939
- Date:
- Mon Jul 04 15:16:45 2011 +0000
- Revision:
- 0:bdb53686c194
- Child:
- 1:6c7141895545
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:bdb53686c194 | 1 | #include "mbed.h" |
okini3939 | 0:bdb53686c194 | 2 | #include "weather.h" |
okini3939 | 0:bdb53686c194 | 3 | #include "EthernetNetIf.h" |
okini3939 | 0:bdb53686c194 | 4 | #ifdef USE_NTP |
okini3939 | 0:bdb53686c194 | 5 | #include "NTPClient.h" |
okini3939 | 0:bdb53686c194 | 6 | #endif |
okini3939 | 0:bdb53686c194 | 7 | #include "HTTPClient.h" |
okini3939 | 0:bdb53686c194 | 8 | #ifdef USE_EMAIL |
okini3939 | 0:bdb53686c194 | 9 | #include "SMTPClient.h" |
okini3939 | 0:bdb53686c194 | 10 | #endif |
okini3939 | 0:bdb53686c194 | 11 | |
okini3939 | 0:bdb53686c194 | 12 | #define STATION_URL "http://weather.sugakoubou.com/p" |
okini3939 | 0:bdb53686c194 | 13 | #define TWITTER_URL "http://api.supertweet.net/1/statuses/update.xml" |
okini3939 | 0:bdb53686c194 | 14 | #define PACHUBE_URL "http://api.pachube.com/v1/feeds/" |
okini3939 | 0:bdb53686c194 | 15 | |
okini3939 | 0:bdb53686c194 | 16 | EthernetNetIf *eth; |
okini3939 | 0:bdb53686c194 | 17 | DigitalOut led_g2(p24),led_g(p25), led_y(p26); |
okini3939 | 0:bdb53686c194 | 18 | static DigitalIn eth_link(P1_25), eth_speed(P1_26); |
okini3939 | 0:bdb53686c194 | 19 | static volatile int ethernet_flg = 0; |
okini3939 | 0:bdb53686c194 | 20 | static HTTPClient *http; |
okini3939 | 0:bdb53686c194 | 21 | |
okini3939 | 0:bdb53686c194 | 22 | int weatherstations () { |
okini3939 | 0:bdb53686c194 | 23 | char post_data[200]; |
okini3939 | 0:bdb53686c194 | 24 | char id[10], pin[40]; |
okini3939 | 0:bdb53686c194 | 25 | // HTTPClient http; |
okini3939 | 0:bdb53686c194 | 26 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 27 | HTTPText postContent("application/x-www-form-urlencoded"); |
okini3939 | 0:bdb53686c194 | 28 | |
okini3939 | 0:bdb53686c194 | 29 | if (! ethernet_flg) return 0; |
okini3939 | 0:bdb53686c194 | 30 | if (! cfg.getValue("STATIONS_ID", id, sizeof(id)) || |
okini3939 | 0:bdb53686c194 | 31 | ! cfg.getValue("STATIONS_PIN", pin, sizeof(pin))) { |
okini3939 | 0:bdb53686c194 | 32 | return -1; |
okini3939 | 0:bdb53686c194 | 33 | } |
okini3939 | 0:bdb53686c194 | 34 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 35 | pc.printf("S: %s %s\r\n", id, pin); |
okini3939 | 0:bdb53686c194 | 36 | #endif |
okini3939 | 0:bdb53686c194 | 37 | |
okini3939 | 0:bdb53686c194 | 38 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 39 | format_str("d0=%.2P&d1=%.2T&d2=%.2H&d3=%.2A&d4=%.2V&d5=%.2R&d6=%.2L&d7=%.2U&d8=%.2M&d9=%.2p", post_data, sizeof(post_data)); |
okini3939 | 0:bdb53686c194 | 40 | strcat(post_data, "&fcd="); |
okini3939 | 0:bdb53686c194 | 41 | strcat(post_data, chop(id)); |
okini3939 | 0:bdb53686c194 | 42 | strcat(post_data, "&pin="); |
okini3939 | 0:bdb53686c194 | 43 | strcat(post_data, chop(pin)); |
okini3939 | 0:bdb53686c194 | 44 | postContent.puts(post_data); |
okini3939 | 0:bdb53686c194 | 45 | |
okini3939 | 0:bdb53686c194 | 46 | http->resetRequestHeaders(); |
okini3939 | 0:bdb53686c194 | 47 | http->basicAuth(NULL, NULL); |
okini3939 | 0:bdb53686c194 | 48 | http->setTimeout(NET_TIMEOUT); |
okini3939 | 0:bdb53686c194 | 49 | ret = http->post(STATION_URL, postContent, NULL); |
okini3939 | 0:bdb53686c194 | 50 | |
okini3939 | 0:bdb53686c194 | 51 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 52 | pc.printf("Weather Statuons failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 53 | return -1; |
okini3939 | 0:bdb53686c194 | 54 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 55 | } else { |
okini3939 | 0:bdb53686c194 | 56 | pc.printf("Weather Stations success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 57 | #endif |
okini3939 | 0:bdb53686c194 | 58 | } |
okini3939 | 0:bdb53686c194 | 59 | return 0; |
okini3939 | 0:bdb53686c194 | 60 | } |
okini3939 | 0:bdb53686c194 | 61 | |
okini3939 | 0:bdb53686c194 | 62 | int pachube (char *csv) { |
okini3939 | 0:bdb53686c194 | 63 | char uri[100]; |
okini3939 | 0:bdb53686c194 | 64 | char apikey[70], feedid[10]; |
okini3939 | 0:bdb53686c194 | 65 | // HTTPClient http; |
okini3939 | 0:bdb53686c194 | 66 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 67 | HTTPText csvContent("text/csv"); |
okini3939 | 0:bdb53686c194 | 68 | |
okini3939 | 0:bdb53686c194 | 69 | if (! ethernet_flg) return 0; |
okini3939 | 0:bdb53686c194 | 70 | if (! cfg.getValue("PACHUBE_APIKEY", apikey, sizeof(apikey)) || |
okini3939 | 0:bdb53686c194 | 71 | ! cfg.getValue("PACHUBE_FEEDID", feedid, sizeof(feedid))) { |
okini3939 | 0:bdb53686c194 | 72 | return -1; |
okini3939 | 0:bdb53686c194 | 73 | } |
okini3939 | 0:bdb53686c194 | 74 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 75 | pc.printf("P: %s %s\r\n", apikey, feedid); |
okini3939 | 0:bdb53686c194 | 76 | #endif |
okini3939 | 0:bdb53686c194 | 77 | |
okini3939 | 0:bdb53686c194 | 78 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 79 | csvContent.set(csv); |
okini3939 | 0:bdb53686c194 | 80 | strcpy(uri, PACHUBE_URL); |
okini3939 | 0:bdb53686c194 | 81 | strcat(uri, chop(feedid)); |
okini3939 | 0:bdb53686c194 | 82 | strcat(uri, ".csv?_method=put"); |
okini3939 | 0:bdb53686c194 | 83 | |
okini3939 | 0:bdb53686c194 | 84 | http->resetRequestHeaders(); |
okini3939 | 0:bdb53686c194 | 85 | http->basicAuth(NULL, NULL); |
okini3939 | 0:bdb53686c194 | 86 | http->setTimeout(NET_TIMEOUT); |
okini3939 | 0:bdb53686c194 | 87 | http->setRequestHeader("X-PachubeApiKey", chop(apikey)); |
okini3939 | 0:bdb53686c194 | 88 | ret = http->post(uri, csvContent, NULL); |
okini3939 | 0:bdb53686c194 | 89 | |
okini3939 | 0:bdb53686c194 | 90 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 91 | pc.printf("Pachube failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 92 | return -1; |
okini3939 | 0:bdb53686c194 | 93 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 94 | } else { |
okini3939 | 0:bdb53686c194 | 95 | pc.printf("Pachube success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 96 | #endif |
okini3939 | 0:bdb53686c194 | 97 | } |
okini3939 | 0:bdb53686c194 | 98 | return 0; |
okini3939 | 0:bdb53686c194 | 99 | } |
okini3939 | 0:bdb53686c194 | 100 | |
okini3939 | 0:bdb53686c194 | 101 | int twitter (int num) { |
okini3939 | 0:bdb53686c194 | 102 | char buf[170], tmp[128]; |
okini3939 | 0:bdb53686c194 | 103 | char user[20], pwd[20], key[20]; |
okini3939 | 0:bdb53686c194 | 104 | // HTTPClient http; |
okini3939 | 0:bdb53686c194 | 105 | HTTPMap msg; |
okini3939 | 0:bdb53686c194 | 106 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 107 | |
okini3939 | 0:bdb53686c194 | 108 | if (! ethernet_flg || num >= CF_TWITTER_NUM) return 0; |
okini3939 | 0:bdb53686c194 | 109 | sprintf(key, "TWITTER_MESG[%d]", num); |
okini3939 | 0:bdb53686c194 | 110 | if (! cfg.getValue("TWITTER_USER", user, sizeof(user)) || |
okini3939 | 0:bdb53686c194 | 111 | ! cfg.getValue("TWITTER_PWD", pwd, sizeof(pwd)) || |
okini3939 | 0:bdb53686c194 | 112 | ! cfg.getValue(key, tmp, sizeof(tmp))) { |
okini3939 | 0:bdb53686c194 | 113 | return -1; |
okini3939 | 0:bdb53686c194 | 114 | } |
okini3939 | 0:bdb53686c194 | 115 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 116 | pc.printf("T: %s %s %s\r\n", user, pwd, tmp); |
okini3939 | 0:bdb53686c194 | 117 | #endif |
okini3939 | 0:bdb53686c194 | 118 | |
okini3939 | 0:bdb53686c194 | 119 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 120 | format_str(tmp, buf, sizeof(buf)); |
okini3939 | 0:bdb53686c194 | 121 | msg["status"] = buf; |
okini3939 | 0:bdb53686c194 | 122 | |
okini3939 | 0:bdb53686c194 | 123 | http->resetRequestHeaders(); |
okini3939 | 0:bdb53686c194 | 124 | http->setTimeout(NET_TIMEOUT); |
okini3939 | 0:bdb53686c194 | 125 | http->basicAuth(chop(user), chop(pwd)); |
okini3939 | 0:bdb53686c194 | 126 | ret = http->post(TWITTER_URL, msg, NULL); |
okini3939 | 0:bdb53686c194 | 127 | |
okini3939 | 0:bdb53686c194 | 128 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 129 | pc.printf("Twitter failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 130 | return -1; |
okini3939 | 0:bdb53686c194 | 131 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 132 | } else { |
okini3939 | 0:bdb53686c194 | 133 | pc.printf("Twitter success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 134 | #endif |
okini3939 | 0:bdb53686c194 | 135 | } |
okini3939 | 0:bdb53686c194 | 136 | return 0; |
okini3939 | 0:bdb53686c194 | 137 | } |
okini3939 | 0:bdb53686c194 | 138 | |
okini3939 | 0:bdb53686c194 | 139 | int email (int num) { |
okini3939 | 0:bdb53686c194 | 140 | #ifdef USE_EMAIL |
okini3939 | 0:bdb53686c194 | 141 | int port = 25; |
okini3939 | 0:bdb53686c194 | 142 | char buf[170], smtphost[40], from[40], to[40], tmp[128]; |
okini3939 | 0:bdb53686c194 | 143 | char key[40], key2[40]; |
okini3939 | 0:bdb53686c194 | 144 | static SMTPClient smtp; |
okini3939 | 0:bdb53686c194 | 145 | Host smtpserver; |
okini3939 | 0:bdb53686c194 | 146 | EmailMessage msg; |
okini3939 | 0:bdb53686c194 | 147 | SMTPResult ret; |
okini3939 | 0:bdb53686c194 | 148 | |
okini3939 | 0:bdb53686c194 | 149 | if (! ethernet_flg || num >= CF_MAIL_NUM) return 0; |
okini3939 | 0:bdb53686c194 | 150 | sprintf(key, "MAIL_MESG[%d]", num); |
okini3939 | 0:bdb53686c194 | 151 | sprintf(key2, "MAIL_TO[%d]", num); |
okini3939 | 0:bdb53686c194 | 152 | if (! cfg.getValue("SMTPSERVER", smtphost, sizeof(smtphost)) || |
okini3939 | 0:bdb53686c194 | 153 | ! cfg.getValue("MAIL_FROM", from, sizeof(from)) || |
okini3939 | 0:bdb53686c194 | 154 | ! cfg.getValue(key2, to, sizeof(to)) || |
okini3939 | 0:bdb53686c194 | 155 | ! cfg.getValue(key, tmp, sizeof(tmp))) { |
okini3939 | 0:bdb53686c194 | 156 | return -1; |
okini3939 | 0:bdb53686c194 | 157 | } |
okini3939 | 0:bdb53686c194 | 158 | |
okini3939 | 0:bdb53686c194 | 159 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 160 | if (cfg.getValue("SMTPPORT", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 161 | port = atoi(buf); |
okini3939 | 0:bdb53686c194 | 162 | } |
okini3939 | 0:bdb53686c194 | 163 | smtpserver.setName(chop(smtphost)); |
okini3939 | 0:bdb53686c194 | 164 | smtpserver.setPort(port); |
okini3939 | 0:bdb53686c194 | 165 | smtp.setServer(smtpserver); |
okini3939 | 0:bdb53686c194 | 166 | smtp.setHeloDomain("mbed"); |
okini3939 | 0:bdb53686c194 | 167 | |
okini3939 | 0:bdb53686c194 | 168 | msg.setFrom(chop(from)); |
okini3939 | 0:bdb53686c194 | 169 | msg.addTo(chop(to)); |
okini3939 | 0:bdb53686c194 | 170 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 171 | pc.printf("SMTP %s %s %s\r\n", smtphost, from, to); |
okini3939 | 0:bdb53686c194 | 172 | #endif |
okini3939 | 0:bdb53686c194 | 173 | /* |
okini3939 | 0:bdb53686c194 | 174 | msg.printf("Content-Type: text/plain; charset=UTF-8\n"); |
okini3939 | 0:bdb53686c194 | 175 | msg.printf("Content-Transfer-Encoding: 8bit\n"); |
okini3939 | 0:bdb53686c194 | 176 | msg.printf("From: %s\n", from); |
okini3939 | 0:bdb53686c194 | 177 | msg.printf("To: %s\n", to); |
okini3939 | 0:bdb53686c194 | 178 | */ |
okini3939 | 0:bdb53686c194 | 179 | msg.printf("Subject: Message from weather\n"); |
okini3939 | 0:bdb53686c194 | 180 | format_str(tmp, buf, sizeof(buf)); |
okini3939 | 0:bdb53686c194 | 181 | msg.printf("\n%s\n", buf); |
okini3939 | 0:bdb53686c194 | 182 | |
okini3939 | 0:bdb53686c194 | 183 | if (cfg.getValue("SMTPUSER", key, sizeof(key)) && |
okini3939 | 0:bdb53686c194 | 184 | cfg.getValue("SMTPPWD", key2, sizeof(key2))) { |
okini3939 | 0:bdb53686c194 | 185 | // SMTP auth |
okini3939 | 0:bdb53686c194 | 186 | smtp.setAuth(chop(key), chop(key2)); |
okini3939 | 0:bdb53686c194 | 187 | } |
okini3939 | 0:bdb53686c194 | 188 | smtp.setTimeout(NET_TIMEOUT); |
okini3939 | 0:bdb53686c194 | 189 | ret = smtp.send(&msg); |
okini3939 | 0:bdb53686c194 | 190 | |
okini3939 | 0:bdb53686c194 | 191 | if (ret != HTTP_OK) { |
okini3939 | 0:bdb53686c194 | 192 | pc.printf("Mail failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 193 | return -1; |
okini3939 | 0:bdb53686c194 | 194 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 195 | } else { |
okini3939 | 0:bdb53686c194 | 196 | pc.printf("Mail success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 197 | pc.printf("SMTP response %s", smtp.getLastResponse().c_str()); |
okini3939 | 0:bdb53686c194 | 198 | #endif |
okini3939 | 0:bdb53686c194 | 199 | } |
okini3939 | 0:bdb53686c194 | 200 | #endif |
okini3939 | 0:bdb53686c194 | 201 | return 0; |
okini3939 | 0:bdb53686c194 | 202 | } |
okini3939 | 0:bdb53686c194 | 203 | |
okini3939 | 0:bdb53686c194 | 204 | int ntpdate (char *hostname) { |
okini3939 | 0:bdb53686c194 | 205 | #ifdef USE_NTP |
okini3939 | 0:bdb53686c194 | 206 | static NTPClient ntp; |
okini3939 | 0:bdb53686c194 | 207 | Host ntpserver; |
okini3939 | 0:bdb53686c194 | 208 | NTPResult ret; |
okini3939 | 0:bdb53686c194 | 209 | time_t sec; |
okini3939 | 0:bdb53686c194 | 210 | |
okini3939 | 0:bdb53686c194 | 211 | if (! ethernet_flg) return 0; |
okini3939 | 0:bdb53686c194 | 212 | |
okini3939 | 0:bdb53686c194 | 213 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 214 | ntpserver.setName(hostname); |
okini3939 | 0:bdb53686c194 | 215 | ntpserver.setPort(123); |
okini3939 | 0:bdb53686c194 | 216 | |
okini3939 | 0:bdb53686c194 | 217 | ret = ntp.setTime(ntpserver); |
okini3939 | 0:bdb53686c194 | 218 | if (ret == NTP_OK) { |
okini3939 | 0:bdb53686c194 | 219 | sec = time(NULL) + (60 * 60 * TIMEZONE); |
okini3939 | 0:bdb53686c194 | 220 | set_time(sec); |
okini3939 | 0:bdb53686c194 | 221 | } |
okini3939 | 0:bdb53686c194 | 222 | // ntp.close(); |
okini3939 | 0:bdb53686c194 | 223 | |
okini3939 | 0:bdb53686c194 | 224 | if (ret != NTP_OK) { |
okini3939 | 0:bdb53686c194 | 225 | pc.printf("NTP failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 226 | return -1; |
okini3939 | 0:bdb53686c194 | 227 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 228 | } else { |
okini3939 | 0:bdb53686c194 | 229 | pc.printf("NTP success %s\r\n", ctime(&sec)); |
okini3939 | 0:bdb53686c194 | 230 | #endif |
okini3939 | 0:bdb53686c194 | 231 | } |
okini3939 | 0:bdb53686c194 | 232 | #endif |
okini3939 | 0:bdb53686c194 | 233 | return 0; |
okini3939 | 0:bdb53686c194 | 234 | } |
okini3939 | 0:bdb53686c194 | 235 | |
okini3939 | 0:bdb53686c194 | 236 | int init_net () { |
okini3939 | 0:bdb53686c194 | 237 | char buf[128]; |
okini3939 | 0:bdb53686c194 | 238 | int ip0, ip1, ip2, ip3; |
okini3939 | 0:bdb53686c194 | 239 | IpAddr ipaddr, netmask, gateway, nameserver; |
okini3939 | 0:bdb53686c194 | 240 | EthernetErr ethErr; |
okini3939 | 0:bdb53686c194 | 241 | |
okini3939 | 0:bdb53686c194 | 242 | eth_link.mode(PullUp); |
okini3939 | 0:bdb53686c194 | 243 | eth_speed.mode(PullUp); |
okini3939 | 0:bdb53686c194 | 244 | led_g = eth_link ? 1 : 0; |
okini3939 | 0:bdb53686c194 | 245 | led_g2 = 1; |
okini3939 | 0:bdb53686c194 | 246 | LED_NET_ON; |
okini3939 | 0:bdb53686c194 | 247 | |
okini3939 | 0:bdb53686c194 | 248 | if (cfg.getValue("IPADDRESS", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 249 | |
okini3939 | 0:bdb53686c194 | 250 | if (strncmp(buf, "DHCP", 4) == 0) { |
okini3939 | 0:bdb53686c194 | 251 | // dhcp ip address |
okini3939 | 0:bdb53686c194 | 252 | |
okini3939 | 0:bdb53686c194 | 253 | eth = new EthernetNetIf; |
okini3939 | 0:bdb53686c194 | 254 | |
okini3939 | 0:bdb53686c194 | 255 | } else { |
okini3939 | 0:bdb53686c194 | 256 | // static ip address |
okini3939 | 0:bdb53686c194 | 257 | |
okini3939 | 0:bdb53686c194 | 258 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 0:bdb53686c194 | 259 | ipaddr = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 0:bdb53686c194 | 260 | |
okini3939 | 0:bdb53686c194 | 261 | if (cfg.getValue("NETMASK", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 262 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 0:bdb53686c194 | 263 | netmask = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 0:bdb53686c194 | 264 | } |
okini3939 | 0:bdb53686c194 | 265 | |
okini3939 | 0:bdb53686c194 | 266 | if (cfg.getValue("GATEWAY", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 267 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 0:bdb53686c194 | 268 | gateway = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 0:bdb53686c194 | 269 | } |
okini3939 | 0:bdb53686c194 | 270 | |
okini3939 | 0:bdb53686c194 | 271 | if (cfg.getValue("NAMESERVER", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 272 | sscanf(chop(buf), "%d.%d.%d.%d", &ip0, &ip1, &ip2, &ip3); |
okini3939 | 0:bdb53686c194 | 273 | nameserver = IpAddr(ip0, ip1, ip2, ip3); |
okini3939 | 0:bdb53686c194 | 274 | } |
okini3939 | 0:bdb53686c194 | 275 | |
okini3939 | 0:bdb53686c194 | 276 | eth = new EthernetNetIf(ipaddr, netmask, gateway, nameserver); |
okini3939 | 0:bdb53686c194 | 277 | |
okini3939 | 0:bdb53686c194 | 278 | } |
okini3939 | 0:bdb53686c194 | 279 | if (eth == NULL) return -1; |
okini3939 | 0:bdb53686c194 | 280 | |
okini3939 | 0:bdb53686c194 | 281 | ethErr = eth->setup(); |
okini3939 | 0:bdb53686c194 | 282 | if (ethErr) { |
okini3939 | 0:bdb53686c194 | 283 | // error |
okini3939 | 0:bdb53686c194 | 284 | return -1; |
okini3939 | 0:bdb53686c194 | 285 | } |
okini3939 | 0:bdb53686c194 | 286 | |
okini3939 | 0:bdb53686c194 | 287 | pc.printf("\r\nEthernet: %d.%d.%d.%d\r\n", eth->getIp()[0], eth->getIp()[1], eth->getIp()[2], eth->getIp()[3]); |
okini3939 | 0:bdb53686c194 | 288 | ethernet_flg = 1; |
okini3939 | 0:bdb53686c194 | 289 | pool_net(); |
okini3939 | 0:bdb53686c194 | 290 | |
okini3939 | 0:bdb53686c194 | 291 | http = new HTTPClient; |
okini3939 | 0:bdb53686c194 | 292 | if (http == NULL) return -1; |
okini3939 | 0:bdb53686c194 | 293 | } |
okini3939 | 0:bdb53686c194 | 294 | |
okini3939 | 0:bdb53686c194 | 295 | if (cfg.getValue("NTPSERVER", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 296 | pc.printf("NTP: %s\r\n", buf); |
okini3939 | 0:bdb53686c194 | 297 | ntpdate(chop(buf)); |
okini3939 | 0:bdb53686c194 | 298 | } |
okini3939 | 0:bdb53686c194 | 299 | |
okini3939 | 0:bdb53686c194 | 300 | if (cfg.getValue("SNMP_COMMNAME", buf, sizeof(buf))) { |
okini3939 | 0:bdb53686c194 | 301 | snmp_init(chop(buf)); |
okini3939 | 0:bdb53686c194 | 302 | pc.printf("SNMP community name: %s\r\n", buf); |
okini3939 | 0:bdb53686c194 | 303 | } |
okini3939 | 0:bdb53686c194 | 304 | |
okini3939 | 0:bdb53686c194 | 305 | return 0; |
okini3939 | 0:bdb53686c194 | 306 | } |
okini3939 | 0:bdb53686c194 | 307 | |
okini3939 | 0:bdb53686c194 | 308 | void pool_net () { |
okini3939 | 0:bdb53686c194 | 309 | |
okini3939 | 0:bdb53686c194 | 310 | if (ethernet_flg) { |
okini3939 | 0:bdb53686c194 | 311 | Net::poll(); |
okini3939 | 0:bdb53686c194 | 312 | |
okini3939 | 0:bdb53686c194 | 313 | // ethernet LED green |
okini3939 | 0:bdb53686c194 | 314 | led_g = eth_link ? 1 : 0; |
okini3939 | 0:bdb53686c194 | 315 | led_g2 = 1; |
okini3939 | 0:bdb53686c194 | 316 | } else { |
okini3939 | 0:bdb53686c194 | 317 | // ethernet LED orange |
okini3939 | 0:bdb53686c194 | 318 | led_g = eth_link ? 0 : 1; |
okini3939 | 0:bdb53686c194 | 319 | led_g2 = 0; |
okini3939 | 0:bdb53686c194 | 320 | } |
okini3939 | 0:bdb53686c194 | 321 | } |