HTTPS(SSL) client and NTP client for GSwifi see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/

Dependencies:   GSwifi mbed

Committer:
gsfan
Date:
Tue Feb 26 06:23:33 2013 +0000
Revision:
2:608c25ba84ca
Parent:
1:b06de786490e
fix

Who changed what in which revision?

UserRevisionLine numberNew 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 }