WiFi DipCortex / CC3000 Demo - Contains a menu driven set of tests to initalise and control the CC3000 radio. Also allowing you to test various TCP and UDP connections.

Dependencies:   NTPClient WebSocketClient cc3000_hostdriver_mbedsocket mbed HTTPClient

http://www.soldersplash.co.uk/products/wifi-dipcortex/

Please Note, this example uses the serial port so you will need an external RS232 TTL to USB adapter.

Committer:
SolderSplashLabs
Date:
Tue Oct 08 22:42:04 2013 +0000
Revision:
3:d81f8a9f3733
Parent:
2:3adf4a0475d7
Child:
4:4e5e094a81c0
Added smartconfig, profile deleting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 0:039d229f3d6b 1
SolderSplashLabs 0:039d229f3d6b 2 #include "mbed.h"
SolderSplashLabs 0:039d229f3d6b 3 #include "cc3000.h"
SolderSplashLabs 0:039d229f3d6b 4
SolderSplashLabs 0:039d229f3d6b 5 #include "Websocket.h"
SolderSplashLabs 0:039d229f3d6b 6 #include "wifi.h"
SolderSplashLabs 0:039d229f3d6b 7
SolderSplashLabs 0:039d229f3d6b 8 #include "TCPSocketConnection.h"
SolderSplashLabs 0:039d229f3d6b 9 #include "TCPSocketServer.h"
SolderSplashLabs 0:039d229f3d6b 10
SolderSplashLabs 0:039d229f3d6b 11 #include "UDPSocket.h"
SolderSplashLabs 0:039d229f3d6b 12
SolderSplashLabs 0:039d229f3d6b 13 #include "NTPClient.h"
SolderSplashLabs 0:039d229f3d6b 14 #include "main.h"
SolderSplashLabs 0:039d229f3d6b 15
SolderSplashLabs 0:039d229f3d6b 16 using namespace mbed_cc3000;
SolderSplashLabs 0:039d229f3d6b 17
SolderSplashLabs 0:039d229f3d6b 18 // TODO : List internal varibles & CC3000 buffers
SolderSplashLabs 0:039d229f3d6b 19 // AP point scanning
SolderSplashLabs 0:039d229f3d6b 20 // List open sockets
SolderSplashLabs 0:039d229f3d6b 21 // Overkill mode 2 TCP 2 UDP echo ports?
SolderSplashLabs 0:039d229f3d6b 22
SolderSplashLabs 0:039d229f3d6b 23 #define SERIAL_BAUD_RATE 115200
SolderSplashLabs 0:039d229f3d6b 24 Serial pc(p19, p20);
SolderSplashLabs 0:039d229f3d6b 25 //Serial pc(USBTX, USBRX);
SolderSplashLabs 0:039d229f3d6b 26
SolderSplashLabs 0:039d229f3d6b 27 const char* ECHO_SERVER_ADDRESS = "192.168.0.10";
SolderSplashLabs 0:039d229f3d6b 28 const int ECHO_SERVER_PORT_TCP = 80;
SolderSplashLabs 0:039d229f3d6b 29 const int ECHO_SERVER_PORT_UDP = 81;
SolderSplashLabs 0:039d229f3d6b 30 uint8_t *HostToPing = (uint8_t *)"google.com";
SolderSplashLabs 0:039d229f3d6b 31 char hello[] = "Hello World\r\n";
SolderSplashLabs 0:039d229f3d6b 32 const char WEB_SOCKET_URL[] = {"ws://sockets.mbed.org/ws/SolderSplashLabs/wo"};
SolderSplashLabs 0:039d229f3d6b 33
SolderSplashLabs 0:039d229f3d6b 34 MENU_LEVEL currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 35
SolderSplashLabs 0:039d229f3d6b 36 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 37 /*!
SolderSplashLabs 0:039d229f3d6b 38 @brief Resolve a hostname and ping it
SolderSplashLabs 0:039d229f3d6b 39 */
SolderSplashLabs 0:039d229f3d6b 40 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 41 void PingTest ( void )
SolderSplashLabs 0:039d229f3d6b 42 {
SolderSplashLabs 0:039d229f3d6b 43 uint32_t ip;
SolderSplashLabs 0:039d229f3d6b 44 int32_t resolveRetCode = 0;
SolderSplashLabs 0:039d229f3d6b 45
SolderSplashLabs 0:039d229f3d6b 46 printf("Get an IP address for %s\r\n",HostToPing);
SolderSplashLabs 0:039d229f3d6b 47 resolveRetCode = wifi._socket.gethostbyname(HostToPing,strlen((const char *)HostToPing), &ip);
SolderSplashLabs 0:039d229f3d6b 48 printf("gethostbyname Returned code : %i \r\n", resolveRetCode);
SolderSplashLabs 0:039d229f3d6b 49
SolderSplashLabs 0:039d229f3d6b 50 if (resolveRetCode > -1)
SolderSplashLabs 0:039d229f3d6b 51 {
SolderSplashLabs 0:039d229f3d6b 52 uint8_t add0 = (ip >> 24);
SolderSplashLabs 0:039d229f3d6b 53 uint8_t add1 = (ip >> 16);
SolderSplashLabs 0:039d229f3d6b 54 uint8_t add2 = (ip >> 8);
SolderSplashLabs 0:039d229f3d6b 55 uint8_t add3 = (ip >> 0);
SolderSplashLabs 0:039d229f3d6b 56 printf("IP address of %s: %d.%d.%d.%d \r\n", HostToPing, add0, add1, add2, add3);
SolderSplashLabs 0:039d229f3d6b 57
SolderSplashLabs 0:039d229f3d6b 58 printf("Sending ping\r\n");
SolderSplashLabs 0:039d229f3d6b 59 uint32_t reply_count = wifi.ping(ip, 5, 500, 32);
SolderSplashLabs 0:039d229f3d6b 60 printf("Received %d replies\r\n", reply_count);
SolderSplashLabs 0:039d229f3d6b 61 printf("Ping complete.\r\n");
SolderSplashLabs 0:039d229f3d6b 62 }
SolderSplashLabs 0:039d229f3d6b 63 else
SolderSplashLabs 0:039d229f3d6b 64 {
SolderSplashLabs 0:039d229f3d6b 65 printf("Failed to resolve\r\n");
SolderSplashLabs 0:039d229f3d6b 66 }
SolderSplashLabs 0:039d229f3d6b 67 }
SolderSplashLabs 0:039d229f3d6b 68
SolderSplashLabs 0:039d229f3d6b 69 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 70 /*!
SolderSplashLabs 0:039d229f3d6b 71 @brief Test the NTP library
SolderSplashLabs 0:039d229f3d6b 72 */
SolderSplashLabs 0:039d229f3d6b 73 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 74 void NtpTest ( void )
SolderSplashLabs 0:039d229f3d6b 75 {
SolderSplashLabs 0:039d229f3d6b 76 NTPClient ntp;
SolderSplashLabs 0:039d229f3d6b 77
SolderSplashLabs 0:039d229f3d6b 78 if (ntp.setTime("0.pool.ntp.org",123,10000) == 0)
SolderSplashLabs 0:039d229f3d6b 79 {
SolderSplashLabs 0:039d229f3d6b 80 printf("Set time successfully\r\n");
SolderSplashLabs 0:039d229f3d6b 81 time_t ctTime;
SolderSplashLabs 0:039d229f3d6b 82 ctTime = time(NULL);
SolderSplashLabs 0:039d229f3d6b 83 printf("Time is set to (UTC): %s\r\n", ctime(&ctTime));
SolderSplashLabs 0:039d229f3d6b 84 }
SolderSplashLabs 0:039d229f3d6b 85 else
SolderSplashLabs 0:039d229f3d6b 86 {
SolderSplashLabs 0:039d229f3d6b 87 printf("NTP Update Failed\r\n");
SolderSplashLabs 0:039d229f3d6b 88 }
SolderSplashLabs 0:039d229f3d6b 89 }
SolderSplashLabs 0:039d229f3d6b 90
SolderSplashLabs 0:039d229f3d6b 91 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 92 /*!
SolderSplashLabs 2:3adf4a0475d7 93 @brief Open a WebSocket, send a string
SolderSplashLabs 0:039d229f3d6b 94 */
SolderSplashLabs 0:039d229f3d6b 95 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 96 void WebSocketTest ( void )
SolderSplashLabs 0:039d229f3d6b 97 {
SolderSplashLabs 0:039d229f3d6b 98 int res = 0;
SolderSplashLabs 2:3adf4a0475d7 99 uint16_t counter = 0;
SolderSplashLabs 2:3adf4a0475d7 100 uint16_t reconnects = 0;
SolderSplashLabs 2:3adf4a0475d7 101 uint8_t myMAC[8];
SolderSplashLabs 2:3adf4a0475d7 102 char websocketstr[100];
SolderSplashLabs 0:039d229f3d6b 103
SolderSplashLabs 2:3adf4a0475d7 104 wifi.get_mac_address(myMAC);
SolderSplashLabs 2:3adf4a0475d7 105
SolderSplashLabs 0:039d229f3d6b 106 Websocket ws((char *)WEB_SOCKET_URL);
SolderSplashLabs 0:039d229f3d6b 107 if ( ws.connect() )
SolderSplashLabs 0:039d229f3d6b 108 {
SolderSplashLabs 0:039d229f3d6b 109 printf("Connected to websocket server.\r\n");
SolderSplashLabs 0:039d229f3d6b 110
SolderSplashLabs 0:039d229f3d6b 111 printf("\r\n!! Press any key to stop sending !!\r\n\r\n");
SolderSplashLabs 0:039d229f3d6b 112 while (1)
SolderSplashLabs 0:039d229f3d6b 113 {
SolderSplashLabs 0:039d229f3d6b 114 counter ++;
SolderSplashLabs 2:3adf4a0475d7 115 sprintf(websocketstr, "WiFi DipCortex / CC3000 - %05d - %02x:%02x:%02x:%02x:%02x:%02x\r\n", counter, myMAC[0], myMAC[1], myMAC[2], myMAC[3], myMAC[4], myMAC[5]);
SolderSplashLabs 2:3adf4a0475d7 116 res = ws.send(websocketstr);
SolderSplashLabs 2:3adf4a0475d7 117 printf("Reconnects : %05d, Messages Sent : %05d, Websocket send returned : %d.\r\n", reconnects, counter, res);
SolderSplashLabs 0:039d229f3d6b 118
SolderSplashLabs 2:3adf4a0475d7 119 if ( -1 == res )
SolderSplashLabs 2:3adf4a0475d7 120 {
SolderSplashLabs 2:3adf4a0475d7 121 printf("Websocket Failure, reconnecting .... \r\n");
SolderSplashLabs 2:3adf4a0475d7 122 ws.close();
SolderSplashLabs 2:3adf4a0475d7 123 if ( ws.connect() )
SolderSplashLabs 2:3adf4a0475d7 124 {
SolderSplashLabs 2:3adf4a0475d7 125 // Reconnected
SolderSplashLabs 2:3adf4a0475d7 126 reconnects ++;
SolderSplashLabs 2:3adf4a0475d7 127 }
SolderSplashLabs 2:3adf4a0475d7 128 else
SolderSplashLabs 2:3adf4a0475d7 129 {
SolderSplashLabs 2:3adf4a0475d7 130 // Failure!
SolderSplashLabs 2:3adf4a0475d7 131 break;
SolderSplashLabs 2:3adf4a0475d7 132 }
SolderSplashLabs 2:3adf4a0475d7 133 }
SolderSplashLabs 0:039d229f3d6b 134
SolderSplashLabs 0:039d229f3d6b 135 wait_ms(1000);
SolderSplashLabs 0:039d229f3d6b 136
SolderSplashLabs 0:039d229f3d6b 137 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 138 {
SolderSplashLabs 0:039d229f3d6b 139 pc.getc();
SolderSplashLabs 0:039d229f3d6b 140 break;
SolderSplashLabs 0:039d229f3d6b 141 }
SolderSplashLabs 0:039d229f3d6b 142 }
SolderSplashLabs 0:039d229f3d6b 143
SolderSplashLabs 0:039d229f3d6b 144 ws.close();
SolderSplashLabs 0:039d229f3d6b 145 printf("Websocket Closed \r\n");
SolderSplashLabs 0:039d229f3d6b 146 }
SolderSplashLabs 0:039d229f3d6b 147 }
SolderSplashLabs 0:039d229f3d6b 148
SolderSplashLabs 0:039d229f3d6b 149 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 150 /*!
SolderSplashLabs 0:039d229f3d6b 151 @brief Open a TCP port send a string and wait for a reply
SolderSplashLabs 0:039d229f3d6b 152 */
SolderSplashLabs 0:039d229f3d6b 153 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 154 void TcpClientTest ( void )
SolderSplashLabs 0:039d229f3d6b 155 {
SolderSplashLabs 0:039d229f3d6b 156 uint16_t counter = 0;
SolderSplashLabs 0:039d229f3d6b 157 TCPSocketConnection socket;
SolderSplashLabs 0:039d229f3d6b 158 char buf[256];
SolderSplashLabs 0:039d229f3d6b 159 int n = 0;
SolderSplashLabs 0:039d229f3d6b 160
SolderSplashLabs 0:039d229f3d6b 161 if (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP) < 0)
SolderSplashLabs 0:039d229f3d6b 162 {
SolderSplashLabs 0:039d229f3d6b 163 printf("Unable to connect to (%s) on port (%d)\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP);
SolderSplashLabs 0:039d229f3d6b 164 }
SolderSplashLabs 0:039d229f3d6b 165 else
SolderSplashLabs 0:039d229f3d6b 166 {
SolderSplashLabs 0:039d229f3d6b 167 // Block for 1 second
SolderSplashLabs 0:039d229f3d6b 168 socket.set_blocking( true, 1000 );
SolderSplashLabs 0:039d229f3d6b 169
SolderSplashLabs 0:039d229f3d6b 170 printf("\r\n!! Press any key to stop sending !!\r\n\r\n");
SolderSplashLabs 0:039d229f3d6b 171 while (1)
SolderSplashLabs 0:039d229f3d6b 172 {
SolderSplashLabs 0:039d229f3d6b 173 counter ++;
SolderSplashLabs 0:039d229f3d6b 174
SolderSplashLabs 0:039d229f3d6b 175 n = socket.send_all(hello, sizeof(hello) - 1);
SolderSplashLabs 0:039d229f3d6b 176
SolderSplashLabs 0:039d229f3d6b 177 if ( n > 0 )
SolderSplashLabs 0:039d229f3d6b 178 {
SolderSplashLabs 0:039d229f3d6b 179 printf("%05d : TCP Socket Sent : Hello World\r\n", counter);
SolderSplashLabs 0:039d229f3d6b 180 }
SolderSplashLabs 0:039d229f3d6b 181 else
SolderSplashLabs 0:039d229f3d6b 182 {
SolderSplashLabs 0:039d229f3d6b 183 printf("Failed to send\r\n");
SolderSplashLabs 0:039d229f3d6b 184 break;
SolderSplashLabs 0:039d229f3d6b 185 }
SolderSplashLabs 0:039d229f3d6b 186
SolderSplashLabs 0:039d229f3d6b 187 n = socket.receive(buf, 256);
SolderSplashLabs 0:039d229f3d6b 188
SolderSplashLabs 0:039d229f3d6b 189 if ( n > 0 )
SolderSplashLabs 0:039d229f3d6b 190 {
SolderSplashLabs 0:039d229f3d6b 191 printf("TCP Socket Recv'd : %s \r\n", buf);
SolderSplashLabs 0:039d229f3d6b 192 buf[n] = '\0';
SolderSplashLabs 0:039d229f3d6b 193 }
SolderSplashLabs 0:039d229f3d6b 194 else
SolderSplashLabs 0:039d229f3d6b 195 {
SolderSplashLabs 0:039d229f3d6b 196 buf[0] = '\0';
SolderSplashLabs 0:039d229f3d6b 197 printf("Failed to Recv\r\n");
SolderSplashLabs 0:039d229f3d6b 198 break;
SolderSplashLabs 0:039d229f3d6b 199 }
SolderSplashLabs 0:039d229f3d6b 200
SolderSplashLabs 3:d81f8a9f3733 201 wait_ms(50);
SolderSplashLabs 0:039d229f3d6b 202
SolderSplashLabs 0:039d229f3d6b 203 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 204 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 205 {
SolderSplashLabs 0:039d229f3d6b 206 pc.getc();
SolderSplashLabs 0:039d229f3d6b 207 break;
SolderSplashLabs 0:039d229f3d6b 208 }
SolderSplashLabs 0:039d229f3d6b 209 }
SolderSplashLabs 0:039d229f3d6b 210 socket.close();
SolderSplashLabs 0:039d229f3d6b 211 printf("Completed.\r\n");
SolderSplashLabs 0:039d229f3d6b 212 }
SolderSplashLabs 0:039d229f3d6b 213 }
SolderSplashLabs 0:039d229f3d6b 214
SolderSplashLabs 0:039d229f3d6b 215 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 216 /*!
SolderSplashLabs 0:039d229f3d6b 217 @brief Opens a sockets to listen for connections
SolderSplashLabs 0:039d229f3d6b 218 */
SolderSplashLabs 0:039d229f3d6b 219 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 220 void TcpServerTest ( void )
SolderSplashLabs 0:039d229f3d6b 221 {
SolderSplashLabs 0:039d229f3d6b 222 int32_t status;
SolderSplashLabs 0:039d229f3d6b 223 char buffer[256];
SolderSplashLabs 0:039d229f3d6b 224 TCPSocketServer server;
SolderSplashLabs 0:039d229f3d6b 225 TCPSocketConnection client;
SolderSplashLabs 0:039d229f3d6b 226
SolderSplashLabs 0:039d229f3d6b 227 server.bind(15000);
SolderSplashLabs 0:039d229f3d6b 228 server.listen();
SolderSplashLabs 2:3adf4a0475d7 229 printf("\r\n!! Press any key to stop listening !!\r\n\r\n");
SolderSplashLabs 0:039d229f3d6b 230 while (1)
SolderSplashLabs 0:039d229f3d6b 231 {
SolderSplashLabs 0:039d229f3d6b 232 status = server.accept(client);
SolderSplashLabs 0:039d229f3d6b 233 if (status >= 0)
SolderSplashLabs 0:039d229f3d6b 234 {
SolderSplashLabs 0:039d229f3d6b 235 client.set_blocking(false, 1500); // Timeout after (1.5)s
SolderSplashLabs 0:039d229f3d6b 236 printf("Connection from: %s \r\n", client.get_address());
SolderSplashLabs 0:039d229f3d6b 237 //client.receive(buffer, sizeof(buffer));
SolderSplashLabs 0:039d229f3d6b 238 //printf("Received: %s \r\n",buffer);
SolderSplashLabs 0:039d229f3d6b 239 printf("Sending the message to the server. \r\n");
SolderSplashLabs 0:039d229f3d6b 240 client.send_all(hello, sizeof(hello));
SolderSplashLabs 0:039d229f3d6b 241 client.close();
SolderSplashLabs 0:039d229f3d6b 242 }
SolderSplashLabs 0:039d229f3d6b 243
SolderSplashLabs 0:039d229f3d6b 244 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 245 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 246 {
SolderSplashLabs 0:039d229f3d6b 247 pc.getc();
SolderSplashLabs 0:039d229f3d6b 248 break;
SolderSplashLabs 0:039d229f3d6b 249 }
SolderSplashLabs 0:039d229f3d6b 250 }
SolderSplashLabs 0:039d229f3d6b 251 }
SolderSplashLabs 0:039d229f3d6b 252
SolderSplashLabs 0:039d229f3d6b 253 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 254 /*!
SolderSplashLabs 0:039d229f3d6b 255 @brief Send a UDP Packet, wait for response
SolderSplashLabs 0:039d229f3d6b 256 */
SolderSplashLabs 0:039d229f3d6b 257 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 258 void UdpClientTest ( void )
SolderSplashLabs 0:039d229f3d6b 259 {
SolderSplashLabs 0:039d229f3d6b 260 UDPSocket socket;
SolderSplashLabs 0:039d229f3d6b 261 char buf[256];
SolderSplashLabs 0:039d229f3d6b 262 int n = 0;
SolderSplashLabs 0:039d229f3d6b 263 Endpoint outEndpoint;
SolderSplashLabs 0:039d229f3d6b 264 Endpoint inEndpoint;
SolderSplashLabs 0:039d229f3d6b 265
SolderSplashLabs 0:039d229f3d6b 266 if (0 == socket.bind(ECHO_SERVER_PORT_UDP) )
SolderSplashLabs 0:039d229f3d6b 267 {
SolderSplashLabs 0:039d229f3d6b 268
SolderSplashLabs 0:039d229f3d6b 269 // 2 second timeout
SolderSplashLabs 0:039d229f3d6b 270 socket.set_blocking(false, 2000);
SolderSplashLabs 2:3adf4a0475d7 271
SolderSplashLabs 2:3adf4a0475d7 272 printf("\r\n!! Press any key to stop !!\r\n\r\n");
SolderSplashLabs 0:039d229f3d6b 273
SolderSplashLabs 0:039d229f3d6b 274 while (1)
SolderSplashLabs 0:039d229f3d6b 275 {
SolderSplashLabs 0:039d229f3d6b 276 if( outEndpoint.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_UDP) < 0 )
SolderSplashLabs 0:039d229f3d6b 277 {
SolderSplashLabs 0:039d229f3d6b 278 printf("Failed to set endpoint address.\r\n");
SolderSplashLabs 0:039d229f3d6b 279 break;
SolderSplashLabs 0:039d229f3d6b 280 }
SolderSplashLabs 0:039d229f3d6b 281 else if ( socket.sendTo( outEndpoint, hello, sizeof(hello) ) < 0 )
SolderSplashLabs 0:039d229f3d6b 282 {
SolderSplashLabs 0:039d229f3d6b 283 printf("Failed to send the packet.\r\n");
SolderSplashLabs 0:039d229f3d6b 284 }
SolderSplashLabs 0:039d229f3d6b 285 else
SolderSplashLabs 0:039d229f3d6b 286 {
SolderSplashLabs 0:039d229f3d6b 287 // Message sent, recv reply
SolderSplashLabs 0:039d229f3d6b 288 printf("UDP Socket Sent : %s \r\n", hello);
SolderSplashLabs 0:039d229f3d6b 289 n = socket.receiveFrom( inEndpoint, buf, sizeof(buf) );
SolderSplashLabs 0:039d229f3d6b 290 if ( n < 0 )
SolderSplashLabs 0:039d229f3d6b 291 {
SolderSplashLabs 0:039d229f3d6b 292 printf("Failed to recv the UDP packet.\r\n");
SolderSplashLabs 0:039d229f3d6b 293 }
SolderSplashLabs 0:039d229f3d6b 294 else
SolderSplashLabs 0:039d229f3d6b 295 {
SolderSplashLabs 0:039d229f3d6b 296 buf[n] = '\0';
SolderSplashLabs 0:039d229f3d6b 297 printf("UDP Socket Recv'd : %s \r\n", buf);
SolderSplashLabs 0:039d229f3d6b 298 }
SolderSplashLabs 0:039d229f3d6b 299 }
SolderSplashLabs 0:039d229f3d6b 300
SolderSplashLabs 0:039d229f3d6b 301 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 302 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 303 {
SolderSplashLabs 0:039d229f3d6b 304 pc.getc();
SolderSplashLabs 0:039d229f3d6b 305 break;
SolderSplashLabs 0:039d229f3d6b 306 }
SolderSplashLabs 0:039d229f3d6b 307 }
SolderSplashLabs 0:039d229f3d6b 308
SolderSplashLabs 0:039d229f3d6b 309 socket.close();
SolderSplashLabs 0:039d229f3d6b 310 }
SolderSplashLabs 0:039d229f3d6b 311 else
SolderSplashLabs 0:039d229f3d6b 312 {
SolderSplashLabs 0:039d229f3d6b 313 // Failed to bind to the socket
SolderSplashLabs 0:039d229f3d6b 314 }
SolderSplashLabs 0:039d229f3d6b 315 }
SolderSplashLabs 0:039d229f3d6b 316
SolderSplashLabs 0:039d229f3d6b 317 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 318 /*!
SolderSplashLabs 0:039d229f3d6b 319 @brief Listen on a UDP port for messages
SolderSplashLabs 0:039d229f3d6b 320 */
SolderSplashLabs 0:039d229f3d6b 321 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 322 void UdpServerTest ( void )
SolderSplashLabs 0:039d229f3d6b 323 {
SolderSplashLabs 0:039d229f3d6b 324 UDPSocket socket;
SolderSplashLabs 0:039d229f3d6b 325 Endpoint client;
SolderSplashLabs 0:039d229f3d6b 326 char buffer[256];
SolderSplashLabs 0:039d229f3d6b 327 int n = 0;
SolderSplashLabs 0:039d229f3d6b 328
SolderSplashLabs 0:039d229f3d6b 329 if (0 == socket.bind(ECHO_SERVER_PORT_UDP) )
SolderSplashLabs 0:039d229f3d6b 330 {
SolderSplashLabs 2:3adf4a0475d7 331 printf("\r\n!! Press any key to stop listening !!\r\n\r\n");
SolderSplashLabs 2:3adf4a0475d7 332
SolderSplashLabs 0:039d229f3d6b 333 while (true)
SolderSplashLabs 0:039d229f3d6b 334 {
SolderSplashLabs 0:039d229f3d6b 335 printf("Waiting for packet...\r\n");
SolderSplashLabs 0:039d229f3d6b 336 n = socket.receiveFrom(client, buffer, sizeof(buffer));
SolderSplashLabs 0:039d229f3d6b 337
SolderSplashLabs 0:039d229f3d6b 338 printf("Received packet from: %s\n", client.get_address());
SolderSplashLabs 0:039d229f3d6b 339 socket.sendTo(client, buffer, n);
SolderSplashLabs 0:039d229f3d6b 340
SolderSplashLabs 0:039d229f3d6b 341 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 342 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 343 {
SolderSplashLabs 0:039d229f3d6b 344 pc.getc();
SolderSplashLabs 0:039d229f3d6b 345 break;
SolderSplashLabs 0:039d229f3d6b 346 }
SolderSplashLabs 0:039d229f3d6b 347 }
SolderSplashLabs 0:039d229f3d6b 348 }
SolderSplashLabs 0:039d229f3d6b 349 }
SolderSplashLabs 0:039d229f3d6b 350
SolderSplashLabs 0:039d229f3d6b 351 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 352 /*!
SolderSplashLabs 0:039d229f3d6b 353 @brief Print menu header
SolderSplashLabs 0:039d229f3d6b 354 */
SolderSplashLabs 0:039d229f3d6b 355 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 356 void Menu_PrintHeader ( void )
SolderSplashLabs 0:039d229f3d6b 357 {
SolderSplashLabs 0:039d229f3d6b 358 tNetappIpconfigRetArgs ipinfo;
SolderSplashLabs 0:039d229f3d6b 359
SolderSplashLabs 0:039d229f3d6b 360 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 361 {
SolderSplashLabs 0:039d229f3d6b 362 wifi.get_ip_config(&ipinfo);
SolderSplashLabs 0:039d229f3d6b 363 }
SolderSplashLabs 0:039d229f3d6b 364
SolderSplashLabs 0:039d229f3d6b 365 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 366 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 367 printf("| WiFi DipCortex / CC3000 Kitchen Sink |\r\n");
SolderSplashLabs 0:039d229f3d6b 368 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 369 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 370 {
SolderSplashLabs 0:039d229f3d6b 371 printf("| SSID : %-33s|\r\n", ipinfo.uaSSID);
SolderSplashLabs 0:039d229f3d6b 372 printf("| IP : %d.%d.%d.%d |\r\n", ipinfo.aucIP[3], ipinfo.aucIP[2], ipinfo.aucIP[1], ipinfo.aucIP[0]);
SolderSplashLabs 0:039d229f3d6b 373 }
SolderSplashLabs 3:d81f8a9f3733 374 else if ( wifi.is_connected() )
SolderSplashLabs 3:d81f8a9f3733 375 {
SolderSplashLabs 3:d81f8a9f3733 376 printf("| Connecting, waiting for DHCP |\r\n");
SolderSplashLabs 3:d81f8a9f3733 377 }
SolderSplashLabs 0:039d229f3d6b 378 else
SolderSplashLabs 0:039d229f3d6b 379 {
SolderSplashLabs 0:039d229f3d6b 380 printf("| Not Connected |\r\n");
SolderSplashLabs 0:039d229f3d6b 381 }
SolderSplashLabs 0:039d229f3d6b 382 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 383 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 384 }
SolderSplashLabs 0:039d229f3d6b 385
SolderSplashLabs 0:039d229f3d6b 386 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 387 /*!
SolderSplashLabs 0:039d229f3d6b 388 @brief Control the wifi connection
SolderSplashLabs 0:039d229f3d6b 389 */
SolderSplashLabs 0:039d229f3d6b 390 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 391 char WaitForSerialCommand ( void )
SolderSplashLabs 0:039d229f3d6b 392 {
SolderSplashLabs 0:039d229f3d6b 393 char charIn = 0;
SolderSplashLabs 0:039d229f3d6b 394 char prevCharIn;
SolderSplashLabs 0:039d229f3d6b 395
SolderSplashLabs 0:039d229f3d6b 396 while (1)
SolderSplashLabs 0:039d229f3d6b 397 {
SolderSplashLabs 0:039d229f3d6b 398 prevCharIn = charIn;
SolderSplashLabs 0:039d229f3d6b 399 charIn = pc.getc();
SolderSplashLabs 0:039d229f3d6b 400 printf("%c", charIn);
SolderSplashLabs 0:039d229f3d6b 401 if ((charIn == '\n') || (charIn == '\r'))
SolderSplashLabs 0:039d229f3d6b 402 {
SolderSplashLabs 0:039d229f3d6b 403 break;
SolderSplashLabs 0:039d229f3d6b 404 }
SolderSplashLabs 0:039d229f3d6b 405 }
SolderSplashLabs 0:039d229f3d6b 406
SolderSplashLabs 0:039d229f3d6b 407 return ( prevCharIn );
SolderSplashLabs 0:039d229f3d6b 408 }
SolderSplashLabs 0:039d229f3d6b 409
SolderSplashLabs 0:039d229f3d6b 410 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 411 /*!
SolderSplashLabs 3:d81f8a9f3733 412 @brief Configure the module for smart connect mode allow configuration over the air
SolderSplashLabs 3:d81f8a9f3733 413 */
SolderSplashLabs 3:d81f8a9f3733 414 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 3:d81f8a9f3733 415 void SmartConfig ( void )
SolderSplashLabs 3:d81f8a9f3733 416 {
SolderSplashLabs 3:d81f8a9f3733 417 // We dont want to auto reconnect to an access point
SolderSplashLabs 3:d81f8a9f3733 418 wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
SolderSplashLabs 3:d81f8a9f3733 419
SolderSplashLabs 3:d81f8a9f3733 420 // start smart config will disconnect, set the prefix
SolderSplashLabs 3:d81f8a9f3733 421 // wait for a message via a SmartConfig app, store it to the profile list
SolderSplashLabs 3:d81f8a9f3733 422 // finally it will reenable auto connection, triggering the module to connect to the new access point
SolderSplashLabs 3:d81f8a9f3733 423 wifi.start_smart_config(0);
SolderSplashLabs 3:d81f8a9f3733 424 }
SolderSplashLabs 3:d81f8a9f3733 425
SolderSplashLabs 3:d81f8a9f3733 426 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 3:d81f8a9f3733 427 /*!
SolderSplashLabs 0:039d229f3d6b 428 @brief Control the wifi connection
SolderSplashLabs 0:039d229f3d6b 429 */
SolderSplashLabs 0:039d229f3d6b 430 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 431 void Menu_ConnectionControl ( void )
SolderSplashLabs 0:039d229f3d6b 432 {
SolderSplashLabs 0:039d229f3d6b 433 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 434 printf(" 1 - Enable auto connect to any previous access point\r\n");
SolderSplashLabs 0:039d229f3d6b 435 printf(" 2 - Disable auto connect \r\n");
SolderSplashLabs 0:039d229f3d6b 436 printf(" 3 - Connect to %s \r\n", SSID);
SolderSplashLabs 0:039d229f3d6b 437 printf(" 4 - Disconnect \r\n");
SolderSplashLabs 3:d81f8a9f3733 438 printf(" 5 - Start SmartConfig \r\n");
SolderSplashLabs 3:d81f8a9f3733 439 printf(" 6 - Erase profiles \r\n");
SolderSplashLabs 3:d81f8a9f3733 440 printf(" 7 - Get Status \r\n");
SolderSplashLabs 0:039d229f3d6b 441 printf(" x - Top Menu \r\n");
SolderSplashLabs 0:039d229f3d6b 442
SolderSplashLabs 0:039d229f3d6b 443 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 444 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 445
SolderSplashLabs 0:039d229f3d6b 446 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 447 {
SolderSplashLabs 0:039d229f3d6b 448 case '1':
SolderSplashLabs 0:039d229f3d6b 449 wifi._wlan.ioctl_set_connection_policy(0, 1, 1);
SolderSplashLabs 0:039d229f3d6b 450 break;
SolderSplashLabs 0:039d229f3d6b 451
SolderSplashLabs 0:039d229f3d6b 452 case '2':
SolderSplashLabs 0:039d229f3d6b 453 wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
SolderSplashLabs 0:039d229f3d6b 454 break;
SolderSplashLabs 0:039d229f3d6b 455
SolderSplashLabs 2:3adf4a0475d7 456 case '3':
SolderSplashLabs 3:d81f8a9f3733 457
SolderSplashLabs 3:d81f8a9f3733 458 //wifi.start(0);
SolderSplashLabs 3:d81f8a9f3733 459
SolderSplashLabs 3:d81f8a9f3733 460 // Enable DHCP
SolderSplashLabs 3:d81f8a9f3733 461 wifi._netapp.dhcp(0, 0, 0, 0);
SolderSplashLabs 3:d81f8a9f3733 462
SolderSplashLabs 0:039d229f3d6b 463 if ( AP_SECURITY == NONE )
SolderSplashLabs 0:039d229f3d6b 464 {
SolderSplashLabs 0:039d229f3d6b 465 connect_to_ssid((uint8_t *)SSID);
SolderSplashLabs 0:039d229f3d6b 466 }
SolderSplashLabs 0:039d229f3d6b 467 else
SolderSplashLabs 0:039d229f3d6b 468 {
SolderSplashLabs 0:039d229f3d6b 469 connect_to_ssid(SSID,AP_KEY,AP_SECURITY);
SolderSplashLabs 0:039d229f3d6b 470 }
SolderSplashLabs 0:039d229f3d6b 471 break;
SolderSplashLabs 0:039d229f3d6b 472
SolderSplashLabs 0:039d229f3d6b 473 case '4' :
SolderSplashLabs 0:039d229f3d6b 474 wifi.disconnect();
SolderSplashLabs 2:3adf4a0475d7 475 wifi.stop();
SolderSplashLabs 0:039d229f3d6b 476 break;
SolderSplashLabs 0:039d229f3d6b 477
SolderSplashLabs 0:039d229f3d6b 478 case '5' :
SolderSplashLabs 3:d81f8a9f3733 479 SmartConfig();
SolderSplashLabs 3:d81f8a9f3733 480 break;
SolderSplashLabs 3:d81f8a9f3733 481
SolderSplashLabs 3:d81f8a9f3733 482 case '6' :
SolderSplashLabs 3:d81f8a9f3733 483 wifi._wlan.ioctl_del_profile(255);
SolderSplashLabs 3:d81f8a9f3733 484 break;
SolderSplashLabs 3:d81f8a9f3733 485
SolderSplashLabs 3:d81f8a9f3733 486 case '7' :
SolderSplashLabs 0:039d229f3d6b 487 print_cc3000_info();
SolderSplashLabs 0:039d229f3d6b 488 break;
SolderSplashLabs 0:039d229f3d6b 489
SolderSplashLabs 0:039d229f3d6b 490 case 'x':
SolderSplashLabs 0:039d229f3d6b 491 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 492 break;
SolderSplashLabs 0:039d229f3d6b 493 }
SolderSplashLabs 0:039d229f3d6b 494 }
SolderSplashLabs 0:039d229f3d6b 495
SolderSplashLabs 0:039d229f3d6b 496 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 497 /*!
SolderSplashLabs 0:039d229f3d6b 498 @brief
SolderSplashLabs 0:039d229f3d6b 499 */
SolderSplashLabs 0:039d229f3d6b 500 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 501 void Menu_UdpControl ( void )
SolderSplashLabs 0:039d229f3d6b 502 {
SolderSplashLabs 0:039d229f3d6b 503 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 504
SolderSplashLabs 0:039d229f3d6b 505 printf(" 1 - UDP Client, Connect to %s:%d\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_UDP);
SolderSplashLabs 0:039d229f3d6b 506 printf(" 2 - UDP Server \r\n");
SolderSplashLabs 0:039d229f3d6b 507 printf(" 3 - NTP Client \r\n");
SolderSplashLabs 0:039d229f3d6b 508 printf(" x - Exit to top menu \r\n");
SolderSplashLabs 0:039d229f3d6b 509
SolderSplashLabs 0:039d229f3d6b 510 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 511 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 512
SolderSplashLabs 0:039d229f3d6b 513 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 514 {
SolderSplashLabs 0:039d229f3d6b 515 case '1':
SolderSplashLabs 0:039d229f3d6b 516 UdpClientTest();
SolderSplashLabs 0:039d229f3d6b 517 break;
SolderSplashLabs 0:039d229f3d6b 518 case '2':
SolderSplashLabs 0:039d229f3d6b 519 UdpServerTest();
SolderSplashLabs 0:039d229f3d6b 520 break;
SolderSplashLabs 0:039d229f3d6b 521 case '3':
SolderSplashLabs 0:039d229f3d6b 522 NtpTest();
SolderSplashLabs 0:039d229f3d6b 523 break;
SolderSplashLabs 0:039d229f3d6b 524 case 'x':
SolderSplashLabs 0:039d229f3d6b 525 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 526 break;
SolderSplashLabs 0:039d229f3d6b 527 }
SolderSplashLabs 0:039d229f3d6b 528 }
SolderSplashLabs 0:039d229f3d6b 529
SolderSplashLabs 0:039d229f3d6b 530 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 531 /*!
SolderSplashLabs 0:039d229f3d6b 532 @brief
SolderSplashLabs 0:039d229f3d6b 533 */
SolderSplashLabs 0:039d229f3d6b 534 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 535 void Menu_TcpControl ( void )
SolderSplashLabs 0:039d229f3d6b 536 {
SolderSplashLabs 0:039d229f3d6b 537 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 538
SolderSplashLabs 0:039d229f3d6b 539 printf(" 1 - TCP Client, Connect to %s:%d\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP);
SolderSplashLabs 2:3adf4a0475d7 540 printf(" 2 - TCP Server, listen on port %d\r\n", ECHO_SERVER_PORT_TCP);
SolderSplashLabs 0:039d229f3d6b 541 printf(" 3 - Web Socket Write \r\n");
SolderSplashLabs 0:039d229f3d6b 542 printf(" 4 - Web Socket Read \r\n");
SolderSplashLabs 0:039d229f3d6b 543 printf(" x - Exit to top menu ");
SolderSplashLabs 0:039d229f3d6b 544 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 545 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 546
SolderSplashLabs 0:039d229f3d6b 547 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 548 {
SolderSplashLabs 0:039d229f3d6b 549 case '1':
SolderSplashLabs 0:039d229f3d6b 550 TcpClientTest();
SolderSplashLabs 0:039d229f3d6b 551 break;
SolderSplashLabs 0:039d229f3d6b 552 case '2':
SolderSplashLabs 0:039d229f3d6b 553 TcpServerTest();
SolderSplashLabs 0:039d229f3d6b 554 break;
SolderSplashLabs 0:039d229f3d6b 555 case '3':
SolderSplashLabs 0:039d229f3d6b 556 WebSocketTest();
SolderSplashLabs 0:039d229f3d6b 557 break;
SolderSplashLabs 0:039d229f3d6b 558 case 'x':
SolderSplashLabs 0:039d229f3d6b 559 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 560 break;
SolderSplashLabs 0:039d229f3d6b 561 }
SolderSplashLabs 0:039d229f3d6b 562 }
SolderSplashLabs 0:039d229f3d6b 563
SolderSplashLabs 0:039d229f3d6b 564
SolderSplashLabs 0:039d229f3d6b 565 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 566 /*!
SolderSplashLabs 0:039d229f3d6b 567 @brief Display a menu to the user
SolderSplashLabs 0:039d229f3d6b 568 */
SolderSplashLabs 0:039d229f3d6b 569 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 570 void Menu_Top ( void )
SolderSplashLabs 0:039d229f3d6b 571 {
SolderSplashLabs 0:039d229f3d6b 572 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 573
SolderSplashLabs 0:039d229f3d6b 574 printf(" 1 - Connection control menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 575 printf(" 2 - TCP test menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 576 printf(" 3 - UDP test menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 577 printf(" 4 - Connection status \r\n");
SolderSplashLabs 0:039d229f3d6b 578 printf(" 5 - Ping - %s \r\n", HostToPing);
SolderSplashLabs 2:3adf4a0475d7 579 printf(" x - Top Menu \r\n");
SolderSplashLabs 0:039d229f3d6b 580
SolderSplashLabs 0:039d229f3d6b 581 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 582 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 583
SolderSplashLabs 0:039d229f3d6b 584 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 585 {
SolderSplashLabs 0:039d229f3d6b 586 case '1':
SolderSplashLabs 0:039d229f3d6b 587 currentMenu = MENU_CONNECTION;
SolderSplashLabs 0:039d229f3d6b 588 break;
SolderSplashLabs 0:039d229f3d6b 589 case '2':
SolderSplashLabs 0:039d229f3d6b 590 currentMenu = MENU_TCP;
SolderSplashLabs 0:039d229f3d6b 591 break;
SolderSplashLabs 0:039d229f3d6b 592 case '3':
SolderSplashLabs 0:039d229f3d6b 593 currentMenu = MENU_UDP;
SolderSplashLabs 0:039d229f3d6b 594 break;
SolderSplashLabs 0:039d229f3d6b 595 case '4':
SolderSplashLabs 0:039d229f3d6b 596 print_cc3000_info();
SolderSplashLabs 0:039d229f3d6b 597 break;
SolderSplashLabs 0:039d229f3d6b 598 case '5':
SolderSplashLabs 0:039d229f3d6b 599 PingTest();
SolderSplashLabs 0:039d229f3d6b 600 break;
SolderSplashLabs 0:039d229f3d6b 601 case 'x':
SolderSplashLabs 0:039d229f3d6b 602 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 603 break;
SolderSplashLabs 0:039d229f3d6b 604 }
SolderSplashLabs 0:039d229f3d6b 605 }
SolderSplashLabs 0:039d229f3d6b 606
SolderSplashLabs 0:039d229f3d6b 607 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 608 /*!
SolderSplashLabs 0:039d229f3d6b 609 @brief Pick which menu to display
SolderSplashLabs 0:039d229f3d6b 610 */
SolderSplashLabs 0:039d229f3d6b 611 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 612 void MenuSwitch ( void )
SolderSplashLabs 0:039d229f3d6b 613 {
SolderSplashLabs 0:039d229f3d6b 614 bool connected = false;
SolderSplashLabs 0:039d229f3d6b 615
SolderSplashLabs 0:039d229f3d6b 616 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 617 {
SolderSplashLabs 0:039d229f3d6b 618 connected = true;
SolderSplashLabs 0:039d229f3d6b 619 }
SolderSplashLabs 0:039d229f3d6b 620
SolderSplashLabs 0:039d229f3d6b 621 switch ( currentMenu )
SolderSplashLabs 0:039d229f3d6b 622 {
SolderSplashLabs 0:039d229f3d6b 623 case MENU_TOP :
SolderSplashLabs 2:3adf4a0475d7 624 Menu_Top();
SolderSplashLabs 0:039d229f3d6b 625 break;
SolderSplashLabs 0:039d229f3d6b 626
SolderSplashLabs 0:039d229f3d6b 627 case MENU_CONNECTION :
SolderSplashLabs 0:039d229f3d6b 628 Menu_ConnectionControl();
SolderSplashLabs 0:039d229f3d6b 629 break;
SolderSplashLabs 0:039d229f3d6b 630
SolderSplashLabs 0:039d229f3d6b 631 case MENU_TCP :
SolderSplashLabs 0:039d229f3d6b 632 if (connected) Menu_TcpControl();
SolderSplashLabs 0:039d229f3d6b 633 break;
SolderSplashLabs 0:039d229f3d6b 634
SolderSplashLabs 0:039d229f3d6b 635 case MENU_UDP :
SolderSplashLabs 0:039d229f3d6b 636 if (connected) Menu_UdpControl();
SolderSplashLabs 0:039d229f3d6b 637 break;
SolderSplashLabs 0:039d229f3d6b 638
SolderSplashLabs 0:039d229f3d6b 639 default :
SolderSplashLabs 0:039d229f3d6b 640 printf("Unknown command\r\n");
SolderSplashLabs 0:039d229f3d6b 641 break;
SolderSplashLabs 0:039d229f3d6b 642 }
SolderSplashLabs 0:039d229f3d6b 643 }
SolderSplashLabs 0:039d229f3d6b 644
SolderSplashLabs 0:039d229f3d6b 645 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 646 /*!
SolderSplashLabs 0:039d229f3d6b 647 @brief main loop
SolderSplashLabs 0:039d229f3d6b 648 */
SolderSplashLabs 0:039d229f3d6b 649 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 650 int main( void )
SolderSplashLabs 0:039d229f3d6b 651 {
SolderSplashLabs 0:039d229f3d6b 652 // Initalise the WiFi Module
SolderSplashLabs 0:039d229f3d6b 653 init();
SolderSplashLabs 0:039d229f3d6b 654 pc.baud(SERIAL_BAUD_RATE);
SolderSplashLabs 0:039d229f3d6b 655 wifi.start(0);
SolderSplashLabs 0:039d229f3d6b 656
SolderSplashLabs 0:039d229f3d6b 657 while (1)
SolderSplashLabs 0:039d229f3d6b 658 {
SolderSplashLabs 0:039d229f3d6b 659 MenuSwitch();
SolderSplashLabs 0:039d229f3d6b 660 }
SolderSplashLabs 0:039d229f3d6b 661 }