WiFi DipCortex USB CDC
Dependencies: HTTPClient NTPClient USBDevice WebSocketClient cc3000_hostdriver_mbedsocket mbed
Fork of WiFiDip-UsbKitchenSink by
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
main.cpp@4:ce953c80c5b3, 2014-02-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |