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

Dependencies:   GSwifi mbed

main.cpp

Committer:
gsfan
Date:
2013-02-26
Revision:
2:608c25ba84ca
Parent:
1:b06de786490e

File content as of revision 2:608c25ba84ca:

/*
 * HTTPS(SSL) client and NTP client
 *
 * Please update the firmware.
 */

#include "mbed.h"
#include "GSwifi.h"

#define HTTP_HOST "secure.sakura.ad.jp"
#define HTTP_PORT 443
#define HTTP_URI "/"
#define NTP_HOST "ntp.jst.mfeed.ad.jp"

#define SECURE GSwifi::GSSEC_WPA_PSK
#define SSID "SSID"
#define PASS "PASSPHRASE"

GSwifi gs(p13, p14, p20); // TX, RX, Reset (no flow control)
//GSwifi gs(p13, p14, p12, P0_22, p20, NC, 115200); // TX, RX, CTS, RTS, Reset, Alarm

Serial pc(USBTX, USBRX);
DigitalOut led1(LED1), led2(LED2);

extern "C"
void HardFault_Handler() {
    printf("Hard Fault!\r\n");
    gs.disconnect();
    exit(-1);
}

void onGsReceive (int cid, int len) {
    int i;
    char buf[GS_DATA_SIZE + 1];
    
    led2 = 1;
    i = gs.recv(cid, buf, len);
    buf[i] = 0;
    pc.printf(buf);
}

int main () {
    int r;
    IpAddr ipaddr, netmask, gateway, nameserver;
    Host host;
    time_t time;
    struct tm *t;

    led1 = 1;
    pc.baud(115200);
    
    pc.printf("connecting...\r\n");
    if (gs.connect(SECURE, SSID, PASS)) {
        return -1;
    }
    gs.getAddress(ipaddr, netmask, gateway, nameserver);
    pc.printf("ip %d.%d.%d.%d\r\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);

    pc.printf("ntpdate\r\n");
    host.setName(NTP_HOST);
    gs.ntpdate(host);
    time = gs.getTime() + (9 * 60 * 60);
    t = localtime(&time);
    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);

    pc.printf("httpsGet\r\n");
    host.setName(HTTP_HOST);
    host.setPort(HTTP_PORT);
    r = gs.httpGet(host, HTTP_URI, 1, &onGsReceive);
    if (r >= 0) {
        for (;;) {
            gs.poll();
            if (! gs.isConnected(r)) break;

            wait_ms(50);
            led1 = !led1;
            led2 = 0;
        }
    }

    pc.printf("exit\r\n");
}