gs fan
/
GSwifi_https_get
HTTPS(SSL) client and NTP client for GSwifi see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
main.cpp@2:608c25ba84ca, 2013-02-26 (annotated)
- Committer:
- gsfan
- Date:
- Tue Feb 26 06:23:33 2013 +0000
- Revision:
- 2:608c25ba84ca
- Parent:
- 1:b06de786490e
fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gsfan | 2:608c25ba84ca | 1 | /* |
gsfan | 2:608c25ba84ca | 2 | * HTTPS(SSL) client and NTP client |
gsfan | 2:608c25ba84ca | 3 | * |
gsfan | 2:608c25ba84ca | 4 | * Please update the firmware. |
gsfan | 2:608c25ba84ca | 5 | */ |
gsfan | 2:608c25ba84ca | 6 | |
gsfan | 0:4916aa89d55c | 7 | #include "mbed.h" |
gsfan | 0:4916aa89d55c | 8 | #include "GSwifi.h" |
gsfan | 0:4916aa89d55c | 9 | |
gsfan | 2:608c25ba84ca | 10 | #define HTTP_HOST "secure.sakura.ad.jp" |
gsfan | 2:608c25ba84ca | 11 | #define HTTP_PORT 443 |
gsfan | 2:608c25ba84ca | 12 | #define HTTP_URI "/" |
gsfan | 2:608c25ba84ca | 13 | #define NTP_HOST "ntp.jst.mfeed.ad.jp" |
gsfan | 0:4916aa89d55c | 14 | |
gsfan | 2:608c25ba84ca | 15 | #define SECURE GSwifi::GSSEC_WPA_PSK |
gsfan | 2:608c25ba84ca | 16 | #define SSID "SSID" |
gsfan | 2:608c25ba84ca | 17 | #define PASS "PASSPHRASE" |
gsfan | 0:4916aa89d55c | 18 | |
gsfan | 2:608c25ba84ca | 19 | GSwifi gs(p13, p14, p20); // TX, RX, Reset (no flow control) |
gsfan | 2:608c25ba84ca | 20 | //GSwifi gs(p13, p14, p12, P0_22, p20, NC, 115200); // TX, RX, CTS, RTS, Reset, Alarm |
gsfan | 2:608c25ba84ca | 21 | |
gsfan | 0:4916aa89d55c | 22 | Serial pc(USBTX, USBRX); |
gsfan | 0:4916aa89d55c | 23 | DigitalOut led1(LED1), led2(LED2); |
gsfan | 0:4916aa89d55c | 24 | |
gsfan | 2:608c25ba84ca | 25 | extern "C" |
gsfan | 2:608c25ba84ca | 26 | void HardFault_Handler() { |
gsfan | 2:608c25ba84ca | 27 | printf("Hard Fault!\r\n"); |
gsfan | 2:608c25ba84ca | 28 | gs.disconnect(); |
gsfan | 2:608c25ba84ca | 29 | exit(-1); |
gsfan | 2:608c25ba84ca | 30 | } |
gsfan | 2:608c25ba84ca | 31 | |
gsfan | 0:4916aa89d55c | 32 | void onGsReceive (int cid, int len) { |
gsfan | 0:4916aa89d55c | 33 | int i; |
gsfan | 0:4916aa89d55c | 34 | char buf[GS_DATA_SIZE + 1]; |
gsfan | 0:4916aa89d55c | 35 | |
gsfan | 0:4916aa89d55c | 36 | led2 = 1; |
gsfan | 0:4916aa89d55c | 37 | i = gs.recv(cid, buf, len); |
gsfan | 0:4916aa89d55c | 38 | buf[i] = 0; |
gsfan | 0:4916aa89d55c | 39 | pc.printf(buf); |
gsfan | 0:4916aa89d55c | 40 | } |
gsfan | 0:4916aa89d55c | 41 | |
gsfan | 0:4916aa89d55c | 42 | int main () { |
gsfan | 0:4916aa89d55c | 43 | int r; |
gsfan | 0:4916aa89d55c | 44 | IpAddr ipaddr, netmask, gateway, nameserver; |
gsfan | 0:4916aa89d55c | 45 | Host host; |
gsfan | 0:4916aa89d55c | 46 | time_t time; |
gsfan | 0:4916aa89d55c | 47 | struct tm *t; |
gsfan | 0:4916aa89d55c | 48 | |
gsfan | 0:4916aa89d55c | 49 | led1 = 1; |
gsfan | 0:4916aa89d55c | 50 | pc.baud(115200); |
gsfan | 0:4916aa89d55c | 51 | |
gsfan | 2:608c25ba84ca | 52 | pc.printf("connecting...\r\n"); |
gsfan | 0:4916aa89d55c | 53 | if (gs.connect(SECURE, SSID, PASS)) { |
gsfan | 0:4916aa89d55c | 54 | return -1; |
gsfan | 0:4916aa89d55c | 55 | } |
gsfan | 0:4916aa89d55c | 56 | gs.getAddress(ipaddr, netmask, gateway, nameserver); |
gsfan | 0:4916aa89d55c | 57 | pc.printf("ip %d.%d.%d.%d\r\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]); |
gsfan | 2:608c25ba84ca | 58 | |
gsfan | 0:4916aa89d55c | 59 | pc.printf("ntpdate\r\n"); |
gsfan | 2:608c25ba84ca | 60 | host.setName(NTP_HOST); |
gsfan | 0:4916aa89d55c | 61 | gs.ntpdate(host); |
gsfan | 0:4916aa89d55c | 62 | time = gs.getTime() + (9 * 60 * 60); |
gsfan | 0:4916aa89d55c | 63 | t = localtime(&time); |
gsfan | 0:4916aa89d55c | 64 | pc.printf("%04d-%02d-%02d, %02d:%02d:%02d\r\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); |
gsfan | 0:4916aa89d55c | 65 | |
gsfan | 2:608c25ba84ca | 66 | pc.printf("httpsGet\r\n"); |
gsfan | 0:4916aa89d55c | 67 | host.setName(HTTP_HOST); |
gsfan | 2:608c25ba84ca | 68 | host.setPort(HTTP_PORT); |
gsfan | 0:4916aa89d55c | 69 | r = gs.httpGet(host, HTTP_URI, 1, &onGsReceive); |
gsfan | 0:4916aa89d55c | 70 | if (r >= 0) { |
gsfan | 0:4916aa89d55c | 71 | for (;;) { |
gsfan | 0:4916aa89d55c | 72 | gs.poll(); |
gsfan | 0:4916aa89d55c | 73 | if (! gs.isConnected(r)) break; |
gsfan | 0:4916aa89d55c | 74 | |
gsfan | 0:4916aa89d55c | 75 | wait_ms(50); |
gsfan | 0:4916aa89d55c | 76 | led1 = !led1; |
gsfan | 0:4916aa89d55c | 77 | led2 = 0; |
gsfan | 0:4916aa89d55c | 78 | } |
gsfan | 0:4916aa89d55c | 79 | } |
gsfan | 1:b06de786490e | 80 | |
gsfan | 1:b06de786490e | 81 | pc.printf("exit\r\n"); |
gsfan | 0:4916aa89d55c | 82 | } |