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

api/sdk.h

Committer:
aymangrais
Date:
2015-09-28
Revision:
42:8ffb253b09e7
Parent:
35:15725177aa60

File content as of revision 42:8ffb253b09e7:

/**
 * ACKme WiConnect Host Library is licensed under the BSD licence: 
 * 
 * Copyright (c)2014 ACKme Networks.
 * All rights reserved. 
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met: 
 * 
 * 1. Redistributions of source code must retain the above copyright notice, 
 * this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright notice, 
 * this list of conditions and the following disclaimer in the documentation 
 * and/or other materials provided with the distribution. 
 * 3. The name of the author may not be used to endorse or promote products 
 * derived from this software without specific prior written permission. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE.
 */
#pragma once


#define MBED_SDK

#include "mbed.h"




namespace wiconnect
{

/**
 * @ingroup api_core_macro
 * @brief This is the minimum supported WiConnect version. If your
 *        WiFi module's firmware is out-dated, use the updateFirmware()
 *        API call to update your module's firmware.
 */
#define WICONNECT_MINIMUM_VERSION FILE_MAKE_VERSION(2, 0, 0, 11)

/**
 * @ingroup api_core_macro
 * @brief When defined enables asynchronous command processing
 */
#define WICONNECT_ASYNC_TIMER_ENABLED
/**
 * @ingroup api_core_macro
 * @brief When defined enables user supplied dynamic memory allocation
 */
#define WICONNECT_ENABLE_MALLOC
/**
 * @ingroup api_core_macro
 * @brief When defined enables Host<->Wiconnect Module serial RX buffering
 */
#define WICONNECT_SERIAL_RX_BUFFER
/**
 * @ingroup api_core_macro
 * @brief When defined enables certain conversion API functions to use a default buffer to store string
 */
#define WICONNECT_USE_DEFAULT_STRING_BUFFERS

/**
 * @ingroup api_core_macro
 * @brief When defined enables external interrupts on specified gpios
 */
#define WICONNECT_GPIO_IRQ_ENABLED

/**
 * @ingroup api_core_macro
 * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default malloc function
 */
#define WICONNECT_DEFAULT_MALLOC malloc
/**
 * @ingroup api_core_macro
 * @brief When WICONNECT_ENABLE_MALLOC defined, this is the default free function
 */
#define WICONNECT_DEFAULT_FREE free

/**
 * @ingroup api_core_macro
 * @brief The default Host<->Wiconnect Module serial BAUD rate
 */
#define WICONNECT_DEFAULT_BAUD 115200
/**
 * @ingroup api_core_macro
 * @brief The default command timeout (i.e max command executing time)
 */
#define WICONNECT_DEFAULT_TIMEOUT 3000 // ms
/**
 * @ingroup api_core_macro
 * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may be queued
 */
#define WICONNECT_MAX_QUEUED_COMMANDS 8
/**
 * @ingroup api_core_macro
 * @brief When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the period in milliseconds commands should be processed
 */
#define WICONNECT_DEFAULT_COMMAND_PROCESSING_PERIOD 50 // ms

/**
 * @ingroup api_core_macro
 * @brief The default blocking mode of the Library.
 */
#define WICONNECT_DEFAULT_NONBLOCKING false

/**
 * @ingroup api_core_macro
 * @brief If defined, enables low-level debugging
 */
#define WICONNECT_ENABLE_DEBUGGING


// ----------------------------------------------------------------------------

#define WICONNECT_GPIO_BASE_CLASS : DigitalOut
#define WICONNECT_SERIAL_BASE_CLASS : RawSerial
#define WICONNECT_PERIODIC_TIMER_BASE_CLASS : Ticker
#define WICONNECT_EXTERNAL_INTERRUPT_GPIO_BASE_CLASS : InterruptIn

#define WICONNECT_MAX_PIN_IRQ_HANDLERS 3


/**
 * @ingroup api_core_macro
 * @brief Default value for a pin, Not connected
 */
#define PIN_NC NC

/**
 * @ingroup api_core_types
 * @brief Pin name on HOST
 */
typedef PinName Pin;

/**
 * @ingroup api_core_types
 * @brief Host<->Wiconnect Module serial configuration
 */
class SerialConfig
{
public:
    Pin rx;
    Pin tx;
    Pin cts;
    Pin rts;
    int baud;
    void *serialRxBuffer;
    int serialRxBufferSize;

    SerialConfig(Pin rx, Pin tx, Pin cts, Pin rts, int baud, int serialRxBufferSize, void *serialRxBuffer = NULL)
    {
        this->rx =rx;
        this->tx =tx;
        this->cts =cts;
        this->rts =rts;
        this->baud = baud;
        this->serialRxBuffer =serialRxBuffer;
        this->serialRxBufferSize =serialRxBufferSize;
    }

    SerialConfig(Pin rx, Pin tx, int serialRxBufferSize, void *serialRxBuffer = NULL)
    {
        this->rx =rx;
        this->tx =tx;
        this->cts = PIN_NC;
        this->rts = PIN_NC;
        this->baud = WICONNECT_DEFAULT_BAUD;
        this->serialRxBuffer =serialRxBuffer;
        this->serialRxBufferSize =serialRxBufferSize;
    }

    SerialConfig(Pin rx, Pin tx)
    {
        this->rx =rx;
        this->tx =tx;
        this->cts =PIN_NC;
        this->rts =PIN_NC;
        this->baud = WICONNECT_DEFAULT_BAUD;
        this->serialRxBuffer =NULL;
        this->serialRxBufferSize =0;
    }

};


/**
 * @ingroup api_core_macro
 * @brief Function to stop processor for specified number of milliseconds
 */
#define delayMs(ms) wait_ms(ms)




}