WizFi250 AP mode, TCP Server Loopback example

Dependencies:   WizFi250Interface mbed

Committer:
jehoon
Date:
Wed Mar 30 08:01:20 2016 +0000
Revision:
0:c53cb06af402
WizFi250 AP TCP Server Loopback example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jehoon 0:c53cb06af402 1 #include "mbed.h"
jehoon 0:c53cb06af402 2 #include "WizFi250Interface.h"
jehoon 0:c53cb06af402 3
jehoon 0:c53cb06af402 4
jehoon 0:c53cb06af402 5 /* AP Info */
jehoon 0:c53cb06af402 6 #define SECURE WizFi250::SEC_WPA2_MIXED
jehoon 0:c53cb06af402 7 #define SSID "WizFi250_AP_TEST"
jehoon 0:c53cb06af402 8 #define PASS "1234567890"
jehoon 0:c53cb06af402 9
jehoon 0:c53cb06af402 10 /* Socket Info */
jehoon 0:c53cb06af402 11 #define PORT 5000
jehoon 0:c53cb06af402 12
jehoon 0:c53cb06af402 13 Serial pc(USBTX, USBRX);
jehoon 0:c53cb06af402 14
jehoon 0:c53cb06af402 15 /* network setup */
jehoon 0:c53cb06af402 16 WizFi250Interface wizfi250(P13,P14,P11,P12,P15,NC,115200);
jehoon 0:c53cb06af402 17 TCPSocketServer server;
jehoon 0:c53cb06af402 18 TCPSocketConnection client;
jehoon 0:c53cb06af402 19
jehoon 0:c53cb06af402 20 /* functions */
jehoon 0:c53cb06af402 21 int TryApUp();
jehoon 0:c53cb06af402 22 int TryServerUp();
jehoon 0:c53cb06af402 23 int WaitClient();
jehoon 0:c53cb06af402 24 int ApDown();
jehoon 0:c53cb06af402 25
jehoon 0:c53cb06af402 26 /* variables */
jehoon 0:c53cb06af402 27 int isListened = 0;
jehoon 0:c53cb06af402 28
jehoon 0:c53cb06af402 29 int main()
jehoon 0:c53cb06af402 30 {
jehoon 0:c53cb06af402 31 pc.baud(115200);
jehoon 0:c53cb06af402 32 pc.printf("Start Application AP TCP Server\r\n");
jehoon 0:c53cb06af402 33
jehoon 0:c53cb06af402 34
jehoon 0:c53cb06af402 35 if( TryApUp() < 0 ) return -1;
jehoon 0:c53cb06af402 36
jehoon 0:c53cb06af402 37 if( TryServerUp() < 0 ) return -1;
jehoon 0:c53cb06af402 38
jehoon 0:c53cb06af402 39 if( WaitClient() < 0 ) return -1;
jehoon 0:c53cb06af402 40
jehoon 0:c53cb06af402 41
jehoon 0:c53cb06af402 42 while( client.is_connected() )
jehoon 0:c53cb06af402 43 {
jehoon 0:c53cb06af402 44 int len = 0;
jehoon 0:c53cb06af402 45 char rcvBuf[1024] = {0,};
jehoon 0:c53cb06af402 46
jehoon 0:c53cb06af402 47 if( wizfi250.readable(0) > 0 )
jehoon 0:c53cb06af402 48 {
jehoon 0:c53cb06af402 49 len = client.receive(rcvBuf, 1023);
jehoon 0:c53cb06af402 50 if( len > 0 )
jehoon 0:c53cb06af402 51 {
jehoon 0:c53cb06af402 52 client.send(rcvBuf, len);
jehoon 0:c53cb06af402 53 }
jehoon 0:c53cb06af402 54 }
jehoon 0:c53cb06af402 55 }
jehoon 0:c53cb06af402 56
jehoon 0:c53cb06af402 57
jehoon 0:c53cb06af402 58 pc.printf("End Application\r\n");
jehoon 0:c53cb06af402 59 return 0;
jehoon 0:c53cb06af402 60 }
jehoon 0:c53cb06af402 61
jehoon 0:c53cb06af402 62
jehoon 0:c53cb06af402 63
jehoon 0:c53cb06af402 64 int TryApUp()
jehoon 0:c53cb06af402 65 {
jehoon 0:c53cb06af402 66
jehoon 0:c53cb06af402 67 if( wizfi250.isAssociated() == 1 ) return -1;
jehoon 0:c53cb06af402 68
jehoon 0:c53cb06af402 69 isListened = 0;
jehoon 0:c53cb06af402 70
jehoon 0:c53cb06af402 71 for(int i= 0; i<5; i++)
jehoon 0:c53cb06af402 72 {
jehoon 0:c53cb06af402 73 wizfi250.init();
jehoon 0:c53cb06af402 74 wizfi250.setAddress("192.168.0.2","255.255.255.0","192.168.0.2");
jehoon 0:c53cb06af402 75 if ( wizfi250.connect(SECURE, SSID, PASS, WizFi250::WM_AP) )
jehoon 0:c53cb06af402 76 continue;
jehoon 0:c53cb06af402 77 else
jehoon 0:c53cb06af402 78 {
jehoon 0:c53cb06af402 79 pc.printf("IP Address is %s\r\n", wizfi250.getIPAddress());
jehoon 0:c53cb06af402 80 return 0;
jehoon 0:c53cb06af402 81 }
jehoon 0:c53cb06af402 82 }
jehoon 0:c53cb06af402 83
jehoon 0:c53cb06af402 84 printf("Fail to make AP\r\n");
jehoon 0:c53cb06af402 85 return -1;
jehoon 0:c53cb06af402 86 }
jehoon 0:c53cb06af402 87
jehoon 0:c53cb06af402 88
jehoon 0:c53cb06af402 89 int TryServerUp()
jehoon 0:c53cb06af402 90 {
jehoon 0:c53cb06af402 91 if( wizfi250.isAssociated() != 1 ) return -1;
jehoon 0:c53cb06af402 92
jehoon 0:c53cb06af402 93 if( server.bind(PORT) < 0 )
jehoon 0:c53cb06af402 94 {
jehoon 0:c53cb06af402 95 pc.printf("Bind fail..\r\n");
jehoon 0:c53cb06af402 96 return -1;
jehoon 0:c53cb06af402 97 }
jehoon 0:c53cb06af402 98
jehoon 0:c53cb06af402 99 if( server.listen(1) < 0 )
jehoon 0:c53cb06af402 100 {
jehoon 0:c53cb06af402 101 pc.printf("Listen fail..\r\n");
jehoon 0:c53cb06af402 102 return -1;
jehoon 0:c53cb06af402 103 }
jehoon 0:c53cb06af402 104
jehoon 0:c53cb06af402 105 pc.printf("Listen PORT: %d\r\n",PORT);
jehoon 0:c53cb06af402 106 isListened = 1;
jehoon 0:c53cb06af402 107 return 0;
jehoon 0:c53cb06af402 108 }
jehoon 0:c53cb06af402 109
jehoon 0:c53cb06af402 110 int WaitClient()
jehoon 0:c53cb06af402 111 {
jehoon 0:c53cb06af402 112
jehoon 0:c53cb06af402 113 while( isListened )
jehoon 0:c53cb06af402 114 {
jehoon 0:c53cb06af402 115 if( server.accept(client) < 0 )
jehoon 0:c53cb06af402 116 {
jehoon 0:c53cb06af402 117 pc.printf("accept fail..\r\n");
jehoon 0:c53cb06af402 118 return -1;
jehoon 0:c53cb06af402 119 }
jehoon 0:c53cb06af402 120
jehoon 0:c53cb06af402 121 pc.printf("Connection Success!!\r\nIP: %s\r\n", client.get_address());
jehoon 0:c53cb06af402 122 return 0;
jehoon 0:c53cb06af402 123 }
jehoon 0:c53cb06af402 124
jehoon 0:c53cb06af402 125 return -1;
jehoon 0:c53cb06af402 126 }