Suga koubou
/
GSwifi_remote
http://mbed.org/users/okini3939/notebook/gainspan-wifi
main.cpp
- Committer:
- okini3939
- Date:
- 2012-06-26
- Revision:
- 0:aca4c7e7ed69
File content as of revision 0:aca4c7e7ed69:
#include "mbed.h" #include "GSwifi.h" //#define USE_SLEEP #define USE_STANDBY #if defined(TARGET_LPC11U24) Serial pc(USBTX, USBRX); #endif DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); //InterruptIn sw1(p23), sw2(p24), sw3(p25), sw4(p26); DigitalIn sw1(p23), sw2(p24), sw3(p25), sw4(p26); #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) GSwifi gs(p13, p14, p12, P0_22); // TX, RX, CTS, RTS DigitalOut gs_reset(p9), gs_wakeup(p10); #elif defined(TARGET_LPC11U24) GSwifi gs(p9, p10, p21, p22); // TX, RX, CTS, RTS DigitalOut gs_reset(p27), gs_wakeup(p28); #endif Host server; volatile int gsconnect = 0, button = 0; void isr_sw1 () { if (gsconnect == 0) gsconnect = 1; } void isr_sw2 () { button = 1; } void isr_sw3 () { button = 2; } void isr_sw4 () { button = 3; } void isr_udp (int cid, int acid, int len) { int i; char buf[20]; Host host; i = gs.recv(cid, buf, sizeof(buf), host); buf[i] = 0; if (i > 0 && strncmp("Welcome", buf, 7) == 0) { server.setIp(host.getIp()); } } void find () { int i; int cid; Host bloadcast; bloadcast.setPort(10123); bloadcast.setIp(IpAddr(255,255,255,255)); cid = gs.open(bloadcast, GSPROT_UDP, &isr_udp); if (cid >= 0) { gs.send(cid, "Hello", 5); for (i = 0; i < 15; i ++) { gs.poll(); wait_ms(100); } gs.close(cid); } } void key () { if (sw1 == 0 && gsconnect == 0) gsconnect = 1; if (sw2 == 0 && button == 0) button = 1; if (sw3 == 0 && button == 0) button = 2; if (sw4 == 0 && button == 0) button = 3; } int main() { int i; #if defined(TARGET_LPC11U24) pc.baud(115200); #endif gs_reset = 0; gs_wakeup = 1; sw1.mode(PullUp); sw2.mode(PullUp); sw3.mode(PullUp); sw4.mode(PullUp); wait_ms(100); /* sw1.fall(&isr_sw1); sw2.fall(&isr_sw2); sw3.fall(&isr_sw3); sw4.fall(&isr_sw4); */ server.setPort(10123); server.setIp(IpAddr(192,168,111,20)); gs_reset = 1; wait_ms(500); led1 = 1; for (;;) { key(); gs.poll(); /* switch (gs.getStatus()) { case GSSTAT_READY: sleep(); break; case GSSTAT_WAKEUP: gs.standby(600000); break; } */ if (gs.getStatus() == GSSTAT_WAKEUP) { gs.standby(600000); } if (gsconnect == 1) { // WPS led1 = 0; led3 = 1; if (gs.connect(GSSEC_WPS_BUTTON, NULL, NULL, 1)) { // if (gs.connect(GSSEC_WPA2_PSK, "GSTEST", "testpass12345", 1)) { led1 = 1; led2 = 0; gsconnect = 0; } else { led1 = 0; led2 = 1; gsconnect = 2; find(); #ifdef USE_SLEEP gs.deepSleep(); #endif #ifdef USE_STANDBY gs.standby(600000); #endif } led3 = 0; } if (button) { led4 = 1; if (gsconnect == 2) { int cid; char buf[10]; #ifdef USE_SLEEP gs.wakeup(); #endif #ifdef USE_STANDBY gs_wakeup = 0; while (gs.getStatus() != GSSTAT_WAKEUP) { gs.poll(); } gs_wakeup = 1; gs.wakeup(); #endif led3 = 1; cid = gs.open(server, GSPROT_UDP); if (cid >= 0) { buf[0] = '0' + button; gs.send(cid, buf, 1); gs.close(cid); } led3 = 0; #ifdef USE_SLEEP gs.deepSleep(); #endif #ifdef USE_STANDBY gs.standby(600000); #endif } button = 0; led4 = 0; } } }