Simple app demonstrating the HTTP GET feature of the WiConnect Host Library.

Dependencies:   WiConnect mbed

Revision:
1:40ed62996887
Child:
3:2bfba274568c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example.cpp	Wed Aug 13 04:41:33 2014 -0700
@@ -0,0 +1,135 @@
+/**
+ * @example http_get/example.cpp
+ *
+ * This is an example of using the http socket API to
+ * download a webpage.
+ *
+ * It works as follows:
+ * 1. Instantiate the WiConnect Library
+ * 2. Initiate Communication with WiFi Module
+ * 3. Issue a HTTP GET request (Note: The module must have valid network credentials See @ref web_setup/example.cpp)
+ * 4. Read the HTTP page and print
+ * 5. That's it!
+ *
+ */
+
+
+/******************************************************************************
+ * Example Variables
+ */
+
+// the URL of the webpage to GET
+#define HTTP_URL "http://ack.me"
+
+
+
+
+
+/******************************************************************************
+ * 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"
+
+
+
+
+/******************************************************************************
+ * Global Defines
+ */
+
+
+// Serial used for printfs to terminal (i.e. NOT used for WiConnect)
+static Serial consoleSerial(STDIO_UART_TX, STDIO_UART_RX);
+
+
+
+/******************************************************************************
+ * 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 and initialize the Wiconnect library
+    // Here we only specify the buffer size and not buffer pointer, this means
+    // The internal buffer will be dynamically allocated
+    Wiconnect wiconnect(serialConfig, 256, NULL, WICONNECT_RESET_PIN);
+
+    // set the default timeout to 15s as some websites take awhile to respond
+    wiconnect.setCommandDefaultTimeout(15000);
+
+    //-------------------------------------------------------------------------
+    // 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: Issue a HTTP GET request
+    //-------------------------------------------------------------------------
+
+    // Initiate a socket with an RX buffer of 256 bytes
+    // We're not specifying the rx buffer pointer so that means it's dynamically allocated
+    Socket socket(256);
+
+
+    printf("Issuing HTTP Request: %s\r\n", HTTP_URL);
+
+    // Issue HTTP request
+    // NOTE: the module must have valid network credentials
+    if(wiconnect.httpGet(socket, HTTP_URL) != WICONNECT_SUCCESS)
+    {
+        printf("Failed to issue HTTP request. Does the module have valid network credentials?\r\n");
+        for(;;); // infinite loop
+    }
+
+    //-------------------------------------------------------------------------
+    // STEP 4: Read the HTTP page and print
+    //-------------------------------------------------------------------------
+
+    uint8_t *dataPtr;
+    uint16_t dataLength;
+
+    // while there's data to read, retreive and print it
+    while(socket.read(&dataPtr, &dataLength) == WICONNECT_SUCCESS)
+    {
+        fwrite(dataPtr, 1, dataLength, stdout);
+    }
+
+    //-------------------------------------------------------------------------
+    // STEP 5: Done!
+    //-------------------------------------------------------------------------
+
+    printf("HTTP GET example has completed!\r\n");
+
+    for(;;); // infinite loop
+
+    return 0;
+}
+
+