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@2:a3e5edf84f74, 2011-08-24 (annotated)
- Committer:
- okini3939
- Date:
- Wed Aug 24 13:22:32 2011 +0000
- Revision:
- 2:a3e5edf84f74
- Parent:
- 1:6c7141895545
- Child:
- 3:058292da2cee
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 1:6c7141895545 | 1 | /* |
okini3939 | 1:6c7141895545 | 2 | * Weather Station - mbed Weather Platform |
okini3939 | 1:6c7141895545 | 3 | * Copyright (c) 2011 Hiroshi Suga |
okini3939 | 1:6c7141895545 | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 1:6c7141895545 | 5 | */ |
okini3939 | 1:6c7141895545 | 6 | |
okini3939 | 1:6c7141895545 | 7 | /** @file |
okini3939 | 1:6c7141895545 | 8 | * @brief Weather Station |
okini3939 | 1:6c7141895545 | 9 | */ |
okini3939 | 1:6c7141895545 | 10 | |
okini3939 | 0:bdb53686c194 | 11 | #include "mbed.h" |
okini3939 | 0:bdb53686c194 | 12 | #include "weather.h" |
okini3939 | 0:bdb53686c194 | 13 | #include "EthernetNetIf.h" |
okini3939 | 0:bdb53686c194 | 14 | #ifdef USE_NTP |
okini3939 | 2:a3e5edf84f74 | 15 | //#include "NTPClient.h" |
okini3939 | 2:a3e5edf84f74 | 16 | #include "TinySNTP.h" |
okini3939 | 0:bdb53686c194 | 17 | #endif |
okini3939 | 2:a3e5edf84f74 | 18 | #ifdef USE_HTTP |
okini3939 | 0:bdb53686c194 | 19 | #include "HTTPClient.h" |
okini3939 | 2:a3e5edf84f74 | 20 | #endif |
okini3939 | 0:bdb53686c194 | 21 | #ifdef USE_EMAIL |
okini3939 | 0:bdb53686c194 | 22 | #include "SMTPClient.h" |
okini3939 | 0:bdb53686c194 | 23 | #endif |
okini3939 | 0:bdb53686c194 | 24 | |
okini3939 | 2:a3e5edf84f74 | 25 | #define STATIONS_URL "http://weather.sugakoubou.com/p" |
okini3939 | 0:bdb53686c194 | 26 | #define TWITTER_URL "http://api.supertweet.net/1/statuses/update.xml" |
okini3939 | 0:bdb53686c194 | 27 | #define PACHUBE_URL "http://api.pachube.com/v1/feeds/" |
okini3939 | 0:bdb53686c194 | 28 | |
okini3939 | 0:bdb53686c194 | 29 | EthernetNetIf *eth; |
okini3939 | 1:6c7141895545 | 30 | DigitalOut led_gayk(p24),led_gkya(p25), led_yk(p26); |
okini3939 | 0:bdb53686c194 | 31 | static DigitalIn eth_link(P1_25), eth_speed(P1_26); |
okini3939 | 0:bdb53686c194 | 32 | static volatile int ethernet_flg = 0; |
okini3939 | 2:a3e5edf84f74 | 33 | #ifdef USE_HTTP |
okini3939 | 2:a3e5edf84f74 | 34 | //static HTTPClient *http; |
okini3939 | 1:6c7141895545 | 35 | #endif |
okini3939 | 2:a3e5edf84f74 | 36 | //static NTPClient *ntp; |
okini3939 | 0:bdb53686c194 | 37 | |
okini3939 | 0:bdb53686c194 | 38 | int weatherstations () { |
okini3939 | 2:a3e5edf84f74 | 39 | #ifdef USE_HTTP |
okini3939 | 2:a3e5edf84f74 | 40 | char post_data[150]; |
okini3939 | 2:a3e5edf84f74 | 41 | HTTPClient http; |
okini3939 | 0:bdb53686c194 | 42 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 43 | HTTPText postContent("application/x-www-form-urlencoded"); |
okini3939 | 0:bdb53686c194 | 44 | |
okini3939 | 0:bdb53686c194 | 45 | if (! ethernet_flg) return 0; |
okini3939 | 2:a3e5edf84f74 | 46 | if (! conf.stations_id[0] || ! conf.stations_pin[0]) { |
okini3939 | 0:bdb53686c194 | 47 | return -1; |
okini3939 | 0:bdb53686c194 | 48 | } |
okini3939 | 0:bdb53686c194 | 49 | |
okini3939 | 1:6c7141895545 | 50 | LED_NET_ACT_ON; |
okini3939 | 2:a3e5edf84f74 | 51 | 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_1(post_data)); |
okini3939 | 2:a3e5edf84f74 | 52 | strncat(post_data, "&fcd=", sizeof_len(post_data)); |
okini3939 | 2:a3e5edf84f74 | 53 | strncat(post_data, conf.stations_id, sizeof_len(post_data)); |
okini3939 | 2:a3e5edf84f74 | 54 | strncat(post_data, "&pin=", sizeof_len(post_data)); |
okini3939 | 2:a3e5edf84f74 | 55 | strncat(post_data, conf.stations_pin, sizeof_len(post_data)); |
okini3939 | 0:bdb53686c194 | 56 | postContent.puts(post_data); |
okini3939 | 0:bdb53686c194 | 57 | |
okini3939 | 2:a3e5edf84f74 | 58 | #ifdef DEBUG |
okini3939 | 2:a3e5edf84f74 | 59 | pc.printf("S: %s %s\r\n%s\r\n", conf.stations_id, conf.stations_pin, post_data); |
okini3939 | 2:a3e5edf84f74 | 60 | #endif |
okini3939 | 2:a3e5edf84f74 | 61 | // http->resetRequestHeaders(); |
okini3939 | 2:a3e5edf84f74 | 62 | // http->basicAuth(NULL, NULL); |
okini3939 | 2:a3e5edf84f74 | 63 | http.setTimeout(NET_TIMEOUT); |
okini3939 | 2:a3e5edf84f74 | 64 | ret = http.post(STATIONS_URL, postContent, NULL); |
okini3939 | 0:bdb53686c194 | 65 | |
okini3939 | 0:bdb53686c194 | 66 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 67 | pc.printf("Weather Statuons failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 68 | return -1; |
okini3939 | 0:bdb53686c194 | 69 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 70 | } else { |
okini3939 | 0:bdb53686c194 | 71 | pc.printf("Weather Stations success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 72 | #endif |
okini3939 | 0:bdb53686c194 | 73 | } |
okini3939 | 2:a3e5edf84f74 | 74 | #endif |
okini3939 | 0:bdb53686c194 | 75 | return 0; |
okini3939 | 0:bdb53686c194 | 76 | } |
okini3939 | 0:bdb53686c194 | 77 | |
okini3939 | 2:a3e5edf84f74 | 78 | int pachube () { |
okini3939 | 2:a3e5edf84f74 | 79 | #ifdef USE_HTTP |
okini3939 | 2:a3e5edf84f74 | 80 | char buf[100], uri[100]; |
okini3939 | 2:a3e5edf84f74 | 81 | HTTPClient http; |
okini3939 | 0:bdb53686c194 | 82 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 83 | HTTPText csvContent("text/csv"); |
okini3939 | 0:bdb53686c194 | 84 | |
okini3939 | 0:bdb53686c194 | 85 | if (! ethernet_flg) return 0; |
okini3939 | 2:a3e5edf84f74 | 86 | if (! conf.pachube_apikey[0] || ! conf.pachube_feedid[0]) { |
okini3939 | 0:bdb53686c194 | 87 | return -1; |
okini3939 | 0:bdb53686c194 | 88 | } |
okini3939 | 0:bdb53686c194 | 89 | |
okini3939 | 1:6c7141895545 | 90 | LED_NET_ACT_ON; |
okini3939 | 2:a3e5edf84f74 | 91 | format_str(conf.pachube_mesg, buf, sizeof_1(buf)); |
okini3939 | 2:a3e5edf84f74 | 92 | csvContent.set(buf); |
okini3939 | 2:a3e5edf84f74 | 93 | |
okini3939 | 2:a3e5edf84f74 | 94 | snprintf(uri, sizeof(uri), PACHUBE_URL "%s.csv?_method=put", conf.pachube_feedid); |
okini3939 | 0:bdb53686c194 | 95 | |
okini3939 | 2:a3e5edf84f74 | 96 | #ifdef DEBUG |
okini3939 | 2:a3e5edf84f74 | 97 | pc.printf("P: %s %s %s\r\n", conf.pachube_apikey, conf.pachube_feedid, uri); |
okini3939 | 2:a3e5edf84f74 | 98 | #endif |
okini3939 | 2:a3e5edf84f74 | 99 | // http->resetRequestHeaders(); |
okini3939 | 2:a3e5edf84f74 | 100 | // http->basicAuth(NULL, NULL); |
okini3939 | 2:a3e5edf84f74 | 101 | http.setTimeout(NET_TIMEOUT); |
okini3939 | 2:a3e5edf84f74 | 102 | http.setRequestHeader("X-PachubeApiKey", conf.pachube_apikey); |
okini3939 | 2:a3e5edf84f74 | 103 | ret = http.post(uri, csvContent, NULL); |
okini3939 | 0:bdb53686c194 | 104 | |
okini3939 | 0:bdb53686c194 | 105 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 106 | pc.printf("Pachube failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 107 | return -1; |
okini3939 | 0:bdb53686c194 | 108 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 109 | } else { |
okini3939 | 0:bdb53686c194 | 110 | pc.printf("Pachube success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 111 | #endif |
okini3939 | 0:bdb53686c194 | 112 | } |
okini3939 | 2:a3e5edf84f74 | 113 | #endif |
okini3939 | 0:bdb53686c194 | 114 | return 0; |
okini3939 | 0:bdb53686c194 | 115 | } |
okini3939 | 0:bdb53686c194 | 116 | |
okini3939 | 0:bdb53686c194 | 117 | int twitter (int num) { |
okini3939 | 2:a3e5edf84f74 | 118 | #ifdef USE_HTTP |
okini3939 | 2:a3e5edf84f74 | 119 | char buf[FORMAT_STR_SIZE]; |
okini3939 | 2:a3e5edf84f74 | 120 | HTTPClient http; |
okini3939 | 0:bdb53686c194 | 121 | HTTPMap msg; |
okini3939 | 0:bdb53686c194 | 122 | HTTPResult ret; |
okini3939 | 0:bdb53686c194 | 123 | |
okini3939 | 0:bdb53686c194 | 124 | if (! ethernet_flg || num >= CF_TWITTER_NUM) return 0; |
okini3939 | 2:a3e5edf84f74 | 125 | if (! conf.twitter_user[0] || ! conf.twitter_pwd[0] || ! conf.twitter_mesg[num][0]) { |
okini3939 | 0:bdb53686c194 | 126 | return -1; |
okini3939 | 0:bdb53686c194 | 127 | } |
okini3939 | 0:bdb53686c194 | 128 | |
okini3939 | 1:6c7141895545 | 129 | LED_NET_ACT_ON; |
okini3939 | 2:a3e5edf84f74 | 130 | format_str(conf.twitter_mesg[num], buf, sizeof_1(buf)); |
okini3939 | 0:bdb53686c194 | 131 | msg["status"] = buf; |
okini3939 | 0:bdb53686c194 | 132 | |
okini3939 | 2:a3e5edf84f74 | 133 | #ifdef DEBUG |
okini3939 | 2:a3e5edf84f74 | 134 | pc.printf("T: %s %s %s\r\n%s\r\n", conf.twitter_user, conf.twitter_pwd, conf.twitter_mesg[num], buf); |
okini3939 | 2:a3e5edf84f74 | 135 | #endif |
okini3939 | 2:a3e5edf84f74 | 136 | // http->resetRequestHeaders(); |
okini3939 | 2:a3e5edf84f74 | 137 | http.setTimeout(NET_TIMEOUT); |
okini3939 | 2:a3e5edf84f74 | 138 | http.basicAuth(conf.twitter_user, conf.twitter_pwd); |
okini3939 | 2:a3e5edf84f74 | 139 | ret = http.post(TWITTER_URL, msg, NULL); |
okini3939 | 0:bdb53686c194 | 140 | |
okini3939 | 0:bdb53686c194 | 141 | if (ret != HTTP_OK && ret != HTTP_PROCESSING) { |
okini3939 | 0:bdb53686c194 | 142 | pc.printf("Twitter failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 143 | return -1; |
okini3939 | 0:bdb53686c194 | 144 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 145 | } else { |
okini3939 | 0:bdb53686c194 | 146 | pc.printf("Twitter success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 147 | #endif |
okini3939 | 0:bdb53686c194 | 148 | } |
okini3939 | 2:a3e5edf84f74 | 149 | #endif |
okini3939 | 0:bdb53686c194 | 150 | return 0; |
okini3939 | 0:bdb53686c194 | 151 | } |
okini3939 | 0:bdb53686c194 | 152 | |
okini3939 | 0:bdb53686c194 | 153 | int email (int num) { |
okini3939 | 0:bdb53686c194 | 154 | #ifdef USE_EMAIL |
okini3939 | 2:a3e5edf84f74 | 155 | char buf[FORMAT_STR_SIZE]; |
okini3939 | 2:a3e5edf84f74 | 156 | static SMTPClient smtp; |
okini3939 | 0:bdb53686c194 | 157 | Host smtpserver; |
okini3939 | 0:bdb53686c194 | 158 | EmailMessage msg; |
okini3939 | 0:bdb53686c194 | 159 | SMTPResult ret; |
okini3939 | 0:bdb53686c194 | 160 | |
okini3939 | 0:bdb53686c194 | 161 | if (! ethernet_flg || num >= CF_MAIL_NUM) return 0; |
okini3939 | 2:a3e5edf84f74 | 162 | if (! conf.smtphost[0] || ! conf.mailfrom[0] || |
okini3939 | 2:a3e5edf84f74 | 163 | ! conf.mailto[num][0] || ! conf.mailmesg[num][0]) { |
okini3939 | 0:bdb53686c194 | 164 | return -1; |
okini3939 | 0:bdb53686c194 | 165 | } |
okini3939 | 0:bdb53686c194 | 166 | |
okini3939 | 1:6c7141895545 | 167 | LED_NET_ACT_ON; |
okini3939 | 2:a3e5edf84f74 | 168 | smtpserver.setName(conf.smtphost); |
okini3939 | 2:a3e5edf84f74 | 169 | smtpserver.setPort(conf.smtpport); |
okini3939 | 0:bdb53686c194 | 170 | smtp.setServer(smtpserver); |
okini3939 | 0:bdb53686c194 | 171 | smtp.setHeloDomain("mbed"); |
okini3939 | 2:a3e5edf84f74 | 172 | if (conf.smtpuser[0] && conf.smtppwd[0]) { |
okini3939 | 2:a3e5edf84f74 | 173 | // SMTP auth |
okini3939 | 2:a3e5edf84f74 | 174 | smtp.setAuth(conf.smtpuser, conf.smtppwd); |
okini3939 | 2:a3e5edf84f74 | 175 | } |
okini3939 | 0:bdb53686c194 | 176 | |
okini3939 | 2:a3e5edf84f74 | 177 | msg.setFrom(conf.mailfrom); |
okini3939 | 2:a3e5edf84f74 | 178 | msg.addTo(conf.mailto[num]); |
okini3939 | 0:bdb53686c194 | 179 | /* |
okini3939 | 0:bdb53686c194 | 180 | msg.printf("Content-Type: text/plain; charset=UTF-8\n"); |
okini3939 | 0:bdb53686c194 | 181 | msg.printf("Content-Transfer-Encoding: 8bit\n"); |
okini3939 | 2:a3e5edf84f74 | 182 | msg.printf("From: %s\n", conf.mailfrom); |
okini3939 | 2:a3e5edf84f74 | 183 | msg.printf("To: %s\n", conf.mailto[num]); |
okini3939 | 0:bdb53686c194 | 184 | */ |
okini3939 | 0:bdb53686c194 | 185 | msg.printf("Subject: Message from weather\n"); |
okini3939 | 2:a3e5edf84f74 | 186 | format_str(conf.mailmesg[num], buf, sizeof_1(buf)); |
okini3939 | 0:bdb53686c194 | 187 | msg.printf("\n%s\n", buf); |
okini3939 | 0:bdb53686c194 | 188 | |
okini3939 | 2:a3e5edf84f74 | 189 | #ifdef DEBUG |
okini3939 | 2:a3e5edf84f74 | 190 | pc.printf("SMTP %s %s %s\r\n%s\r\n", conf.smtphost, conf.mailfrom, conf.mailto[num], buf); |
okini3939 | 2:a3e5edf84f74 | 191 | #endif |
okini3939 | 0:bdb53686c194 | 192 | smtp.setTimeout(NET_TIMEOUT); |
okini3939 | 0:bdb53686c194 | 193 | ret = smtp.send(&msg); |
okini3939 | 0:bdb53686c194 | 194 | |
okini3939 | 0:bdb53686c194 | 195 | if (ret != HTTP_OK) { |
okini3939 | 0:bdb53686c194 | 196 | pc.printf("Mail failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 197 | return -1; |
okini3939 | 0:bdb53686c194 | 198 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 199 | } else { |
okini3939 | 0:bdb53686c194 | 200 | pc.printf("Mail success: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 201 | pc.printf("SMTP response %s", smtp.getLastResponse().c_str()); |
okini3939 | 0:bdb53686c194 | 202 | #endif |
okini3939 | 0:bdb53686c194 | 203 | } |
okini3939 | 0:bdb53686c194 | 204 | #endif |
okini3939 | 0:bdb53686c194 | 205 | return 0; |
okini3939 | 0:bdb53686c194 | 206 | } |
okini3939 | 0:bdb53686c194 | 207 | |
okini3939 | 2:a3e5edf84f74 | 208 | int ntp (char *hostname) { |
okini3939 | 0:bdb53686c194 | 209 | #ifdef USE_NTP |
okini3939 | 2:a3e5edf84f74 | 210 | time_t sec; |
okini3939 | 2:a3e5edf84f74 | 211 | |
okini3939 | 2:a3e5edf84f74 | 212 | if (! ethernet_flg) return 0; |
okini3939 | 2:a3e5edf84f74 | 213 | pc.printf("NTP: %s\r\n", hostname); |
okini3939 | 2:a3e5edf84f74 | 214 | |
okini3939 | 2:a3e5edf84f74 | 215 | if (! ntpdate(hostname, &sec)) { |
okini3939 | 2:a3e5edf84f74 | 216 | sec = sec + (60 * 60 * TIMEZONE); |
okini3939 | 2:a3e5edf84f74 | 217 | set_time(sec); |
okini3939 | 2:a3e5edf84f74 | 218 | #ifdef DEBUG |
okini3939 | 2:a3e5edf84f74 | 219 | pc.printf("NTP success %s\r\n", ctime(&sec)); |
okini3939 | 2:a3e5edf84f74 | 220 | #endif |
okini3939 | 2:a3e5edf84f74 | 221 | } else { |
okini3939 | 2:a3e5edf84f74 | 222 | pc.printf("NTP failure\r\n"); |
okini3939 | 2:a3e5edf84f74 | 223 | return -1; |
okini3939 | 2:a3e5edf84f74 | 224 | } |
okini3939 | 2:a3e5edf84f74 | 225 | |
okini3939 | 2:a3e5edf84f74 | 226 | /* |
okini3939 | 2:a3e5edf84f74 | 227 | // NTPClient ntp; |
okini3939 | 0:bdb53686c194 | 228 | Host ntpserver; |
okini3939 | 0:bdb53686c194 | 229 | NTPResult ret; |
okini3939 | 0:bdb53686c194 | 230 | time_t sec; |
okini3939 | 0:bdb53686c194 | 231 | |
okini3939 | 0:bdb53686c194 | 232 | if (! ethernet_flg) return 0; |
okini3939 | 2:a3e5edf84f74 | 233 | pc.printf("NTP: %s\r\n", hostname); |
okini3939 | 0:bdb53686c194 | 234 | |
okini3939 | 1:6c7141895545 | 235 | LED_NET_ACT_ON; |
okini3939 | 0:bdb53686c194 | 236 | ntpserver.setName(hostname); |
okini3939 | 0:bdb53686c194 | 237 | ntpserver.setPort(123); |
okini3939 | 0:bdb53686c194 | 238 | |
okini3939 | 2:a3e5edf84f74 | 239 | ret = ntp->setTime(ntpserver); |
okini3939 | 0:bdb53686c194 | 240 | if (ret == NTP_OK) { |
okini3939 | 0:bdb53686c194 | 241 | sec = time(NULL) + (60 * 60 * TIMEZONE); |
okini3939 | 0:bdb53686c194 | 242 | set_time(sec); |
okini3939 | 0:bdb53686c194 | 243 | } |
okini3939 | 0:bdb53686c194 | 244 | |
okini3939 | 0:bdb53686c194 | 245 | if (ret != NTP_OK) { |
okini3939 | 0:bdb53686c194 | 246 | pc.printf("NTP failure: %d\r\n", ret); |
okini3939 | 0:bdb53686c194 | 247 | return -1; |
okini3939 | 0:bdb53686c194 | 248 | #ifdef DEBUG |
okini3939 | 0:bdb53686c194 | 249 | } else { |
okini3939 | 0:bdb53686c194 | 250 | pc.printf("NTP success %s\r\n", ctime(&sec)); |
okini3939 | 0:bdb53686c194 | 251 | #endif |
okini3939 | 0:bdb53686c194 | 252 | } |
okini3939 | 2:a3e5edf84f74 | 253 | */ |
okini3939 | 0:bdb53686c194 | 254 | #endif |
okini3939 | 0:bdb53686c194 | 255 | return 0; |
okini3939 | 0:bdb53686c194 | 256 | } |
okini3939 | 0:bdb53686c194 | 257 | |
okini3939 | 0:bdb53686c194 | 258 | int init_net () { |
okini3939 | 0:bdb53686c194 | 259 | EthernetErr ethErr; |
okini3939 | 0:bdb53686c194 | 260 | |
okini3939 | 0:bdb53686c194 | 261 | eth_link.mode(PullUp); |
okini3939 | 0:bdb53686c194 | 262 | eth_speed.mode(PullUp); |
okini3939 | 0:bdb53686c194 | 263 | |
okini3939 | 2:a3e5edf84f74 | 264 | if (conf.ipaddr[0]) { |
okini3939 | 0:bdb53686c194 | 265 | |
okini3939 | 1:6c7141895545 | 266 | if (! eth_link) { |
okini3939 | 1:6c7141895545 | 267 | LED_NET_G_ON; |
okini3939 | 1:6c7141895545 | 268 | } |
okini3939 | 1:6c7141895545 | 269 | LED_NET_ACT_ON; |
okini3939 | 1:6c7141895545 | 270 | |
okini3939 | 2:a3e5edf84f74 | 271 | if (conf.ipaddr[0] == 255) { |
okini3939 | 0:bdb53686c194 | 272 | // dhcp ip address |
okini3939 | 0:bdb53686c194 | 273 | eth = new EthernetNetIf; |
okini3939 | 0:bdb53686c194 | 274 | } else { |
okini3939 | 0:bdb53686c194 | 275 | // static ip address |
okini3939 | 2:a3e5edf84f74 | 276 | eth = new EthernetNetIf(conf.ipaddr, conf.netmask, conf.gateway, conf.nameserver); |
okini3939 | 0:bdb53686c194 | 277 | } |
okini3939 | 0:bdb53686c194 | 278 | |
okini3939 | 0:bdb53686c194 | 279 | ethErr = eth->setup(); |
okini3939 | 0:bdb53686c194 | 280 | if (ethErr) { |
okini3939 | 0:bdb53686c194 | 281 | // error |
okini3939 | 1:6c7141895545 | 282 | LED_NET_Y_ON; |
okini3939 | 0:bdb53686c194 | 283 | return -1; |
okini3939 | 0:bdb53686c194 | 284 | } |
okini3939 | 0:bdb53686c194 | 285 | |
okini3939 | 0:bdb53686c194 | 286 | 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 | 287 | ethernet_flg = 1; |
okini3939 | 0:bdb53686c194 | 288 | pool_net(); |
okini3939 | 0:bdb53686c194 | 289 | |
okini3939 | 2:a3e5edf84f74 | 290 | #ifdef USE_HTTP |
okini3939 | 2:a3e5edf84f74 | 291 | // http = new HTTPClient; |
okini3939 | 2:a3e5edf84f74 | 292 | #endif |
okini3939 | 2:a3e5edf84f74 | 293 | // ntp = new NTPClient; |
okini3939 | 0:bdb53686c194 | 294 | } |
okini3939 | 0:bdb53686c194 | 295 | |
okini3939 | 2:a3e5edf84f74 | 296 | if (conf.ntpserver[0]) { |
okini3939 | 2:a3e5edf84f74 | 297 | ntp(conf.ntpserver); |
okini3939 | 0:bdb53686c194 | 298 | } |
okini3939 | 0:bdb53686c194 | 299 | |
okini3939 | 2:a3e5edf84f74 | 300 | if (conf.snmp_commname[0]) { |
okini3939 | 2:a3e5edf84f74 | 301 | snmp_init(conf.snmp_commname); |
okini3939 | 0:bdb53686c194 | 302 | } |
okini3939 | 0:bdb53686c194 | 303 | |
okini3939 | 0:bdb53686c194 | 304 | return 0; |
okini3939 | 0:bdb53686c194 | 305 | } |
okini3939 | 0:bdb53686c194 | 306 | |
okini3939 | 0:bdb53686c194 | 307 | void pool_net () { |
okini3939 | 0:bdb53686c194 | 308 | |
okini3939 | 0:bdb53686c194 | 309 | if (ethernet_flg) { |
okini3939 | 0:bdb53686c194 | 310 | Net::poll(); |
okini3939 | 0:bdb53686c194 | 311 | |
okini3939 | 1:6c7141895545 | 312 | if (! eth_link) { |
okini3939 | 1:6c7141895545 | 313 | LED_NET_G_ON; |
okini3939 | 1:6c7141895545 | 314 | } else { |
okini3939 | 1:6c7141895545 | 315 | LED_NET_GY_OFF; |
okini3939 | 1:6c7141895545 | 316 | } |
okini3939 | 0:bdb53686c194 | 317 | } |
okini3939 | 0:bdb53686c194 | 318 | } |