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.

Revision:
3:d81f8a9f3733
Parent:
2:3adf4a0475d7
Child:
4:4e5e094a81c0
--- a/main.cpp	Tue Oct 08 00:03:54 2013 +0000
+++ b/main.cpp	Tue Oct 08 22:42:04 2013 +0000
@@ -22,7 +22,6 @@
 
 #define SERIAL_BAUD_RATE    115200
 Serial pc(p19, p20);
-extern cc3000 wifi;
 //Serial pc(USBTX, USBRX);
 
 const char* ECHO_SERVER_ADDRESS = "192.168.0.10";
@@ -32,14 +31,6 @@
 char hello[] = "Hello World\r\n";
 const char WEB_SOCKET_URL[] = {"ws://sockets.mbed.org/ws/SolderSplashLabs/wo"};
 
-typedef enum MENU_LEVEL
-{
-    MENU_TOP = 0,
-    MENU_CONNECTION,
-    MENU_TCP,
-    MENU_UDP    
-} MENU_LEVEL;
-
 MENU_LEVEL currentMenu = MENU_TOP;
 
 // ------------------------------------------------------------------------------------------------------------
@@ -207,7 +198,7 @@
                 break;
             }
             
-            wait_ms(250);
+            wait_ms(50);
             
             // Should we stop?
             if ( pc.readable() )
@@ -380,6 +371,10 @@
         printf("|   SSID : %-33s|\r\n", ipinfo.uaSSID);
         printf("|   IP : %d.%d.%d.%d                        |\r\n", ipinfo.aucIP[3], ipinfo.aucIP[2], ipinfo.aucIP[1], ipinfo.aucIP[0]);   
     }
+    else if ( wifi.is_connected() )
+    {
+        printf("|   Connecting, waiting for DHCP             |\r\n"); 
+    }
     else
     {
         printf("|   Not Connected                           |\r\n");   
@@ -414,6 +409,22 @@
 
 // ------------------------------------------------------------------------------------------------------------
 /*!
+    @brief Configure the module for smart connect mode allow configuration over the air
+*/
+// ------------------------------------------------------------------------------------------------------------
+void SmartConfig ( void )
+{
+    // We dont want to auto reconnect to an access point
+    wifi._wlan.ioctl_set_connection_policy(0, 0, 0);
+    
+    // start smart config will disconnect, set the prefix
+    // wait for a message via a SmartConfig app, store it to the profile list
+    // finally it will reenable auto connection, triggering the module to connect to the new access point
+    wifi.start_smart_config(0);
+}
+
+// ------------------------------------------------------------------------------------------------------------
+/*!
     @brief Control the wifi connection
 */
 // ------------------------------------------------------------------------------------------------------------
@@ -424,7 +435,9 @@
     printf(" 2 - Disable auto connect \r\n");
     printf(" 3 - Connect to %s \r\n", SSID);
     printf(" 4 - Disconnect \r\n");
-    printf(" 5 - Get Status \r\n");
+    printf(" 5 - Start SmartConfig \r\n");  
+    printf(" 6 - Erase profiles \r\n");  
+    printf(" 7 - Get Status \r\n");
     printf(" x - Top Menu \r\n");
     
     printf("\r\n");
@@ -441,7 +454,12 @@
         break;
         
         case '3':     
-            //wifi.start(0); 
+        
+            //wifi.start(0);
+            
+            // Enable DHCP
+            wifi._netapp.dhcp(0, 0, 0, 0);
+            
             if ( AP_SECURITY == NONE )
             {
                 connect_to_ssid((uint8_t *)SSID);
@@ -458,6 +476,14 @@
         break;
         
         case '5' :
+            SmartConfig();
+        break;
+        
+        case '6' :
+            wifi._wlan.ioctl_del_profile(255);
+        break;
+        
+        case '7' :
             print_cc3000_info();
         break;