WiFi DipCortex USB CDC

Dependencies:   HTTPClient NTPClient USBDevice WebSocketClient cc3000_hostdriver_mbedsocket mbed

Fork of WiFiDip-UsbKitchenSink by Carl - SolderSplash Labs

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

Demo shows you how to implement the CC3000 library with the WiFi DipCortex.

The demo shows :

  • USB CDC ( Serial ) Menu system allow control of the module and starting each example
  • Smart Connect
  • Manual connect
  • Connection status
  • Ping
  • TCP Client
  • TCP Server
  • Web Socket read/write to sockets.mbed.org
  • HTTP Client test Post, Put, Delete
  • Posting ADC data to Xively every 1 second
  • UDP Client
  • UDP Server
  • NTP Example, contacts time server to get the current time

You will need a Driver for the USB CDC port which can be found here : http://www.soldersplash.co.uk/docs/DipCortex-USB-CDC.zip

Please refer to : http://mbed.org/users/SolderSplashLabs/notebook/dipcortex---getting-started-with-mbed/ as well as the SolderSplash Forum for support http://forum.soldersplash.co.uk/viewforum.php?f=15

Committer:
SolderSplashLabs
Date:
Fri Feb 07 00:26:14 2014 +0000
Revision:
4:ce953c80c5b3
Parent:
3:15828ac052f1
Added mDNS after smart config

Who changed what in which revision?

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