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:
Wed Oct 09 00:59:47 2013 +0000
Revision:
4:4e5e094a81c0
Parent:
3:d81f8a9f3733
Child:
5:506f580e7ead
Added HTTP Client test

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 #include "wifi.h"
SolderSplashLabs 0:039d229f3d6b 5
SolderSplashLabs 0:039d229f3d6b 6
SolderSplashLabs 0:039d229f3d6b 7 #include "UDPSocket.h"
SolderSplashLabs 0:039d229f3d6b 8
SolderSplashLabs 0:039d229f3d6b 9 #include "NTPClient.h"
SolderSplashLabs 4:4e5e094a81c0 10 #include "tcpTests.h"
SolderSplashLabs 0:039d229f3d6b 11 #include "main.h"
SolderSplashLabs 0:039d229f3d6b 12
SolderSplashLabs 0:039d229f3d6b 13 using namespace mbed_cc3000;
SolderSplashLabs 0:039d229f3d6b 14
SolderSplashLabs 0:039d229f3d6b 15 // TODO : List internal varibles & CC3000 buffers
SolderSplashLabs 0:039d229f3d6b 16 // AP point scanning
SolderSplashLabs 0:039d229f3d6b 17 // List open sockets
SolderSplashLabs 0:039d229f3d6b 18 // Overkill mode 2 TCP 2 UDP echo ports?
SolderSplashLabs 0:039d229f3d6b 19
SolderSplashLabs 0:039d229f3d6b 20 Serial pc(p19, p20);
SolderSplashLabs 0:039d229f3d6b 21 //Serial pc(USBTX, USBRX);
SolderSplashLabs 0:039d229f3d6b 22
SolderSplashLabs 0:039d229f3d6b 23 const int ECHO_SERVER_PORT_UDP = 81;
SolderSplashLabs 0:039d229f3d6b 24 uint8_t *HostToPing = (uint8_t *)"google.com";
SolderSplashLabs 4:4e5e094a81c0 25 tNetappIpconfigRetArgs ipinfo;
SolderSplashLabs 0:039d229f3d6b 26
SolderSplashLabs 0:039d229f3d6b 27 MENU_LEVEL currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 28
SolderSplashLabs 0:039d229f3d6b 29 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 30 /*!
SolderSplashLabs 0:039d229f3d6b 31 @brief Resolve a hostname and ping it
SolderSplashLabs 0:039d229f3d6b 32 */
SolderSplashLabs 0:039d229f3d6b 33 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 34 void PingTest ( void )
SolderSplashLabs 0:039d229f3d6b 35 {
SolderSplashLabs 0:039d229f3d6b 36 uint32_t ip;
SolderSplashLabs 0:039d229f3d6b 37 int32_t resolveRetCode = 0;
SolderSplashLabs 0:039d229f3d6b 38
SolderSplashLabs 0:039d229f3d6b 39 printf("Get an IP address for %s\r\n",HostToPing);
SolderSplashLabs 0:039d229f3d6b 40 resolveRetCode = wifi._socket.gethostbyname(HostToPing,strlen((const char *)HostToPing), &ip);
SolderSplashLabs 0:039d229f3d6b 41 printf("gethostbyname Returned code : %i \r\n", resolveRetCode);
SolderSplashLabs 0:039d229f3d6b 42
SolderSplashLabs 0:039d229f3d6b 43 if (resolveRetCode > -1)
SolderSplashLabs 0:039d229f3d6b 44 {
SolderSplashLabs 0:039d229f3d6b 45 uint8_t add0 = (ip >> 24);
SolderSplashLabs 0:039d229f3d6b 46 uint8_t add1 = (ip >> 16);
SolderSplashLabs 0:039d229f3d6b 47 uint8_t add2 = (ip >> 8);
SolderSplashLabs 0:039d229f3d6b 48 uint8_t add3 = (ip >> 0);
SolderSplashLabs 0:039d229f3d6b 49 printf("IP address of %s: %d.%d.%d.%d \r\n", HostToPing, add0, add1, add2, add3);
SolderSplashLabs 0:039d229f3d6b 50
SolderSplashLabs 0:039d229f3d6b 51 printf("Sending ping\r\n");
SolderSplashLabs 0:039d229f3d6b 52 uint32_t reply_count = wifi.ping(ip, 5, 500, 32);
SolderSplashLabs 0:039d229f3d6b 53 printf("Received %d replies\r\n", reply_count);
SolderSplashLabs 0:039d229f3d6b 54 printf("Ping complete.\r\n");
SolderSplashLabs 0:039d229f3d6b 55 }
SolderSplashLabs 0:039d229f3d6b 56 else
SolderSplashLabs 0:039d229f3d6b 57 {
SolderSplashLabs 0:039d229f3d6b 58 printf("Failed to resolve\r\n");
SolderSplashLabs 0:039d229f3d6b 59 }
SolderSplashLabs 0:039d229f3d6b 60 }
SolderSplashLabs 0:039d229f3d6b 61
SolderSplashLabs 0:039d229f3d6b 62 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 63 /*!
SolderSplashLabs 0:039d229f3d6b 64 @brief Test the NTP library
SolderSplashLabs 0:039d229f3d6b 65 */
SolderSplashLabs 0:039d229f3d6b 66 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 67 void NtpTest ( void )
SolderSplashLabs 0:039d229f3d6b 68 {
SolderSplashLabs 0:039d229f3d6b 69 NTPClient ntp;
SolderSplashLabs 0:039d229f3d6b 70
SolderSplashLabs 0:039d229f3d6b 71 if (ntp.setTime("0.pool.ntp.org",123,10000) == 0)
SolderSplashLabs 0:039d229f3d6b 72 {
SolderSplashLabs 0:039d229f3d6b 73 printf("Set time successfully\r\n");
SolderSplashLabs 0:039d229f3d6b 74 time_t ctTime;
SolderSplashLabs 0:039d229f3d6b 75 ctTime = time(NULL);
SolderSplashLabs 0:039d229f3d6b 76 printf("Time is set to (UTC): %s\r\n", ctime(&ctTime));
SolderSplashLabs 0:039d229f3d6b 77 }
SolderSplashLabs 0:039d229f3d6b 78 else
SolderSplashLabs 0:039d229f3d6b 79 {
SolderSplashLabs 0:039d229f3d6b 80 printf("NTP Update Failed\r\n");
SolderSplashLabs 0:039d229f3d6b 81 }
SolderSplashLabs 0:039d229f3d6b 82 }
SolderSplashLabs 0:039d229f3d6b 83
SolderSplashLabs 0:039d229f3d6b 84 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 85 /*!
SolderSplashLabs 0:039d229f3d6b 86 @brief Send a UDP Packet, wait for response
SolderSplashLabs 0:039d229f3d6b 87 */
SolderSplashLabs 0:039d229f3d6b 88 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 89 void UdpClientTest ( void )
SolderSplashLabs 0:039d229f3d6b 90 {
SolderSplashLabs 0:039d229f3d6b 91 UDPSocket socket;
SolderSplashLabs 0:039d229f3d6b 92 char buf[256];
SolderSplashLabs 0:039d229f3d6b 93 int n = 0;
SolderSplashLabs 0:039d229f3d6b 94 Endpoint outEndpoint;
SolderSplashLabs 0:039d229f3d6b 95 Endpoint inEndpoint;
SolderSplashLabs 0:039d229f3d6b 96
SolderSplashLabs 0:039d229f3d6b 97 if (0 == socket.bind(ECHO_SERVER_PORT_UDP) )
SolderSplashLabs 0:039d229f3d6b 98 {
SolderSplashLabs 0:039d229f3d6b 99
SolderSplashLabs 0:039d229f3d6b 100 // 2 second timeout
SolderSplashLabs 0:039d229f3d6b 101 socket.set_blocking(false, 2000);
SolderSplashLabs 2:3adf4a0475d7 102
SolderSplashLabs 2:3adf4a0475d7 103 printf("\r\n!! Press any key to stop !!\r\n\r\n");
SolderSplashLabs 0:039d229f3d6b 104
SolderSplashLabs 0:039d229f3d6b 105 while (1)
SolderSplashLabs 0:039d229f3d6b 106 {
SolderSplashLabs 0:039d229f3d6b 107 if( outEndpoint.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_UDP) < 0 )
SolderSplashLabs 0:039d229f3d6b 108 {
SolderSplashLabs 0:039d229f3d6b 109 printf("Failed to set endpoint address.\r\n");
SolderSplashLabs 0:039d229f3d6b 110 break;
SolderSplashLabs 0:039d229f3d6b 111 }
SolderSplashLabs 0:039d229f3d6b 112 else if ( socket.sendTo( outEndpoint, hello, sizeof(hello) ) < 0 )
SolderSplashLabs 0:039d229f3d6b 113 {
SolderSplashLabs 0:039d229f3d6b 114 printf("Failed to send the packet.\r\n");
SolderSplashLabs 0:039d229f3d6b 115 }
SolderSplashLabs 0:039d229f3d6b 116 else
SolderSplashLabs 0:039d229f3d6b 117 {
SolderSplashLabs 0:039d229f3d6b 118 // Message sent, recv reply
SolderSplashLabs 0:039d229f3d6b 119 printf("UDP Socket Sent : %s \r\n", hello);
SolderSplashLabs 0:039d229f3d6b 120 n = socket.receiveFrom( inEndpoint, buf, sizeof(buf) );
SolderSplashLabs 0:039d229f3d6b 121 if ( n < 0 )
SolderSplashLabs 0:039d229f3d6b 122 {
SolderSplashLabs 0:039d229f3d6b 123 printf("Failed to recv the UDP packet.\r\n");
SolderSplashLabs 0:039d229f3d6b 124 }
SolderSplashLabs 0:039d229f3d6b 125 else
SolderSplashLabs 0:039d229f3d6b 126 {
SolderSplashLabs 0:039d229f3d6b 127 buf[n] = '\0';
SolderSplashLabs 0:039d229f3d6b 128 printf("UDP Socket Recv'd : %s \r\n", buf);
SolderSplashLabs 0:039d229f3d6b 129 }
SolderSplashLabs 0:039d229f3d6b 130 }
SolderSplashLabs 0:039d229f3d6b 131
SolderSplashLabs 0:039d229f3d6b 132 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 133 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 134 {
SolderSplashLabs 0:039d229f3d6b 135 pc.getc();
SolderSplashLabs 0:039d229f3d6b 136 break;
SolderSplashLabs 0:039d229f3d6b 137 }
SolderSplashLabs 0:039d229f3d6b 138 }
SolderSplashLabs 0:039d229f3d6b 139
SolderSplashLabs 0:039d229f3d6b 140 socket.close();
SolderSplashLabs 0:039d229f3d6b 141 }
SolderSplashLabs 0:039d229f3d6b 142 else
SolderSplashLabs 0:039d229f3d6b 143 {
SolderSplashLabs 0:039d229f3d6b 144 // Failed to bind to the socket
SolderSplashLabs 0:039d229f3d6b 145 }
SolderSplashLabs 0:039d229f3d6b 146 }
SolderSplashLabs 0:039d229f3d6b 147
SolderSplashLabs 0:039d229f3d6b 148 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 149 /*!
SolderSplashLabs 0:039d229f3d6b 150 @brief Listen on a UDP port for messages
SolderSplashLabs 0:039d229f3d6b 151 */
SolderSplashLabs 0:039d229f3d6b 152 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 153 void UdpServerTest ( void )
SolderSplashLabs 0:039d229f3d6b 154 {
SolderSplashLabs 0:039d229f3d6b 155 UDPSocket socket;
SolderSplashLabs 0:039d229f3d6b 156 Endpoint client;
SolderSplashLabs 0:039d229f3d6b 157 char buffer[256];
SolderSplashLabs 0:039d229f3d6b 158 int n = 0;
SolderSplashLabs 0:039d229f3d6b 159
SolderSplashLabs 0:039d229f3d6b 160 if (0 == socket.bind(ECHO_SERVER_PORT_UDP) )
SolderSplashLabs 0:039d229f3d6b 161 {
SolderSplashLabs 2:3adf4a0475d7 162 printf("\r\n!! Press any key to stop listening !!\r\n\r\n");
SolderSplashLabs 2:3adf4a0475d7 163
SolderSplashLabs 0:039d229f3d6b 164 while (true)
SolderSplashLabs 0:039d229f3d6b 165 {
SolderSplashLabs 0:039d229f3d6b 166 printf("Waiting for packet...\r\n");
SolderSplashLabs 0:039d229f3d6b 167 n = socket.receiveFrom(client, buffer, sizeof(buffer));
SolderSplashLabs 0:039d229f3d6b 168
SolderSplashLabs 0:039d229f3d6b 169 printf("Received packet from: %s\n", client.get_address());
SolderSplashLabs 0:039d229f3d6b 170 socket.sendTo(client, buffer, n);
SolderSplashLabs 0:039d229f3d6b 171
SolderSplashLabs 0:039d229f3d6b 172 // Should we stop?
SolderSplashLabs 0:039d229f3d6b 173 if ( pc.readable() )
SolderSplashLabs 0:039d229f3d6b 174 {
SolderSplashLabs 0:039d229f3d6b 175 pc.getc();
SolderSplashLabs 0:039d229f3d6b 176 break;
SolderSplashLabs 0:039d229f3d6b 177 }
SolderSplashLabs 0:039d229f3d6b 178 }
SolderSplashLabs 0:039d229f3d6b 179 }
SolderSplashLabs 0:039d229f3d6b 180 }
SolderSplashLabs 0:039d229f3d6b 181
SolderSplashLabs 0:039d229f3d6b 182 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 183 /*!
SolderSplashLabs 0:039d229f3d6b 184 @brief Print menu header
SolderSplashLabs 0:039d229f3d6b 185 */
SolderSplashLabs 0:039d229f3d6b 186 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 187 void Menu_PrintHeader ( void )
SolderSplashLabs 0:039d229f3d6b 188 {
SolderSplashLabs 0:039d229f3d6b 189 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 190 {
SolderSplashLabs 0:039d229f3d6b 191 wifi.get_ip_config(&ipinfo);
SolderSplashLabs 0:039d229f3d6b 192 }
SolderSplashLabs 0:039d229f3d6b 193
SolderSplashLabs 0:039d229f3d6b 194 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 195 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 196 printf("| WiFi DipCortex / CC3000 Kitchen Sink |\r\n");
SolderSplashLabs 0:039d229f3d6b 197 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 198 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 199 {
SolderSplashLabs 0:039d229f3d6b 200 printf("| SSID : %-33s|\r\n", ipinfo.uaSSID);
SolderSplashLabs 0:039d229f3d6b 201 printf("| IP : %d.%d.%d.%d |\r\n", ipinfo.aucIP[3], ipinfo.aucIP[2], ipinfo.aucIP[1], ipinfo.aucIP[0]);
SolderSplashLabs 0:039d229f3d6b 202 }
SolderSplashLabs 3:d81f8a9f3733 203 else if ( wifi.is_connected() )
SolderSplashLabs 3:d81f8a9f3733 204 {
SolderSplashLabs 3:d81f8a9f3733 205 printf("| Connecting, waiting for DHCP |\r\n");
SolderSplashLabs 3:d81f8a9f3733 206 }
SolderSplashLabs 0:039d229f3d6b 207 else
SolderSplashLabs 0:039d229f3d6b 208 {
SolderSplashLabs 0:039d229f3d6b 209 printf("| Not Connected |\r\n");
SolderSplashLabs 0:039d229f3d6b 210 }
SolderSplashLabs 0:039d229f3d6b 211 printf("+-------------------------------------------+\r\n");
SolderSplashLabs 0:039d229f3d6b 212 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 213 }
SolderSplashLabs 0:039d229f3d6b 214
SolderSplashLabs 0:039d229f3d6b 215 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 216 /*!
SolderSplashLabs 0:039d229f3d6b 217 @brief Control the wifi connection
SolderSplashLabs 0:039d229f3d6b 218 */
SolderSplashLabs 0:039d229f3d6b 219 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 220 char WaitForSerialCommand ( void )
SolderSplashLabs 0:039d229f3d6b 221 {
SolderSplashLabs 0:039d229f3d6b 222 char charIn = 0;
SolderSplashLabs 0:039d229f3d6b 223 char prevCharIn;
SolderSplashLabs 0:039d229f3d6b 224
SolderSplashLabs 0:039d229f3d6b 225 while (1)
SolderSplashLabs 0:039d229f3d6b 226 {
SolderSplashLabs 0:039d229f3d6b 227 prevCharIn = charIn;
SolderSplashLabs 0:039d229f3d6b 228 charIn = pc.getc();
SolderSplashLabs 0:039d229f3d6b 229 printf("%c", charIn);
SolderSplashLabs 0:039d229f3d6b 230 if ((charIn == '\n') || (charIn == '\r'))
SolderSplashLabs 0:039d229f3d6b 231 {
SolderSplashLabs 0:039d229f3d6b 232 break;
SolderSplashLabs 0:039d229f3d6b 233 }
SolderSplashLabs 0:039d229f3d6b 234 }
SolderSplashLabs 0:039d229f3d6b 235
SolderSplashLabs 0:039d229f3d6b 236 return ( prevCharIn );
SolderSplashLabs 0:039d229f3d6b 237 }
SolderSplashLabs 0:039d229f3d6b 238
SolderSplashLabs 0:039d229f3d6b 239 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 240 /*!
SolderSplashLabs 3:d81f8a9f3733 241 @brief Configure the module for smart connect mode allow configuration over the air
SolderSplashLabs 3:d81f8a9f3733 242 */
SolderSplashLabs 3:d81f8a9f3733 243 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 3:d81f8a9f3733 244 void SmartConfig ( void )
SolderSplashLabs 3:d81f8a9f3733 245 {
SolderSplashLabs 3:d81f8a9f3733 246 // We dont want to auto reconnect to an access point
SolderSplashLabs 3:d81f8a9f3733 247 wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
SolderSplashLabs 3:d81f8a9f3733 248
SolderSplashLabs 3:d81f8a9f3733 249 // start smart config will disconnect, set the prefix
SolderSplashLabs 3:d81f8a9f3733 250 // wait for a message via a SmartConfig app, store it to the profile list
SolderSplashLabs 3:d81f8a9f3733 251 // finally it will reenable auto connection, triggering the module to connect to the new access point
SolderSplashLabs 3:d81f8a9f3733 252 wifi.start_smart_config(0);
SolderSplashLabs 3:d81f8a9f3733 253 }
SolderSplashLabs 3:d81f8a9f3733 254
SolderSplashLabs 3:d81f8a9f3733 255 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 3:d81f8a9f3733 256 /*!
SolderSplashLabs 0:039d229f3d6b 257 @brief Control the wifi connection
SolderSplashLabs 0:039d229f3d6b 258 */
SolderSplashLabs 0:039d229f3d6b 259 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 260 void Menu_ConnectionControl ( void )
SolderSplashLabs 0:039d229f3d6b 261 {
SolderSplashLabs 0:039d229f3d6b 262 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 263 printf(" 1 - Enable auto connect to any previous access point\r\n");
SolderSplashLabs 0:039d229f3d6b 264 printf(" 2 - Disable auto connect \r\n");
SolderSplashLabs 0:039d229f3d6b 265 printf(" 3 - Connect to %s \r\n", SSID);
SolderSplashLabs 0:039d229f3d6b 266 printf(" 4 - Disconnect \r\n");
SolderSplashLabs 3:d81f8a9f3733 267 printf(" 5 - Start SmartConfig \r\n");
SolderSplashLabs 3:d81f8a9f3733 268 printf(" 6 - Erase profiles \r\n");
SolderSplashLabs 3:d81f8a9f3733 269 printf(" 7 - Get Status \r\n");
SolderSplashLabs 0:039d229f3d6b 270 printf(" x - Top Menu \r\n");
SolderSplashLabs 0:039d229f3d6b 271
SolderSplashLabs 0:039d229f3d6b 272 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 273 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 274
SolderSplashLabs 0:039d229f3d6b 275 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 276 {
SolderSplashLabs 0:039d229f3d6b 277 case '1':
SolderSplashLabs 0:039d229f3d6b 278 wifi._wlan.ioctl_set_connection_policy(0, 1, 1);
SolderSplashLabs 0:039d229f3d6b 279 break;
SolderSplashLabs 0:039d229f3d6b 280
SolderSplashLabs 0:039d229f3d6b 281 case '2':
SolderSplashLabs 0:039d229f3d6b 282 wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
SolderSplashLabs 0:039d229f3d6b 283 break;
SolderSplashLabs 0:039d229f3d6b 284
SolderSplashLabs 2:3adf4a0475d7 285 case '3':
SolderSplashLabs 3:d81f8a9f3733 286
SolderSplashLabs 3:d81f8a9f3733 287 //wifi.start(0);
SolderSplashLabs 3:d81f8a9f3733 288
SolderSplashLabs 3:d81f8a9f3733 289 // Enable DHCP
SolderSplashLabs 3:d81f8a9f3733 290 wifi._netapp.dhcp(0, 0, 0, 0);
SolderSplashLabs 3:d81f8a9f3733 291
SolderSplashLabs 0:039d229f3d6b 292 if ( AP_SECURITY == NONE )
SolderSplashLabs 0:039d229f3d6b 293 {
SolderSplashLabs 0:039d229f3d6b 294 connect_to_ssid((uint8_t *)SSID);
SolderSplashLabs 0:039d229f3d6b 295 }
SolderSplashLabs 0:039d229f3d6b 296 else
SolderSplashLabs 0:039d229f3d6b 297 {
SolderSplashLabs 0:039d229f3d6b 298 connect_to_ssid(SSID,AP_KEY,AP_SECURITY);
SolderSplashLabs 0:039d229f3d6b 299 }
SolderSplashLabs 0:039d229f3d6b 300 break;
SolderSplashLabs 0:039d229f3d6b 301
SolderSplashLabs 0:039d229f3d6b 302 case '4' :
SolderSplashLabs 0:039d229f3d6b 303 wifi.disconnect();
SolderSplashLabs 2:3adf4a0475d7 304 wifi.stop();
SolderSplashLabs 0:039d229f3d6b 305 break;
SolderSplashLabs 0:039d229f3d6b 306
SolderSplashLabs 0:039d229f3d6b 307 case '5' :
SolderSplashLabs 3:d81f8a9f3733 308 SmartConfig();
SolderSplashLabs 3:d81f8a9f3733 309 break;
SolderSplashLabs 3:d81f8a9f3733 310
SolderSplashLabs 3:d81f8a9f3733 311 case '6' :
SolderSplashLabs 3:d81f8a9f3733 312 wifi._wlan.ioctl_del_profile(255);
SolderSplashLabs 3:d81f8a9f3733 313 break;
SolderSplashLabs 3:d81f8a9f3733 314
SolderSplashLabs 3:d81f8a9f3733 315 case '7' :
SolderSplashLabs 0:039d229f3d6b 316 print_cc3000_info();
SolderSplashLabs 0:039d229f3d6b 317 break;
SolderSplashLabs 0:039d229f3d6b 318
SolderSplashLabs 0:039d229f3d6b 319 case 'x':
SolderSplashLabs 0:039d229f3d6b 320 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 321 break;
SolderSplashLabs 0:039d229f3d6b 322 }
SolderSplashLabs 0:039d229f3d6b 323 }
SolderSplashLabs 0:039d229f3d6b 324
SolderSplashLabs 0:039d229f3d6b 325 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 326 /*!
SolderSplashLabs 0:039d229f3d6b 327 @brief
SolderSplashLabs 0:039d229f3d6b 328 */
SolderSplashLabs 0:039d229f3d6b 329 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 330 void Menu_UdpControl ( void )
SolderSplashLabs 0:039d229f3d6b 331 {
SolderSplashLabs 0:039d229f3d6b 332 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 333
SolderSplashLabs 0:039d229f3d6b 334 printf(" 1 - UDP Client, Connect to %s:%d\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_UDP);
SolderSplashLabs 0:039d229f3d6b 335 printf(" 2 - UDP Server \r\n");
SolderSplashLabs 0:039d229f3d6b 336 printf(" 3 - NTP Client \r\n");
SolderSplashLabs 0:039d229f3d6b 337 printf(" x - Exit to top menu \r\n");
SolderSplashLabs 0:039d229f3d6b 338
SolderSplashLabs 0:039d229f3d6b 339 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 340 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 341
SolderSplashLabs 0:039d229f3d6b 342 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 343 {
SolderSplashLabs 0:039d229f3d6b 344 case '1':
SolderSplashLabs 0:039d229f3d6b 345 UdpClientTest();
SolderSplashLabs 0:039d229f3d6b 346 break;
SolderSplashLabs 0:039d229f3d6b 347 case '2':
SolderSplashLabs 0:039d229f3d6b 348 UdpServerTest();
SolderSplashLabs 0:039d229f3d6b 349 break;
SolderSplashLabs 0:039d229f3d6b 350 case '3':
SolderSplashLabs 0:039d229f3d6b 351 NtpTest();
SolderSplashLabs 0:039d229f3d6b 352 break;
SolderSplashLabs 0:039d229f3d6b 353 case 'x':
SolderSplashLabs 0:039d229f3d6b 354 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 355 break;
SolderSplashLabs 0:039d229f3d6b 356 }
SolderSplashLabs 0:039d229f3d6b 357 }
SolderSplashLabs 0:039d229f3d6b 358
SolderSplashLabs 0:039d229f3d6b 359 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 360 /*!
SolderSplashLabs 0:039d229f3d6b 361 @brief
SolderSplashLabs 0:039d229f3d6b 362 */
SolderSplashLabs 0:039d229f3d6b 363 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 364 void Menu_TcpControl ( void )
SolderSplashLabs 0:039d229f3d6b 365 {
SolderSplashLabs 0:039d229f3d6b 366 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 367
SolderSplashLabs 0:039d229f3d6b 368 printf(" 1 - TCP Client, Connect to %s:%d\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP);
SolderSplashLabs 4:4e5e094a81c0 369 printf(" 2 - TCP Server, listen on %d.%d.%d.%d:%d\r\n", ipinfo.aucIP[3], ipinfo.aucIP[2], ipinfo.aucIP[1], ipinfo.aucIP[0], ECHO_SERVER_PORT_TCP);
SolderSplashLabs 0:039d229f3d6b 370 printf(" 3 - Web Socket Write \r\n");
SolderSplashLabs 0:039d229f3d6b 371 printf(" 4 - Web Socket Read \r\n");
SolderSplashLabs 4:4e5e094a81c0 372 printf(" 5 - HTTP Client \r\n");
SolderSplashLabs 0:039d229f3d6b 373 printf(" x - Exit to top menu ");
SolderSplashLabs 0:039d229f3d6b 374 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 375 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 376
SolderSplashLabs 0:039d229f3d6b 377 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 378 {
SolderSplashLabs 0:039d229f3d6b 379 case '1':
SolderSplashLabs 0:039d229f3d6b 380 TcpClientTest();
SolderSplashLabs 0:039d229f3d6b 381 break;
SolderSplashLabs 0:039d229f3d6b 382 case '2':
SolderSplashLabs 0:039d229f3d6b 383 TcpServerTest();
SolderSplashLabs 0:039d229f3d6b 384 break;
SolderSplashLabs 0:039d229f3d6b 385 case '3':
SolderSplashLabs 0:039d229f3d6b 386 WebSocketTest();
SolderSplashLabs 0:039d229f3d6b 387 break;
SolderSplashLabs 4:4e5e094a81c0 388 case '4':
SolderSplashLabs 4:4e5e094a81c0 389
SolderSplashLabs 4:4e5e094a81c0 390 break;
SolderSplashLabs 4:4e5e094a81c0 391 case '5':
SolderSplashLabs 4:4e5e094a81c0 392 HttpClientTest();
SolderSplashLabs 4:4e5e094a81c0 393 break;
SolderSplashLabs 0:039d229f3d6b 394 case 'x':
SolderSplashLabs 0:039d229f3d6b 395 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 396 break;
SolderSplashLabs 0:039d229f3d6b 397 }
SolderSplashLabs 0:039d229f3d6b 398 }
SolderSplashLabs 0:039d229f3d6b 399
SolderSplashLabs 0:039d229f3d6b 400
SolderSplashLabs 0:039d229f3d6b 401 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 402 /*!
SolderSplashLabs 0:039d229f3d6b 403 @brief Display a menu to the user
SolderSplashLabs 0:039d229f3d6b 404 */
SolderSplashLabs 0:039d229f3d6b 405 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 406 void Menu_Top ( void )
SolderSplashLabs 0:039d229f3d6b 407 {
SolderSplashLabs 0:039d229f3d6b 408 Menu_PrintHeader();
SolderSplashLabs 0:039d229f3d6b 409
SolderSplashLabs 0:039d229f3d6b 410 printf(" 1 - Connection control menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 411 printf(" 2 - TCP test menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 412 printf(" 3 - UDP test menu \r\n" );
SolderSplashLabs 0:039d229f3d6b 413 printf(" 4 - Connection status \r\n");
SolderSplashLabs 0:039d229f3d6b 414 printf(" 5 - Ping - %s \r\n", HostToPing);
SolderSplashLabs 2:3adf4a0475d7 415 printf(" x - Top Menu \r\n");
SolderSplashLabs 0:039d229f3d6b 416
SolderSplashLabs 0:039d229f3d6b 417 printf("\r\n");
SolderSplashLabs 0:039d229f3d6b 418 printf("Enter command character : ");
SolderSplashLabs 0:039d229f3d6b 419
SolderSplashLabs 0:039d229f3d6b 420 switch(WaitForSerialCommand())
SolderSplashLabs 0:039d229f3d6b 421 {
SolderSplashLabs 0:039d229f3d6b 422 case '1':
SolderSplashLabs 0:039d229f3d6b 423 currentMenu = MENU_CONNECTION;
SolderSplashLabs 0:039d229f3d6b 424 break;
SolderSplashLabs 0:039d229f3d6b 425 case '2':
SolderSplashLabs 0:039d229f3d6b 426 currentMenu = MENU_TCP;
SolderSplashLabs 0:039d229f3d6b 427 break;
SolderSplashLabs 0:039d229f3d6b 428 case '3':
SolderSplashLabs 0:039d229f3d6b 429 currentMenu = MENU_UDP;
SolderSplashLabs 0:039d229f3d6b 430 break;
SolderSplashLabs 0:039d229f3d6b 431 case '4':
SolderSplashLabs 0:039d229f3d6b 432 print_cc3000_info();
SolderSplashLabs 0:039d229f3d6b 433 break;
SolderSplashLabs 0:039d229f3d6b 434 case '5':
SolderSplashLabs 0:039d229f3d6b 435 PingTest();
SolderSplashLabs 0:039d229f3d6b 436 break;
SolderSplashLabs 0:039d229f3d6b 437 case 'x':
SolderSplashLabs 0:039d229f3d6b 438 currentMenu = MENU_TOP;
SolderSplashLabs 0:039d229f3d6b 439 break;
SolderSplashLabs 0:039d229f3d6b 440 }
SolderSplashLabs 0:039d229f3d6b 441 }
SolderSplashLabs 0:039d229f3d6b 442
SolderSplashLabs 0:039d229f3d6b 443 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 444 /*!
SolderSplashLabs 0:039d229f3d6b 445 @brief Pick which menu to display
SolderSplashLabs 0:039d229f3d6b 446 */
SolderSplashLabs 0:039d229f3d6b 447 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 448 void MenuSwitch ( void )
SolderSplashLabs 0:039d229f3d6b 449 {
SolderSplashLabs 0:039d229f3d6b 450 bool connected = false;
SolderSplashLabs 0:039d229f3d6b 451
SolderSplashLabs 0:039d229f3d6b 452 if ( wifi.is_dhcp_configured() )
SolderSplashLabs 0:039d229f3d6b 453 {
SolderSplashLabs 0:039d229f3d6b 454 connected = true;
SolderSplashLabs 0:039d229f3d6b 455 }
SolderSplashLabs 0:039d229f3d6b 456
SolderSplashLabs 0:039d229f3d6b 457 switch ( currentMenu )
SolderSplashLabs 0:039d229f3d6b 458 {
SolderSplashLabs 0:039d229f3d6b 459 case MENU_TOP :
SolderSplashLabs 2:3adf4a0475d7 460 Menu_Top();
SolderSplashLabs 0:039d229f3d6b 461 break;
SolderSplashLabs 0:039d229f3d6b 462
SolderSplashLabs 0:039d229f3d6b 463 case MENU_CONNECTION :
SolderSplashLabs 0:039d229f3d6b 464 Menu_ConnectionControl();
SolderSplashLabs 0:039d229f3d6b 465 break;
SolderSplashLabs 0:039d229f3d6b 466
SolderSplashLabs 0:039d229f3d6b 467 case MENU_TCP :
SolderSplashLabs 0:039d229f3d6b 468 if (connected) Menu_TcpControl();
SolderSplashLabs 0:039d229f3d6b 469 break;
SolderSplashLabs 0:039d229f3d6b 470
SolderSplashLabs 0:039d229f3d6b 471 case MENU_UDP :
SolderSplashLabs 0:039d229f3d6b 472 if (connected) Menu_UdpControl();
SolderSplashLabs 0:039d229f3d6b 473 break;
SolderSplashLabs 0:039d229f3d6b 474
SolderSplashLabs 0:039d229f3d6b 475 default :
SolderSplashLabs 0:039d229f3d6b 476 printf("Unknown command\r\n");
SolderSplashLabs 0:039d229f3d6b 477 break;
SolderSplashLabs 0:039d229f3d6b 478 }
SolderSplashLabs 0:039d229f3d6b 479 }
SolderSplashLabs 0:039d229f3d6b 480
SolderSplashLabs 0:039d229f3d6b 481 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 482 /*!
SolderSplashLabs 0:039d229f3d6b 483 @brief main loop
SolderSplashLabs 0:039d229f3d6b 484 */
SolderSplashLabs 0:039d229f3d6b 485 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:039d229f3d6b 486 int main( void )
SolderSplashLabs 0:039d229f3d6b 487 {
SolderSplashLabs 0:039d229f3d6b 488 // Initalise the WiFi Module
SolderSplashLabs 0:039d229f3d6b 489 init();
SolderSplashLabs 0:039d229f3d6b 490 pc.baud(SERIAL_BAUD_RATE);
SolderSplashLabs 0:039d229f3d6b 491 wifi.start(0);
SolderSplashLabs 0:039d229f3d6b 492
SolderSplashLabs 0:039d229f3d6b 493 while (1)
SolderSplashLabs 0:039d229f3d6b 494 {
SolderSplashLabs 0:039d229f3d6b 495 MenuSwitch();
SolderSplashLabs 0:039d229f3d6b 496 }
SolderSplashLabs 0:039d229f3d6b 497 }