Simple example demonstrating WiConnect host library web setup feature.

Dependencies:   WiConnect mbed

Revision:
1:44eae7ea80c7
Child:
4:3e2bd0076147
Child:
6:1e3eb95956b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example.cpp	Wed Aug 13 04:42:25 2014 -0700
@@ -0,0 +1,154 @@
+/**
+ * @example web_setup/example.cpp
+ *
+ * This is an example of using the web setup network API to
+ * configure the module network credentials remotely.
+ *
+ * It works as follows:
+ * 1. Instantiate the WiConnect Library
+ * 2. Initiate Communication with WiFi Module
+ * 3. Start WebSetup with specified parameters
+ * 4. Wait for web setup webpage to complete
+ * 5. That's it!
+ *
+ *
+ */
+
+
+/******************************************************************************
+ * Example Variables
+ */
+
+// This is the name of the WebSetup network
+// Look for this name in your WiFi settings
+// (e.g. your phone's list of WiFi networks in the WiFi settings menu)
+// tip: add double-quotes around SSID to add spaces to name
+#define WEB_SETUP_SSID "\"WiConnect WebSetup Example\""
+
+// This is the password for the WebSetup network
+// Leave as empty string (e.g "") to create OPEN network
+#define WEB_SETUP_PASSWORD "password"
+
+
+
+
+/******************************************************************************
+ * Includes
+ */
+
+// include C library headers
+#include <stdio.h> // needed for printf
+
+// include target specific defines
+#include "target_config.h"
+// include the Wiconnect Host Library API header
+#include "Wiconnect.h"
+
+
+
+/******************************************************************************
+ * Local Functions
+ */
+static void webSetupCompleteCallback(WiconnectResult result, void *arg1, void *arg2);
+
+
+/******************************************************************************
+ * Global Defines
+ */
+
+
+// Serial used for printfs to terminal (i.e. NOT used for WiConnect)
+static Serial consoleSerial(STDIO_UART_TX, STDIO_UART_RX);
+
+// Buffer used internally by WiConnect library, note that this is optional
+static uint8_t wiconnectInternalBuffer[256];
+
+// Flag that indicate websetup has completed
+static volatile bool webSetupCompleteFlag = false;
+
+
+/******************************************************************************
+ * Starting point of application
+ */
+int main(int argc, char **argv)
+{
+    consoleSerial.baud(115200); // console terminal to 115200 baud
+
+    //-------------------------------------------------------------------------
+    // STEP 1: Instantiate WiConnect Library
+    //-------------------------------------------------------------------------
+
+    // Setup  wiconnect serial interface configuration
+    // Here we only specify the rx buffer size and not rx buffer pointer, this means
+    // The serial RX buffer will be dynamically allocated
+    SerialConfig serialConfig(WICONNECT_RX_PIN, WICONNECT_TX_PIN, 256, NULL);
+
+    // Instantiate the Wiconnect library
+    // Here we specify the buffer size AND buffer pointer, this means we're using static allocation
+    Wiconnect wiconnect(serialConfig, sizeof(wiconnectInternalBuffer), wiconnectInternalBuffer, WICONNECT_RESET_PIN);
+
+
+    //-------------------------------------------------------------------------
+    // STEP 2: Initiate Communication with WiFi Module
+    //-------------------------------------------------------------------------
+
+    printf("Initializing WiConnect Library...\r\n");
+
+    // Initialize communication with WiFi module
+    if(wiconnect.init(true) != WICONNECT_SUCCESS)
+    {
+        printf("Failed to initialize communication with WiFi module!\r\n"
+                "Make sure the wires are connected correctly\r\n");
+        for(;;); // infinite loop
+    }
+
+
+    //-------------------------------------------------------------------------
+    // STEP 3: Start WebSetup with specified parameters
+    //-------------------------------------------------------------------------
+
+    printf("Starting Websetup...\r\n");
+
+    // Start web setup
+    if(wiconnect.startWebSetup(WEB_SETUP_SSID, WEB_SETUP_PASSWORD, Callback(webSetupCompleteCallback)) != WICONNECT_SUCCESS)
+    {
+        printf("Failed to start web setup\r\n");
+        for(;;); // infinite loop
+    }
+
+    //-------------------------------------------------------------------------
+    // STEP 4: Wait for web setup webpage to complete
+    //-------------------------------------------------------------------------
+
+    printf("Web setup has started.\r\n\r\n");
+    printf("1. Using your phone (or PC, Mac, Linux, etc.)\r\n   connect to the WiFi network: %s\r\n", WEB_SETUP_SSID);
+    printf("2. The password is: %s\r\n", WEB_SETUP_PASSWORD);
+    printf("3. Once connected, open your browser and enter the URL: http://setup.com\r\n");
+    printf("4. This will bringup a setup page, enter your router's credentials.\r\n");
+    printf("5. Click the 'Save & Exit' button at the bottom of the webpage\r\n\r\n");
+
+    while(!webSetupCompleteFlag)
+    {
+        // do nothing while we wait
+        // When the user exits web setup from the webpage
+        // webSetupCompleteCallback() will execute and set webSetupCompleteFlag TRUE
+    }
+
+    //-------------------------------------------------------------------------
+    // STEP 5: Done!
+    //-------------------------------------------------------------------------
+
+    printf("Web setup example has completed!\r\n");
+
+    for(;;); // infinite loop
+
+    return 0;
+}
+
+
+// this function is called when web setup completes
+// it is called in the background
+static void webSetupCompleteCallback(WiconnectResult result, void *arg1, void *arg2)
+{
+    webSetupCompleteFlag = true;
+}