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

WiconnectTypes.h

Committer:
dan_ackme
Date:
2014-08-11
Revision:
0:ea85c4bb5e1f
Child:
1:6ec9998427ad

File content as of revision 0:ea85c4bb5e1f:

/*
 * Copyright 2014, ACKme Networks
 * All Rights Reserved.
 *
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
 * the contents of this file may not be disclosed to third parties, copied
 * or duplicated in any form, in whole or in part, without the prior
 * written permission of ACKme Networks.
 */

#pragma once

#include <stdint.h>
#include <stdarg.h>

#include "sdk.h"

namespace wiconnect {


#ifndef MIN
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x,y)  ((x) > (y) ? (x) : (y))
#endif
#define ALIGN_n(x, n) ((((uint32_t)x) + ((n)-1)) & ~((n)-1))
#define ALIGN_8(x) ALIGN_n(x, 8)
#define ALIGN_4(x) ALIGN_n(x, 4)

#ifndef OFFSETOF
#define    OFFSETOF(type, member)    ((uintptr_t)&((type *)0)->member)
#endif

#define ARRAY_COUNT(x) (sizeof (x) / sizeof *(x))


#define WICONNECT_FAILED(result, func) ((int)(result = (func)) < (int)wiconnect::WICONNECT_SUCCESS)
#define WICONNECT_SUCCEEDED(result, func) ((result = (func)) == wiconnect::WICONNECT_SUCCESS)

#define WICONNECT_NULL_RESPONSE_HANDLER WiconnectAsyncCallback()


#define WICONNECT_MAX_CMD_SIZE 128
#define WICONNECT_MAX_VERSION_SIZE 96
#define WICONNECT_MAX_SOCKETS 8


#define SOCKET_INVALID_HANDLE ((uint8_t)0xFF)


typedef enum
{
    WICONNECT_ABORTED               = 3,
    WICONNECT_IDLE                  = 2,
    WICONNECT_PROCESSING            = 1,
    WICONNECT_SUCCESS               = 0,
    WICONNECT_ERROR                 = -1,
    WICONNECT_CMD_RESPONSE_ERROR    = -2,
    WICONNECT_NULL_BUFFER           = -3,
    WICONNECT_NOT_INITIALIZED       = -4,
    WICONNECT_OVERFLOW              = -5,
    WICONNECT_TIMEOUT               = -6,
    WICONNECT_RESPONSE_HANDLER_NULL = -7,
    WICONNECT_RESPONSE_PARSE_ERROR  = -8,
    WICONNECT_ANOTHER_CMD_EXECUTING = -9,
    WICONNECT_BAD_ARG               = -10,
    WICONNECT_UNSUPPORTED           = -11,
    WICONNECT_PINNAME_TO_GPIO_MAPPER_NULL = -12,
    WICONNECT_DUPLICATE             = -13,
    WICONNECT_NOT_FOUND             = -14,
    WICONNECT_PINNAME_TO_GPIO_NO_MAPPING = -15,
    WICONNECT_NOT_CONNECTED         = -16,
    WICONNECT_UNDERFLOW             = -17,
    WICONNECT_MONITOR_NOT_AVAILABLE = -18,
    WICONNECT_NOT_OPENED_FOR_READING = -19,
} WiconnectResult;


typedef enum
{
    NETWORK_STATUS_DOWN,
    NETWORK_STATUS_WIFI_ONLY,
    NETWORK_STATUS_UP
} NetworkStatus;

typedef enum
{
    NETWORK_RSSI_EXCELLENT              = 0,    ///< > -20 dBm
    NETWORK_RSSI_VERY_GOOD              = 1,    ///< > -35 dBm
    NETWORK_RSSI_GOOD                   = 2,    ///< > -50 dBm
    NETWORK_RSSI_POOR                   = 3,    ///< > -70 dBm
    NETWORK_RSSI_VERY_POOR              = 4,    ///< < -71 dBm
    NETWORK_RSSI_UNKNOWN                = 5     ///< Not available
} NetworkSignalStrength;

typedef enum
{
    NETWORK_SECURITY_OPEN,
    NETWORK_SECURITY_WEP_PSK,
    NETWORK_SECURITY_WPA_AES_PSK,
    NETWORK_SECURITY_WPA_TKIP_PSK,
    NETWORK_SECURITY_WPA2_AES_PSK,
    NETWORK_SECURITY_WPA2_MIXED_PSK,
    NETWORK_SECURITY_WPA2_TKIP_PSK,
    NETWORK_SECURITY_UNKNOWN
} NetworkSecurity;

typedef struct
{
    uint8_t val[32];
    uint8_t len;
} Ssid;

typedef struct
{
    uint8_t octet[6];
} MacAddress;
typedef char MacAddressStrBuffer[18];
typedef char SsidStrBuffer[129];
typedef char IpStrBuffer[18];


typedef enum
{
    SOCKET_TYPE_UNKNOWN,
    SOCKET_TYPE_TCP,
    SOCKET_TYPE_TLS,
    SOCKET_TYPE_UDP,
    SOCKET_TYPE_HTTP,
} SocketType;

typedef enum
{
    SOCKET_HTTP_GET,
    SOCKET_HTTP_POST,
    SOCKET_HTTP_HEAD,
} HttpSocketType;

typedef struct
{
    const char *contextType;
    const char *certName;
    bool openOnly;
    HttpSocketType type;
} HttpSocketArgs;

typedef int8_t (*PinToGpioMapper)(Pin pin);


typedef enum
{
    FILE_FLAG_NONE          = 0,

    FILE_FLAG_VALID         = (1 << 0),
    FILE_FLAG_EXECUTABLE    = (1 << 1),
    FILE_FLAG_ENCRYPTED     = (1 << 2),
    FILE_FLAG_INTERNAL      = (1 << 3),
    FILE_FLAG_BOOTABLE      = (1 << 4),
    FILE_FLAG_USER          = (1 << 5),
    FILE_FLAG_ESSENTIAL     = (1 << 6),
    FILE_FLAG_BACKUP        = (1 << 7),

    FILE_FLAG_FORCE_COPY    = (1 << 15),

    FILE_FLAG_INVALID       = 0xFFFF
} FileFlags;

typedef enum
{
    FILE_TYPE_UPGRADE_APP   = 0x00,
    FILE_TYPE_WIFI_FW       = 0x01,
    FILE_TYPE_SHARED_LIB    = 0x02,
    FILE_TYPE_TLS_CERT      = 0x03,
    FILE_TYPE_TXT_LOG       = 0x04,
    FILE_TYPE_DCT           = 0x05,

    FILE_TYPE_MISC_APP      = 0x80,
    FILE_TYPE_REGULAR_APP   = 0x81,

    FILE_TYPE_USER_RANGE_START = 150,
    FILE_TYPE_USER_RANGE_END = 199,

    FILE_TYPE_TEMPORY       = 0xF9,
    FILE_TYPE_GPIO_CONFIG   = 0xFA,
    FILE_TYPE_COMMAND_HELP  = 0xFB,
    FILE_TYPE_SDC_CAPS      = 0xFC,
    FILE_TYPE_SETUP_SCRIPT  = 0xFD,
    FILE_TYPE_MISC_FIX_LEN  = 0xFE,
    FILE_TYPE_UNKNOWN       = 0xFF,
    FILE_TYPE_ANY           = FILE_TYPE_UNKNOWN
} FileType;

typedef struct
{
    int size;
    uint8_t *buffer;
    uint8_t *ptr;
    int bytesPending;
    bool allocated;
} Buffer;


class Wiconnect;
class TimeoutTimer;
class PeriodicTimer;
class QueuedCommand;
class CommandQueue;
class LogFunc;
class ReaderFunc;
class Callback;
class ScanResult;
class ScanResultList;
class Socket;
class WiconnectSerial;
class File;
class FileList;
class Gpio;
class SocketIrqHandlerMap;

}