Host library for controlling a WiConnect enabled Wi-Fi module.

Dependents:   wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more

Committer:
aymangrais
Date:
Mon Sep 28 03:38:43 2015 +0000
Revision:
42:8ffb253b09e7
Parent:
35:15725177aa60
increase ota timeout to be 5 seconds (instead of 1.5 sec)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 29:b6af04b77a56 1 /**
dan_ackme 29:b6af04b77a56 2 * ACKme WiConnect Host Library is licensed under the BSD licence:
dan_ackme 29:b6af04b77a56 3 *
dan_ackme 29:b6af04b77a56 4 * Copyright (c)2014 ACKme Networks.
dan_ackme 29:b6af04b77a56 5 * All rights reserved.
dan_ackme 29:b6af04b77a56 6 *
dan_ackme 29:b6af04b77a56 7 * Redistribution and use in source and binary forms, with or without modification,
dan_ackme 29:b6af04b77a56 8 * are permitted provided that the following conditions are met:
dan_ackme 29:b6af04b77a56 9 *
dan_ackme 29:b6af04b77a56 10 * 1. Redistributions of source code must retain the above copyright notice,
dan_ackme 29:b6af04b77a56 11 * this list of conditions and the following disclaimer.
dan_ackme 29:b6af04b77a56 12 * 2. Redistributions in binary form must reproduce the above copyright notice,
dan_ackme 29:b6af04b77a56 13 * this list of conditions and the following disclaimer in the documentation
dan_ackme 29:b6af04b77a56 14 * and/or other materials provided with the distribution.
dan_ackme 29:b6af04b77a56 15 * 3. The name of the author may not be used to endorse or promote products
dan_ackme 29:b6af04b77a56 16 * derived from this software without specific prior written permission.
dan_ackme 29:b6af04b77a56 17 *
dan_ackme 29:b6af04b77a56 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
dan_ackme 29:b6af04b77a56 19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
dan_ackme 29:b6af04b77a56 20 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
dan_ackme 29:b6af04b77a56 21 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dan_ackme 29:b6af04b77a56 22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
dan_ackme 29:b6af04b77a56 23 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dan_ackme 29:b6af04b77a56 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dan_ackme 29:b6af04b77a56 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
dan_ackme 29:b6af04b77a56 26 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
dan_ackme 29:b6af04b77a56 27 * OF SUCH DAMAGE.
dan_ackme 29:b6af04b77a56 28 */
dan_ackme 29:b6af04b77a56 29 #pragma once
dan_ackme 29:b6af04b77a56 30
dan_ackme 29:b6af04b77a56 31
dan_ackme 29:b6af04b77a56 32 #define MBED_SDK
dan_ackme 29:b6af04b77a56 33
dan_ackme 29:b6af04b77a56 34 #include "mbed.h"
dan_ackme 29:b6af04b77a56 35
dan_ackme 29:b6af04b77a56 36
dan_ackme 29:b6af04b77a56 37
dan_ackme 29:b6af04b77a56 38
dan_ackme 29:b6af04b77a56 39 namespace wiconnect
dan_ackme 29:b6af04b77a56 40 {
dan_ackme 35:15725177aa60 41
dan_ackme 35:15725177aa60 42 /**
dan_ackme 35:15725177aa60 43 * @ingroup api_core_macro
dan_ackme 35:15725177aa60 44 * @brief This is the minimum supported WiConnect version. If your
dan_ackme 35:15725177aa60 45 * WiFi module's firmware is out-dated, use the updateFirmware()
dan_ackme 35:15725177aa60 46 * API call to update your module's firmware.
dan_ackme 35:15725177aa60 47 */
dan_ackme 35:15725177aa60 48 #define WICONNECT_MINIMUM_VERSION FILE_MAKE_VERSION(2, 0, 0, 11)
dan_ackme 29:b6af04b77a56 49
dan_ackme 29:b6af04b77a56 50 /**
dan_ackme 29:b6af04b77a56 51 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 52 * @brief When defined enables asynchronous command processing
dan_ackme 29:b6af04b77a56 53 */
dan_ackme 29:b6af04b77a56 54 #define WICONNECT_ASYNC_TIMER_ENABLED
dan_ackme 29:b6af04b77a56 55 /**
dan_ackme 29:b6af04b77a56 56 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 57 * @brief When defined enables user supplied dynamic memory allocation
dan_ackme 29:b6af04b77a56 58 */
dan_ackme 29:b6af04b77a56 59 #define WICONNECT_ENABLE_MALLOC
dan_ackme 29:b6af04b77a56 60 /**
dan_ackme 29:b6af04b77a56 61 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 62 * @brief When defined enables Host<->Wiconnect Module serial RX buffering
dan_ackme 29:b6af04b77a56 63 */
dan_ackme 29:b6af04b77a56 64 #define WICONNECT_SERIAL_RX_BUFFER
dan_ackme 29:b6af04b77a56 65 /**
dan_ackme 29:b6af04b77a56 66 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 67 * @brief When defined enables certain conversion API functions to use a default buffer to store string
dan_ackme 29:b6af04b77a56 68 */
dan_ackme 29:b6af04b77a56 69 #define WICONNECT_USE_DEFAULT_STRING_BUFFERS
dan_ackme 29:b6af04b77a56 70
dan_ackme 29:b6af04b77a56 71 /**
dan_ackme 29:b6af04b77a56 72 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 73 * @brief When defined enables external interrupts on specified gpios
dan_ackme 29:b6af04b77a56 74 */
dan_ackme 29:b6af04b77a56 75 #define WICONNECT_GPIO_IRQ_ENABLED
dan_ackme 29:b6af04b77a56 76
dan_ackme 29:b6af04b77a56 77 /**
dan_ackme 29:b6af04b77a56 78 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 79 * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default malloc function
dan_ackme 29:b6af04b77a56 80 */
dan_ackme 29:b6af04b77a56 81 #define WICONNECT_DEFAULT_MALLOC malloc
dan_ackme 29:b6af04b77a56 82 /**
dan_ackme 29:b6af04b77a56 83 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 84 * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default free function
dan_ackme 29:b6af04b77a56 85 */
dan_ackme 29:b6af04b77a56 86 #define WICONNECT_DEFAULT_FREE free
dan_ackme 29:b6af04b77a56 87
dan_ackme 29:b6af04b77a56 88 /**
dan_ackme 29:b6af04b77a56 89 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 90 * @brief The default Host<->Wiconnect Module serial BAUD rate
dan_ackme 29:b6af04b77a56 91 */
dan_ackme 29:b6af04b77a56 92 #define WICONNECT_DEFAULT_BAUD 115200
dan_ackme 29:b6af04b77a56 93 /**
dan_ackme 29:b6af04b77a56 94 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 95 * @brief The default command timeout (i.e max command executing time)
dan_ackme 29:b6af04b77a56 96 */
dan_ackme 29:b6af04b77a56 97 #define WICONNECT_DEFAULT_TIMEOUT 3000 // ms
dan_ackme 29:b6af04b77a56 98 /**
dan_ackme 29:b6af04b77a56 99 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 100 * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may be queued
dan_ackme 29:b6af04b77a56 101 */
dan_ackme 29:b6af04b77a56 102 #define WICONNECT_MAX_QUEUED_COMMANDS 8
dan_ackme 29:b6af04b77a56 103 /**
dan_ackme 29:b6af04b77a56 104 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 105 * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the period in milliseconds commands should be processed
dan_ackme 29:b6af04b77a56 106 */
dan_ackme 29:b6af04b77a56 107 #define WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD 50 // ms
dan_ackme 29:b6af04b77a56 108
dan_ackme 29:b6af04b77a56 109 /**
dan_ackme 29:b6af04b77a56 110 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 111 * @brief The default blocking mode of the Library.
dan_ackme 29:b6af04b77a56 112 */
dan_ackme 29:b6af04b77a56 113 #define WICONNECT_DEFAULT_NONBLOCKING false
dan_ackme 29:b6af04b77a56 114
dan_ackme 29:b6af04b77a56 115 /**
dan_ackme 29:b6af04b77a56 116 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 117 * @brief If defined, enables low-level debugging
dan_ackme 29:b6af04b77a56 118 */
dan_ackme 29:b6af04b77a56 119 #define WICONNECT_ENABLE_DEBUGGING
dan_ackme 29:b6af04b77a56 120
dan_ackme 29:b6af04b77a56 121
dan_ackme 29:b6af04b77a56 122 // ----------------------------------------------------------------------------
dan_ackme 29:b6af04b77a56 123
dan_ackme 29:b6af04b77a56 124 #define WICONNECT_GPIO_BASE_CLASS : DigitalOut
dan_ackme 29:b6af04b77a56 125 #define WICONNECT_SERIAL_BASE_CLASS : RawSerial
dan_ackme 29:b6af04b77a56 126 #define WICONNECT_PERIODIC_TIMER_BASE_CLASS : Ticker
dan_ackme 29:b6af04b77a56 127 #define WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS : InterruptIn
dan_ackme 29:b6af04b77a56 128
dan_ackme 29:b6af04b77a56 129 #define WICONNECT_MAX_PIN_IRQ_HANDLERS 3
dan_ackme 29:b6af04b77a56 130
dan_ackme 29:b6af04b77a56 131
dan_ackme 29:b6af04b77a56 132 /**
dan_ackme 29:b6af04b77a56 133 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 134 * @brief Default value for a pin, Not connected
dan_ackme 29:b6af04b77a56 135 */
dan_ackme 29:b6af04b77a56 136 #define PIN_NC NC
dan_ackme 29:b6af04b77a56 137
dan_ackme 29:b6af04b77a56 138 /**
dan_ackme 29:b6af04b77a56 139 * @ingroup api_core_types
dan_ackme 29:b6af04b77a56 140 * @brief Pin name on HOST
dan_ackme 29:b6af04b77a56 141 */
dan_ackme 29:b6af04b77a56 142 typedef PinName Pin;
dan_ackme 29:b6af04b77a56 143
dan_ackme 29:b6af04b77a56 144 /**
dan_ackme 29:b6af04b77a56 145 * @ingroup api_core_types
dan_ackme 29:b6af04b77a56 146 * @brief Host<->Wiconnect Module serial configuration
dan_ackme 29:b6af04b77a56 147 */
dan_ackme 29:b6af04b77a56 148 class SerialConfig
dan_ackme 29:b6af04b77a56 149 {
dan_ackme 29:b6af04b77a56 150 public:
dan_ackme 29:b6af04b77a56 151 Pin rx;
dan_ackme 29:b6af04b77a56 152 Pin tx;
dan_ackme 29:b6af04b77a56 153 Pin cts;
dan_ackme 29:b6af04b77a56 154 Pin rts;
dan_ackme 29:b6af04b77a56 155 int baud;
dan_ackme 29:b6af04b77a56 156 void *serialRxBuffer;
dan_ackme 29:b6af04b77a56 157 int serialRxBufferSize;
dan_ackme 29:b6af04b77a56 158
dan_ackme 29:b6af04b77a56 159 SerialConfig(Pin rx, Pin tx, Pin cts, Pin rts, int baud, int serialRxBufferSize, void *serialRxBuffer = NULL)
dan_ackme 29:b6af04b77a56 160 {
dan_ackme 29:b6af04b77a56 161 this->rx =rx;
dan_ackme 29:b6af04b77a56 162 this->tx =tx;
dan_ackme 29:b6af04b77a56 163 this->cts =cts;
dan_ackme 29:b6af04b77a56 164 this->rts =rts;
dan_ackme 29:b6af04b77a56 165 this->baud = baud;
dan_ackme 29:b6af04b77a56 166 this->serialRxBuffer =serialRxBuffer;
dan_ackme 29:b6af04b77a56 167 this->serialRxBufferSize =serialRxBufferSize;
dan_ackme 29:b6af04b77a56 168 }
dan_ackme 29:b6af04b77a56 169
dan_ackme 29:b6af04b77a56 170 SerialConfig(Pin rx, Pin tx, int serialRxBufferSize, void *serialRxBuffer = NULL)
dan_ackme 29:b6af04b77a56 171 {
dan_ackme 29:b6af04b77a56 172 this->rx =rx;
dan_ackme 29:b6af04b77a56 173 this->tx =tx;
dan_ackme 29:b6af04b77a56 174 this->cts = PIN_NC;
dan_ackme 29:b6af04b77a56 175 this->rts = PIN_NC;
dan_ackme 29:b6af04b77a56 176 this->baud = WICONNECT_DEFAULT_BAUD;
dan_ackme 29:b6af04b77a56 177 this->serialRxBuffer =serialRxBuffer;
dan_ackme 29:b6af04b77a56 178 this->serialRxBufferSize =serialRxBufferSize;
dan_ackme 29:b6af04b77a56 179 }
dan_ackme 29:b6af04b77a56 180
dan_ackme 29:b6af04b77a56 181 SerialConfig(Pin rx, Pin tx)
dan_ackme 29:b6af04b77a56 182 {
dan_ackme 29:b6af04b77a56 183 this->rx =rx;
dan_ackme 29:b6af04b77a56 184 this->tx =tx;
dan_ackme 29:b6af04b77a56 185 this->cts =PIN_NC;
dan_ackme 29:b6af04b77a56 186 this->rts =PIN_NC;
dan_ackme 29:b6af04b77a56 187 this->baud = WICONNECT_DEFAULT_BAUD;
dan_ackme 29:b6af04b77a56 188 this->serialRxBuffer =NULL;
dan_ackme 29:b6af04b77a56 189 this->serialRxBufferSize =0;
dan_ackme 29:b6af04b77a56 190 }
dan_ackme 29:b6af04b77a56 191
dan_ackme 29:b6af04b77a56 192 };
dan_ackme 29:b6af04b77a56 193
dan_ackme 29:b6af04b77a56 194
dan_ackme 29:b6af04b77a56 195 /**
dan_ackme 29:b6af04b77a56 196 * @ingroup api_core_macro
dan_ackme 29:b6af04b77a56 197 * @brief Function to stop processor for specified number of milliseconds
dan_ackme 29:b6af04b77a56 198 */
dan_ackme 29:b6af04b77a56 199 #define delayMs(ms) wait_ms(ms)
dan_ackme 29:b6af04b77a56 200
dan_ackme 29:b6af04b77a56 201
dan_ackme 29:b6af04b77a56 202
dan_ackme 29:b6af04b77a56 203
dan_ackme 29:b6af04b77a56 204 }