Simple app demonstrating network join feature of WiConnect Host Library.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Wed Aug 13 10:23:08 2014 +0000
Revision:
0:3c71c2753928
initial check-in

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 0:3c71c2753928 1 /**
dan_ackme 0:3c71c2753928 2 * @example join/example.cpp
dan_ackme 0:3c71c2753928 3 *
dan_ackme 0:3c71c2753928 4 * This is an example of using the join network API to
dan_ackme 0:3c71c2753928 5 * join a WiFi network.
dan_ackme 0:3c71c2753928 6 *
dan_ackme 0:3c71c2753928 7 * It works as follows:
dan_ackme 0:3c71c2753928 8 * 1. Instantiate the WiConnect Library
dan_ackme 0:3c71c2753928 9 * 2. Initiate Communication with WiFi Module
dan_ackme 0:3c71c2753928 10 * 3. Join a network using the specified parameters
dan_ackme 0:3c71c2753928 11 * 4. Wait for the module to join
dan_ackme 0:3c71c2753928 12 * 5. That's it!
dan_ackme 0:3c71c2753928 13 *
dan_ackme 0:3c71c2753928 14 *
dan_ackme 0:3c71c2753928 15 */
dan_ackme 0:3c71c2753928 16
dan_ackme 0:3c71c2753928 17
dan_ackme 0:3c71c2753928 18 /******************************************************************************
dan_ackme 0:3c71c2753928 19 * Example Variables
dan_ackme 0:3c71c2753928 20 */
dan_ackme 0:3c71c2753928 21
dan_ackme 0:3c71c2753928 22 // This is the name of your WiFi network
dan_ackme 0:3c71c2753928 23 // Look for this name in your WiFi settings
dan_ackme 0:3c71c2753928 24 // (e.g. your phone's list of WiFi networks in the WiFi settings menu)
dan_ackme 0:3c71c2753928 25 // tip: add double-quotes around SSID to add spaces to name
dan_ackme 0:3c71c2753928 26 #define NETWORK_SSID "\"<YOUR NETWORK NAME HERE>\""
dan_ackme 0:3c71c2753928 27
dan_ackme 0:3c71c2753928 28 // This is the password of your WiFi network
dan_ackme 0:3c71c2753928 29 // Leave as empty string (e.g "") to connect to OPEN network
dan_ackme 0:3c71c2753928 30 #define NETWORK_PASSWORD "\"<YOUR NETWORK PASSWORD HERE>\""
dan_ackme 0:3c71c2753928 31
dan_ackme 0:3c71c2753928 32
dan_ackme 0:3c71c2753928 33
dan_ackme 0:3c71c2753928 34
dan_ackme 0:3c71c2753928 35 /******************************************************************************
dan_ackme 0:3c71c2753928 36 * Includes
dan_ackme 0:3c71c2753928 37 */
dan_ackme 0:3c71c2753928 38
dan_ackme 0:3c71c2753928 39 // include C library headers
dan_ackme 0:3c71c2753928 40 #include <stdio.h> // needed for printf
dan_ackme 0:3c71c2753928 41
dan_ackme 0:3c71c2753928 42 // include target specific defines
dan_ackme 0:3c71c2753928 43 #include "target_config.h"
dan_ackme 0:3c71c2753928 44 // include the Wiconnect Host Library API header
dan_ackme 0:3c71c2753928 45 #include "Wiconnect.h"
dan_ackme 0:3c71c2753928 46
dan_ackme 0:3c71c2753928 47
dan_ackme 0:3c71c2753928 48
dan_ackme 0:3c71c2753928 49 /******************************************************************************
dan_ackme 0:3c71c2753928 50 * Global Defines
dan_ackme 0:3c71c2753928 51 */
dan_ackme 0:3c71c2753928 52
dan_ackme 0:3c71c2753928 53
dan_ackme 0:3c71c2753928 54 // Serial used for printfs to terminal (i.e. NOT used for WiConnect)
dan_ackme 0:3c71c2753928 55 static Serial consoleSerial(STDIO_UART_TX, STDIO_UART_RX);
dan_ackme 0:3c71c2753928 56
dan_ackme 0:3c71c2753928 57
dan_ackme 0:3c71c2753928 58
dan_ackme 0:3c71c2753928 59
dan_ackme 0:3c71c2753928 60 /******************************************************************************
dan_ackme 0:3c71c2753928 61 * Starting point of application
dan_ackme 0:3c71c2753928 62 */
dan_ackme 0:3c71c2753928 63 int main(int argc, char **argv)
dan_ackme 0:3c71c2753928 64 {
dan_ackme 0:3c71c2753928 65 NetworkStatus networkStatus;
dan_ackme 0:3c71c2753928 66
dan_ackme 0:3c71c2753928 67
dan_ackme 0:3c71c2753928 68 consoleSerial.baud(115200); // console terminal to 115200 baud
dan_ackme 0:3c71c2753928 69
dan_ackme 0:3c71c2753928 70 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 71 // STEP 1: Instantiate WiConnect Library
dan_ackme 0:3c71c2753928 72 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 73
dan_ackme 0:3c71c2753928 74 // Setup wiconnect serial interface configuration
dan_ackme 0:3c71c2753928 75 // Here we only specify the rx buffer size and not rx buffer pointer, this means
dan_ackme 0:3c71c2753928 76 // The serial RX buffer will be dynamically allocated
dan_ackme 0:3c71c2753928 77 SerialConfig serialConfig(WICONNECT_RX_PIN, WICONNECT_TX_PIN, 256, NULL);
dan_ackme 0:3c71c2753928 78
dan_ackme 0:3c71c2753928 79 // Instantiate the Wiconnect library
dan_ackme 0:3c71c2753928 80 // Here we only specify the buffer size and not buffer pointer, this means
dan_ackme 0:3c71c2753928 81 // The internal buffer will be dynamically allocated
dan_ackme 0:3c71c2753928 82 Wiconnect wiconnect(serialConfig, 256, NULL, WICONNECT_RESET_PIN);
dan_ackme 0:3c71c2753928 83
dan_ackme 0:3c71c2753928 84
dan_ackme 0:3c71c2753928 85 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 86 // STEP 2: Initiate Communication with WiFi Module
dan_ackme 0:3c71c2753928 87 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 88
dan_ackme 0:3c71c2753928 89 printf("Initializing WiConnect Library...\r\n");
dan_ackme 0:3c71c2753928 90
dan_ackme 0:3c71c2753928 91 // Initialize communication with WiFi module
dan_ackme 0:3c71c2753928 92 if(wiconnect.init(true) != WICONNECT_SUCCESS)
dan_ackme 0:3c71c2753928 93 {
dan_ackme 0:3c71c2753928 94 printf("Failed to initialize communication with WiFi module!\r\n"
dan_ackme 0:3c71c2753928 95 "Make sure the wires are connected correctly\r\n");
dan_ackme 0:3c71c2753928 96 for(;;); // infinite loop
dan_ackme 0:3c71c2753928 97 }
dan_ackme 0:3c71c2753928 98
dan_ackme 0:3c71c2753928 99
dan_ackme 0:3c71c2753928 100 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 101 // STEP 3: Join a network using the specified parameters
dan_ackme 0:3c71c2753928 102 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 103
dan_ackme 0:3c71c2753928 104 printf("Joining network: %s....\r\n", NETWORK_SSID);
dan_ackme 0:3c71c2753928 105
dan_ackme 0:3c71c2753928 106 // Initiate module join sequence
dan_ackme 0:3c71c2753928 107 if(wiconnect.join(NETWORK_SSID, NETWORK_PASSWORD) != WICONNECT_SUCCESS)
dan_ackme 0:3c71c2753928 108 {
dan_ackme 0:3c71c2753928 109 printf("Failed to send join command\r\n");
dan_ackme 0:3c71c2753928 110 for(;;); // infinite loop
dan_ackme 0:3c71c2753928 111 }
dan_ackme 0:3c71c2753928 112
dan_ackme 0:3c71c2753928 113 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 114 // STEP 4: Wait for the module to join the network
dan_ackme 0:3c71c2753928 115 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 116
dan_ackme 0:3c71c2753928 117 printf("Waiting to join network....\r\n");
dan_ackme 0:3c71c2753928 118
dan_ackme 0:3c71c2753928 119 do
dan_ackme 0:3c71c2753928 120 {
dan_ackme 0:3c71c2753928 121 // poll the module for the network status
dan_ackme 0:3c71c2753928 122 if(wiconnect.getNetworkStatus(&networkStatus) != WICONNECT_SUCCESS)
dan_ackme 0:3c71c2753928 123 {
dan_ackme 0:3c71c2753928 124 printf("Failed to get network status\r\n");
dan_ackme 0:3c71c2753928 125 for(;;); // infinite loop
dan_ackme 0:3c71c2753928 126 }
dan_ackme 0:3c71c2753928 127
dan_ackme 0:3c71c2753928 128 // loop until the network status is not down
dan_ackme 0:3c71c2753928 129 } while(networkStatus == NETWORK_STATUS_DOWN);
dan_ackme 0:3c71c2753928 130
dan_ackme 0:3c71c2753928 131 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 132 // STEP 5: Done!
dan_ackme 0:3c71c2753928 133 //-------------------------------------------------------------------------
dan_ackme 0:3c71c2753928 134
dan_ackme 0:3c71c2753928 135 printf("Network join example has completed!\r\n");
dan_ackme 0:3c71c2753928 136
dan_ackme 0:3c71c2753928 137 for(;;); // infinite loop
dan_ackme 0:3c71c2753928 138
dan_ackme 0:3c71c2753928 139 return 0;
dan_ackme 0:3c71c2753928 140 }
dan_ackme 0:3c71c2753928 141