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 00:03:54 2013 +0000
Revision:
2:3adf4a0475d7
Parent:
0:039d229f3d6b
Child:
3:d81f8a9f3733
Menu now displays if not connected on boot; Added reconnect to websocket write

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