TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Committer:
dflet
Date:
Fri Sep 11 15:38:33 2015 +0000
Revision:
1:e448e81c416f
Parent:
0:400d8e75a8d0
Removed some debud.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:400d8e75a8d0 1 /*
dflet 0:400d8e75a8d0 2 * device.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:400d8e75a8d0 3 *
dflet 0:400d8e75a8d0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:400d8e75a8d0 5 *
dflet 0:400d8e75a8d0 6 *
dflet 0:400d8e75a8d0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:400d8e75a8d0 8 * modification, are permitted provided that the following conditions
dflet 0:400d8e75a8d0 9 * are met:
dflet 0:400d8e75a8d0 10 *
dflet 0:400d8e75a8d0 11 * Redistributions of source code must retain the above copyright
dflet 0:400d8e75a8d0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:400d8e75a8d0 13 *
dflet 0:400d8e75a8d0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:400d8e75a8d0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:400d8e75a8d0 16 * documentation and/or other materials provided with the
dflet 0:400d8e75a8d0 17 * distribution.
dflet 0:400d8e75a8d0 18 *
dflet 0:400d8e75a8d0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:400d8e75a8d0 20 * its contributors may be used to endorse or promote products derived
dflet 0:400d8e75a8d0 21 * from this software without specific prior written permission.
dflet 0:400d8e75a8d0 22 *
dflet 0:400d8e75a8d0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:400d8e75a8d0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:400d8e75a8d0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:400d8e75a8d0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:400d8e75a8d0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:400d8e75a8d0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:400d8e75a8d0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:400d8e75a8d0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:400d8e75a8d0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:400d8e75a8d0 34 *
dflet 0:400d8e75a8d0 35 */
dflet 0:400d8e75a8d0 36
dflet 0:400d8e75a8d0 37 #ifndef DEVICE_H_
dflet 0:400d8e75a8d0 38 #define DEVICE_H_
dflet 0:400d8e75a8d0 39
dflet 0:400d8e75a8d0 40 /*****************************************************************************/
dflet 0:400d8e75a8d0 41 /* Include files */
dflet 0:400d8e75a8d0 42 /*****************************************************************************/
dflet 0:400d8e75a8d0 43 #include "mbed.h"
dflet 0:400d8e75a8d0 44 #include "cc3100_simplelink.h"
dflet 0:400d8e75a8d0 45 #include "cc3100_driver.h"
dflet 0:400d8e75a8d0 46 #include "cc3100_wlan_rx_filters.h"
dflet 0:400d8e75a8d0 47
dflet 0:400d8e75a8d0 48 #include "cc3100_spi.h"
dflet 0:400d8e75a8d0 49 #include "cc3100_netcfg.h"
dflet 0:400d8e75a8d0 50
dflet 0:400d8e75a8d0 51 namespace mbed_cc3100 {
dflet 0:400d8e75a8d0 52
dflet 0:400d8e75a8d0 53 /*!
dflet 0:400d8e75a8d0 54
dflet 0:400d8e75a8d0 55 \addtogroup device
dflet 0:400d8e75a8d0 56 @{
dflet 0:400d8e75a8d0 57
dflet 0:400d8e75a8d0 58 */
dflet 0:400d8e75a8d0 59 const int16_t ROLE_UNKNOWN_ERR = -1;
dflet 0:400d8e75a8d0 60
dflet 0:400d8e75a8d0 61 const uint16_t MAX_BUFF_SIZE = 1460;
dflet 0:400d8e75a8d0 62 extern uint32_t g_PingPacketsRecv;
dflet 0:400d8e75a8d0 63 extern uint32_t g_GatewayIP;
dflet 0:400d8e75a8d0 64 extern uint32_t g_StationIP;
dflet 0:400d8e75a8d0 65 extern uint32_t g_DestinationIP;
dflet 0:400d8e75a8d0 66 extern uint32_t g_BytesReceived; // variable to store the file size
dflet 0:400d8e75a8d0 67 extern uint32_t g_Status;
dflet 0:400d8e75a8d0 68 extern uint8_t g_buff[MAX_BUFF_SIZE+1];
dflet 0:400d8e75a8d0 69 extern int32_t g_SockID;
dflet 0:400d8e75a8d0 70
dflet 0:400d8e75a8d0 71
dflet 0:400d8e75a8d0 72 /* File on the serial flash */
dflet 0:400d8e75a8d0 73 #define FILE_NAME "cc3000_module.pdf"
dflet 0:400d8e75a8d0 74 #define HOST_NAME "www.ti.com"
dflet 0:400d8e75a8d0 75
dflet 0:400d8e75a8d0 76 #define HTTP_FILE_NOT_FOUND "404 Not Found" /* HTTP file not found response */
dflet 0:400d8e75a8d0 77 //#define HTTP_STATUS_OK "200 OK" /* HTTP status ok response */
dflet 0:400d8e75a8d0 78 #define HTTP_CONTENT_LENGTH "Content-Length:" /* HTTP content length header */
dflet 0:400d8e75a8d0 79 #define HTTP_TRANSFER_ENCODING "Transfer-Encoding:" /* HTTP transfer encoding header */
dflet 0:400d8e75a8d0 80 #define HTTP_ENCODING_CHUNKED "chunked" /* HTTP transfer encoding header value */
dflet 0:400d8e75a8d0 81 #define HTTP_CONNECTION "Connection:" /* HTTP Connection header */
dflet 0:400d8e75a8d0 82 #define HTTP_CONNECTION_CLOSE "close" /* HTTP Connection header value */
dflet 0:400d8e75a8d0 83 #define HTTP_END_OF_HEADER "\r\n\r\n" /* string marking the end of headers in response */
dflet 0:400d8e75a8d0 84
dflet 0:400d8e75a8d0 85 /*****************************************************************************/
dflet 0:400d8e75a8d0 86 /* Macro declarations */
dflet 0:400d8e75a8d0 87 /*****************************************************************************/
dflet 0:400d8e75a8d0 88
dflet 0:400d8e75a8d0 89 const uint16_t IP_LEASE_TIME = 3600;
dflet 0:400d8e75a8d0 90
dflet 0:400d8e75a8d0 91 const uint16_t SIZE_45K = 46080; /* Serial flash file size 45 KB */
dflet 0:400d8e75a8d0 92 const uint16_t READ_SIZE = 1450;
dflet 0:400d8e75a8d0 93 const uint8_t SPACE = 32;
dflet 0:400d8e75a8d0 94
dflet 0:400d8e75a8d0 95 const uint16_t PING_INTERVAL = 1000;
dflet 0:400d8e75a8d0 96 const uint8_t PING_SIZE = 20;
dflet 0:400d8e75a8d0 97 const uint16_t PING_TIMEOUT = 3000;
dflet 0:400d8e75a8d0 98 const uint8_t PING_ATTEMPTS = 3;
dflet 0:400d8e75a8d0 99 const uint8_t PING_PKT_SIZE = 20;
dflet 0:400d8e75a8d0 100
dflet 0:400d8e75a8d0 101 const uint8_t SL_STOP_TIMEOUT = 0xFF;
dflet 0:400d8e75a8d0 102
dflet 0:400d8e75a8d0 103 /* SL internal Error codes */
dflet 0:400d8e75a8d0 104
dflet 0:400d8e75a8d0 105 /* Receive this error in case there are no resources to issue the command
dflet 0:400d8e75a8d0 106 If possible, increase the number of MAX_CUNCURENT_ACTIONS (result in memory increase)
dflet 0:400d8e75a8d0 107 If not, try again later */
dflet 0:400d8e75a8d0 108 const int16_t SL_POOL_IS_EMPTY = (-2000);
dflet 0:400d8e75a8d0 109
dflet 0:400d8e75a8d0 110 /* Receive this error in case a given length for RX buffer was too small.
dflet 0:400d8e75a8d0 111 Receive payload was bigger than the given buffer size. Therefore, payload is cut according to receive size
dflet 0:400d8e75a8d0 112 Recommend to increase buffer size */
dflet 0:400d8e75a8d0 113 const int16_t SL_ESMALLBUF = (-2001);
dflet 0:400d8e75a8d0 114
dflet 0:400d8e75a8d0 115 /* Receive this error in case zero length is supplied to a "get" API
dflet 0:400d8e75a8d0 116 Recommend to supply length according to requested information (view options defines for help) */
dflet 0:400d8e75a8d0 117 const int16_t SL_EZEROLEN = (-2002);
dflet 0:400d8e75a8d0 118
dflet 0:400d8e75a8d0 119 /* User supplied invalid parameter */
dflet 0:400d8e75a8d0 120 const int16_t SL_INVALPARAM = (-2003);
dflet 0:400d8e75a8d0 121
dflet 0:400d8e75a8d0 122 /* Failed to open interface */
dflet 0:400d8e75a8d0 123 const int16_t SL_BAD_INTERFACE = (-2004);
dflet 0:400d8e75a8d0 124
dflet 0:400d8e75a8d0 125 /* End of SL internal Error codes */
dflet 0:400d8e75a8d0 126
dflet 0:400d8e75a8d0 127 /*****************************************************************************/
dflet 0:400d8e75a8d0 128 /* Errors returned from the general error async event */
dflet 0:400d8e75a8d0 129 /*****************************************************************************/
dflet 0:400d8e75a8d0 130
dflet 0:400d8e75a8d0 131 /* Use bit 32: Lower bits of status variable are used for NWP events
dflet 0:400d8e75a8d0 132 * 1 in a 'status_variable', the device has completed the ping operation
dflet 0:400d8e75a8d0 133 * 0 in a 'status_variable', the device has not completed the ping operation
dflet 0:400d8e75a8d0 134 */
dflet 0:400d8e75a8d0 135 //const uint32_t STATUS_BIT_PING_DONE = 31;
dflet 0:400d8e75a8d0 136
dflet 0:400d8e75a8d0 137 /* Status bits - These are used to set/reset the corresponding bits in a 'status_variable' */
dflet 0:400d8e75a8d0 138 typedef enum {
dflet 0:400d8e75a8d0 139 STATUS_BIT_CONNECTION = 0, /* If this bit is:
dflet 0:400d8e75a8d0 140 * 1 in a 'status_variable', the device is connected to the AP
dflet 0:400d8e75a8d0 141 * 0 in a 'status_variable', the device is not connected to the AP
dflet 0:400d8e75a8d0 142 */
dflet 0:400d8e75a8d0 143
dflet 0:400d8e75a8d0 144 STATUS_BIT_STA_CONNECTED, /* If this bit is:
dflet 0:400d8e75a8d0 145 * 1 in a 'status_variable', client is connected to device
dflet 0:400d8e75a8d0 146 * 0 in a 'status_variable', client is not connected to device
dflet 0:400d8e75a8d0 147 */
dflet 0:400d8e75a8d0 148
dflet 0:400d8e75a8d0 149 STATUS_BIT_IP_ACQUIRED, /* If this bit is:
dflet 0:400d8e75a8d0 150 * 1 in a 'status_variable', the device has acquired an IP
dflet 0:400d8e75a8d0 151 * 0 in a 'status_variable', the device has not acquired an IP
dflet 0:400d8e75a8d0 152 */
dflet 0:400d8e75a8d0 153
dflet 0:400d8e75a8d0 154 STATUS_BIT_IP_LEASED, /* If this bit is:
dflet 0:400d8e75a8d0 155 * 1 in a 'status_variable', the device has leased an IP
dflet 0:400d8e75a8d0 156 * 0 in a 'status_variable', the device has not leased an IP
dflet 0:400d8e75a8d0 157 */
dflet 0:400d8e75a8d0 158
dflet 0:400d8e75a8d0 159 STATUS_BIT_CONNECTION_FAILED, /* If this bit is:
dflet 0:400d8e75a8d0 160 * 1 in a 'status_variable', failed to connect to device
dflet 0:400d8e75a8d0 161 * 0 in a 'status_variable'
dflet 0:400d8e75a8d0 162 */
dflet 0:400d8e75a8d0 163
dflet 0:400d8e75a8d0 164 STATUS_BIT_P2P_NEG_REQ_RECEIVED,/* If this bit is:
dflet 0:400d8e75a8d0 165 * 1 in a 'status_variable', connection requested by remote wifi-direct device
dflet 0:400d8e75a8d0 166 * 0 in a 'status_variable',
dflet 0:400d8e75a8d0 167 */
dflet 0:400d8e75a8d0 168 STATUS_BIT_SMARTCONFIG_DONE, /* If this bit is:
dflet 0:400d8e75a8d0 169 * 1 in a 'status_variable', smartconfig completed
dflet 0:400d8e75a8d0 170 * 0 in a 'status_variable', smartconfig event couldn't complete
dflet 0:400d8e75a8d0 171 */
dflet 0:400d8e75a8d0 172
dflet 0:400d8e75a8d0 173 STATUS_BIT_SMARTCONFIG_STOPPED, /* If this bit is:
dflet 0:400d8e75a8d0 174 * 1 in a 'status_variable', smartconfig process stopped
dflet 0:400d8e75a8d0 175 * 0 in a 'status_variable', smartconfig process running
dflet 0:400d8e75a8d0 176 */
dflet 0:400d8e75a8d0 177
dflet 0:400d8e75a8d0 178 STATUS_BIT_PING_DONE = 31
dflet 0:400d8e75a8d0 179 /* Use bit 32: Lower bits of status variable are used for NWP events
dflet 0:400d8e75a8d0 180 * 1 in a 'status_variable', the device has completed the ping operation
dflet 0:400d8e75a8d0 181 * 0 in a 'status_variable', the device has not completed the ping operation
dflet 0:400d8e75a8d0 182 */
dflet 0:400d8e75a8d0 183
dflet 0:400d8e75a8d0 184 } e_StatusBits;
dflet 0:400d8e75a8d0 185
dflet 0:400d8e75a8d0 186 /* Application specific status/error codes */
dflet 0:400d8e75a8d0 187 typedef enum {
dflet 0:400d8e75a8d0 188 LAN_CONNECTION_FAILED = -0x7D0, /* Choosing this number to avoid overlap with host-driver's error codes */
dflet 0:400d8e75a8d0 189 CAMERA_CAPTURE_FAILED = -0x7D0,
dflet 0:400d8e75a8d0 190 INTERNET_CONNECTION_FAILED = LAN_CONNECTION_FAILED - 1,
dflet 0:400d8e75a8d0 191 DEVICE_NOT_IN_STATION_MODE = INTERNET_CONNECTION_FAILED - 1,
dflet 0:400d8e75a8d0 192 DEVICE_NOT_IN_AP_MODE = DEVICE_NOT_IN_STATION_MODE - 1,
dflet 0:400d8e75a8d0 193 DEVICE_NOT_IN_P2P_MODE = DEVICE_NOT_IN_STATION_MODE - 1,
dflet 0:400d8e75a8d0 194 HTTP_SEND_ERROR = DEVICE_NOT_IN_STATION_MODE - 1,
dflet 0:400d8e75a8d0 195 HTTP_RECV_ERROR = HTTP_SEND_ERROR - 1,
dflet 0:400d8e75a8d0 196 HTTP_INVALID_RESPONSE = HTTP_RECV_ERROR -1,
dflet 0:400d8e75a8d0 197 SNTP_SEND_ERROR = DEVICE_NOT_IN_STATION_MODE - 1,
dflet 0:400d8e75a8d0 198 SNTP_RECV_ERROR = SNTP_SEND_ERROR - 1,
dflet 0:400d8e75a8d0 199 SNTP_SERVER_RESPONSE_ERROR = SNTP_RECV_ERROR - 1,
dflet 0:400d8e75a8d0 200 INVALID_HEX_STRING = DEVICE_NOT_IN_STATION_MODE - 1,
dflet 0:400d8e75a8d0 201 TCP_RECV_ERROR = INVALID_HEX_STRING - 1,
dflet 0:400d8e75a8d0 202 TCP_SEND_ERROR = TCP_RECV_ERROR - 1,
dflet 0:400d8e75a8d0 203 FILE_NOT_FOUND_ERROR = TCP_SEND_ERROR - 1,
dflet 0:400d8e75a8d0 204 INVALID_SERVER_RESPONSE = FILE_NOT_FOUND_ERROR - 1,
dflet 0:400d8e75a8d0 205 FORMAT_NOT_SUPPORTED = INVALID_SERVER_RESPONSE - 1,
dflet 0:400d8e75a8d0 206 FILE_WRITE_ERROR = FORMAT_NOT_SUPPORTED - 1,
dflet 0:400d8e75a8d0 207 INVALID_FILE = FILE_WRITE_ERROR - 1,
dflet 0:400d8e75a8d0 208
dflet 0:400d8e75a8d0 209 STATUS_CODE_MAX = -0xBB8
dflet 0:400d8e75a8d0 210 } e_AppStatusCodes;
dflet 0:400d8e75a8d0 211
dflet 0:400d8e75a8d0 212 /* Send types */
dflet 0:400d8e75a8d0 213 typedef enum {
dflet 0:400d8e75a8d0 214 SL_ERR_SENDER_HEALTH_MON,
dflet 0:400d8e75a8d0 215 SL_ERR_SENDER_CLI_UART,
dflet 0:400d8e75a8d0 216 SL_ERR_SENDER_SUPPLICANT,
dflet 0:400d8e75a8d0 217 SL_ERR_SENDER_NETWORK_STACK,
dflet 0:400d8e75a8d0 218 SL_ERR_SENDER_WLAN_DRV_IF,
dflet 0:400d8e75a8d0 219 SL_ERR_SENDER_WILINK,
dflet 0:400d8e75a8d0 220 SL_ERR_SENDER_INIT_APP,
dflet 0:400d8e75a8d0 221 SL_ERR_SENDER_NETX,
dflet 0:400d8e75a8d0 222 SL_ERR_SENDER_HOST_APD,
dflet 0:400d8e75a8d0 223 SL_ERR_SENDER_MDNS,
dflet 0:400d8e75a8d0 224 SL_ERR_SENDER_HTTP_SERVER,
dflet 0:400d8e75a8d0 225 SL_ERR_SENDER_DHCP_SERVER,
dflet 0:400d8e75a8d0 226 SL_ERR_SENDER_DHCP_CLIENT,
dflet 0:400d8e75a8d0 227 SL_ERR_DISPATCHER,
dflet 0:400d8e75a8d0 228 SL_ERR_NUM_SENDER_LAST=0xFF
dflet 0:400d8e75a8d0 229 } SlErrorSender_e;
dflet 0:400d8e75a8d0 230
dflet 0:400d8e75a8d0 231 /* Error codes */
dflet 0:400d8e75a8d0 232 const int8_t SL_ERROR_STATIC_ADDR_SUBNET_ERROR = (-60); /* network stack error*/
dflet 0:400d8e75a8d0 233 const int8_t SL_ERROR_ILLEGAL_CHANNEL = (-61); /* supplicant error */
dflet 0:400d8e75a8d0 234 const int8_t SL_ERROR_SUPPLICANT_ERROR = (-72); /* init error code */
dflet 0:400d8e75a8d0 235 const int8_t SL_ERROR_HOSTAPD_INIT_FAIL = (-73); /* init error code */
dflet 0:400d8e75a8d0 236 const int8_t SL_ERROR_HOSTAPD_INIT_IF_FAIL = (-74); /* init error code */
dflet 0:400d8e75a8d0 237 const int8_t SL_ERROR_WLAN_DRV_INIT_FAIL = (-75); /* init error code */
dflet 0:400d8e75a8d0 238 const int8_t SL_ERROR_WLAN_DRV_START_FAIL = (-76); /* wlan start error */
dflet 0:400d8e75a8d0 239 const int8_t SL_ERROR_FS_FILE_TABLE_LOAD_FAILED = (-77); /* init file system failed */
dflet 0:400d8e75a8d0 240 const int8_t SL_ERROR_PREFERRED_NETWORKS_FILE_LOAD_FAILED = (-78); /* init file system failed */
dflet 0:400d8e75a8d0 241 const int8_t SL_ERROR_HOSTAPD_BSSID_VALIDATION_ERROR = (-79); /* Ap configurations BSSID error */
dflet 0:400d8e75a8d0 242 const int8_t SL_ERROR_HOSTAPD_FAILED_TO_SETUP_INTERFACE = (-80); /* Ap configurations interface error */
dflet 0:400d8e75a8d0 243 const int8_t SL_ERROR_MDNS_ENABLE_FAIL = (-81); /* mDNS enable failed */
dflet 0:400d8e75a8d0 244 const int8_t SL_ERROR_HTTP_SERVER_ENABLE_FAILED = (-82); /* HTTP server enable failed */
dflet 0:400d8e75a8d0 245 const int8_t SL_ERROR_DHCP_SERVER_ENABLE_FAILED = (-83); /* DHCP server enable failed */
dflet 0:400d8e75a8d0 246 const int8_t SL_ERROR_PREFERRED_NETWORK_LIST_FULL = (-93); /* supplicant error */
dflet 0:400d8e75a8d0 247 const int8_t SL_ERROR_PREFERRED_NETWORKS_FILE_WRITE_FAILED = (-94); /* supplicant error */
dflet 0:400d8e75a8d0 248 const int8_t SL_ERROR_DHCP_CLIENT_RENEW_FAILED = (-100); /* DHCP client error */
dflet 0:400d8e75a8d0 249 /* WLAN Connection management status */
dflet 0:400d8e75a8d0 250 const int8_t SL_ERROR_CON_MGMT_STATUS_UNSPECIFIED = (-102);
dflet 0:400d8e75a8d0 251 const int8_t SL_ERROR_CON_MGMT_STATUS_AUTH_REJECT = (-103);
dflet 0:400d8e75a8d0 252 const int8_t SL_ERROR_CON_MGMT_STATUS_ASSOC_REJECT = (-104);
dflet 0:400d8e75a8d0 253 const int8_t SL_ERROR_CON_MGMT_STATUS_SECURITY_FAILURE = (-105);
dflet 0:400d8e75a8d0 254 const int8_t SL_ERROR_CON_MGMT_STATUS_AP_DEAUTHENTICATE = (-106);
dflet 0:400d8e75a8d0 255 const int8_t SL_ERROR_CON_MGMT_STATUS_AP_DISASSOCIATE = (-107);
dflet 0:400d8e75a8d0 256 const int8_t SL_ERROR_CON_MGMT_STATUS_ROAMING_TRIGGER = (-108);
dflet 0:400d8e75a8d0 257 const int8_t SL_ERROR_CON_MGMT_STATUS_DISCONNECT_DURING_CONNECT = (-109);
dflet 0:400d8e75a8d0 258 const int8_t SL_ERROR_CON_MGMT_STATUS_SG_RESELECT = (-110);
dflet 0:400d8e75a8d0 259 const int8_t SL_ERROR_CON_MGMT_STATUS_ROC_FAILURE = (-111);
dflet 0:400d8e75a8d0 260 const int8_t SL_ERROR_CON_MGMT_STATUS_MIC_FAILURE = (-112);
dflet 0:400d8e75a8d0 261 /* end of WLAN connection management error statuses */
dflet 0:400d8e75a8d0 262 const int8_t SL_ERROR_WAKELOCK_ERROR_PREFIX = (-115); /* Wake lock expired */
dflet 0:400d8e75a8d0 263 const int8_t SL_ERROR_LENGTH_ERROR_PREFIX = (-116); /* Uart header length error */
dflet 0:400d8e75a8d0 264 const int8_t SL_ERROR_MDNS_CREATE_FAIL = (-121); /* mDNS create failed */
dflet 0:400d8e75a8d0 265 const int8_t SL_ERROR_GENERAL_ERROR = (-127);
dflet 0:400d8e75a8d0 266
dflet 0:400d8e75a8d0 267
dflet 0:400d8e75a8d0 268
dflet 0:400d8e75a8d0 269 const int8_t SL_DEVICE_GENERAL_CONFIGURATION = (1);
dflet 0:400d8e75a8d0 270 const int8_t SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME = (11);
dflet 0:400d8e75a8d0 271 const int8_t SL_DEVICE_GENERAL_VERSION = (12);
dflet 0:400d8e75a8d0 272 const int8_t SL_DEVICE_STATUS = (2);
dflet 0:400d8e75a8d0 273
dflet 0:400d8e75a8d0 274 /*
dflet 0:400d8e75a8d0 275 Declare the different event group classifications
dflet 0:400d8e75a8d0 276 The SimpleLink device send asynchronous events. Each event has a group
dflet 0:400d8e75a8d0 277 classification according to its nature.
dflet 0:400d8e75a8d0 278 */
dflet 0:400d8e75a8d0 279 #if 1
dflet 0:400d8e75a8d0 280 /* SL_EVENT_CLASS_WLAN connection user events */
dflet 0:400d8e75a8d0 281 const int8_t SL_WLAN_CONNECT_EVENT = (1);
dflet 0:400d8e75a8d0 282 const int8_t SL_WLAN_DISCONNECT_EVENT = (2);
dflet 0:400d8e75a8d0 283 /* WLAN Smart Config user events */
dflet 0:400d8e75a8d0 284 const int8_t SL_WLAN_SMART_CONFIG_COMPLETE_EVENT = (3);
dflet 0:400d8e75a8d0 285 const int8_t SL_WLAN_SMART_CONFIG_STOP_EVENT = (4);
dflet 0:400d8e75a8d0 286 /* WLAN AP user events */
dflet 0:400d8e75a8d0 287 const int8_t SL_WLAN_STA_CONNECTED_EVENT = (5);
dflet 0:400d8e75a8d0 288 const int8_t SL_WLAN_STA_DISCONNECTED_EVENT = (6);
dflet 0:400d8e75a8d0 289 /* WLAN P2P user events */
dflet 0:400d8e75a8d0 290 const int8_t SL_WLAN_P2P_DEV_FOUND_EVENT = (7);
dflet 0:400d8e75a8d0 291 const int8_t SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT = (8);
dflet 0:400d8e75a8d0 292 const int8_t SL_WLAN_CONNECTION_FAILED_EVENT = (9);
dflet 0:400d8e75a8d0 293 /* SL_EVENT_CLASS_DEVICE user events */
dflet 0:400d8e75a8d0 294 const int8_t SL_DEVICE_FATAL_ERROR_EVENT = (1);
dflet 0:400d8e75a8d0 295 const int8_t SL_DEVICE_ABORT_ERROR_EVENT = (2);
dflet 0:400d8e75a8d0 296 /* SL_EVENT_CLASS_BSD user events */
dflet 0:400d8e75a8d0 297 const int8_t SL_SOCKET_TX_FAILED_EVENT = (1);
dflet 0:400d8e75a8d0 298 const int8_t SL_SOCKET_ASYNC_EVENT = (2);
dflet 0:400d8e75a8d0 299 /* SL_EVENT_CLASS_NETAPP user events */
dflet 0:400d8e75a8d0 300 const int8_t SL_NETAPP_IPV4_IPACQUIRED_EVENT = (1);
dflet 0:400d8e75a8d0 301 const int8_t SL_NETAPP_IPV6_IPACQUIRED_EVENT = (2);
dflet 0:400d8e75a8d0 302 const int8_t SL_NETAPP_IP_LEASED_EVENT = (3);
dflet 0:400d8e75a8d0 303 const int8_t SL_NETAPP_IP_RELEASED_EVENT = (4);
dflet 0:400d8e75a8d0 304
dflet 0:400d8e75a8d0 305 /* Server Events */
dflet 0:400d8e75a8d0 306 const int8_t SL_NETAPP_HTTPGETTOKENVALUE_EVENT = (1);
dflet 0:400d8e75a8d0 307 const int8_t SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT = (2);
dflet 0:400d8e75a8d0 308 #endif
dflet 0:400d8e75a8d0 309
dflet 0:400d8e75a8d0 310 /*
dflet 0:400d8e75a8d0 311 Declare the different event group classifications for sl_DevGet
dflet 0:400d8e75a8d0 312 for getting status indications
dflet 0:400d8e75a8d0 313 */
dflet 0:400d8e75a8d0 314
dflet 0:400d8e75a8d0 315 /* Events list to mask/unmask*/
dflet 0:400d8e75a8d0 316 const int8_t SL_EVENT_CLASS_GLOBAL = (0);
dflet 0:400d8e75a8d0 317 const int8_t SL_EVENT_CLASS_DEVICE = (1);
dflet 0:400d8e75a8d0 318 const int8_t SL_EVENT_CLASS_WLAN = (2);
dflet 0:400d8e75a8d0 319 const int8_t SL_EVENT_CLASS_BSD = (3);
dflet 0:400d8e75a8d0 320 const int8_t SL_EVENT_CLASS_NETAPP = (4);
dflet 0:400d8e75a8d0 321 const int8_t SL_EVENT_CLASS_NETCFG = (5);
dflet 0:400d8e75a8d0 322 const int8_t SL_EVENT_CLASS_FS = (6);
dflet 0:400d8e75a8d0 323
dflet 0:400d8e75a8d0 324
dflet 0:400d8e75a8d0 325 /****************** DEVICE CLASS status ****************/
dflet 0:400d8e75a8d0 326 const uint32_t EVENT_DROPPED_DEVICE_ASYNC_GENERAL_ERROR = (0x00000001L);
dflet 0:400d8e75a8d0 327 const uint32_t STATUS_DEVICE_SMART_CONFIG_ACTIVE = (0x80000000L);
dflet 0:400d8e75a8d0 328
dflet 0:400d8e75a8d0 329 /****************** WLAN CLASS status ****************/
dflet 0:400d8e75a8d0 330 const uint32_t EVENT_DROPPED_WLAN_WLANASYNCONNECTEDRESPONSE = (0x00000001L);
dflet 0:400d8e75a8d0 331 const uint32_t EVENT_DROPPED_WLAN_WLANASYNCDISCONNECTEDRESPONSE = (0x00000002L);
dflet 0:400d8e75a8d0 332 const uint32_t EVENT_DROPPED_WLAN_STA_CONNECTED = (0x00000004L);
dflet 0:400d8e75a8d0 333 const uint32_t EVENT_DROPPED_WLAN_STA_DISCONNECTED = (0x00000008L);
dflet 0:400d8e75a8d0 334 const uint32_t STATUS_WLAN_STA_CONNECTED = (0x80000000L);
dflet 0:400d8e75a8d0 335
dflet 0:400d8e75a8d0 336 /****************** NETAPP CLASS status ****************/
dflet 0:400d8e75a8d0 337 const uint32_t EVENT_DROPPED_NETAPP_IPACQUIRED = (0x00000001L);
dflet 0:400d8e75a8d0 338 const uint32_t EVENT_DROPPED_NETAPP_IPACQUIRED_V6 = (0x00000002L);
dflet 0:400d8e75a8d0 339 const uint32_t EVENT_DROPPED_NETAPP_IP_LEASED = (0x00000004L);
dflet 0:400d8e75a8d0 340 const uint32_t EVENT_DROPPED_NETAPP_IP_RELEASED = (0x00000008L);
dflet 0:400d8e75a8d0 341
dflet 0:400d8e75a8d0 342 /****************** BSD CLASS status ****************/
dflet 0:400d8e75a8d0 343 const uint32_t EVENT_DROPPED_SOCKET_TXFAILEDASYNCRESPONSE = (0x00000001L);
dflet 0:400d8e75a8d0 344
dflet 0:400d8e75a8d0 345 /****************** FS CLASS ****************/
dflet 0:400d8e75a8d0 346
dflet 0:400d8e75a8d0 347 /*****************************************************************************/
dflet 0:400d8e75a8d0 348 /* Structure/Enum declarations */
dflet 0:400d8e75a8d0 349 /*****************************************************************************/
dflet 0:400d8e75a8d0 350
dflet 0:400d8e75a8d0 351 #ifdef SL_IF_TYPE_UART
dflet 0:400d8e75a8d0 352 typedef struct {
dflet 0:400d8e75a8d0 353 uint32_t BaudRate;
dflet 0:400d8e75a8d0 354 uint8_t FlowControlEnable;
dflet 0:400d8e75a8d0 355 uint8_t CommPort;
dflet 0:400d8e75a8d0 356 } SlUartIfParams_t;
dflet 0:400d8e75a8d0 357 #endif
dflet 0:400d8e75a8d0 358
dflet 0:400d8e75a8d0 359 typedef struct {
dflet 0:400d8e75a8d0 360 uint32_t ChipId;
dflet 0:400d8e75a8d0 361 uint32_t FwVersion[4];
dflet 0:400d8e75a8d0 362 uint8_t PhyVersion[4];
dflet 0:400d8e75a8d0 363 } _SlPartialVersion;
dflet 0:400d8e75a8d0 364
dflet 0:400d8e75a8d0 365 typedef struct {
dflet 0:400d8e75a8d0 366 _SlPartialVersion ChipFwAndPhyVersion;
dflet 0:400d8e75a8d0 367 uint32_t NwpVersion[4];
dflet 0:400d8e75a8d0 368 uint16_t RomVersion;
dflet 0:400d8e75a8d0 369 uint16_t Padding;
dflet 0:400d8e75a8d0 370 } SlVersionFull;
dflet 0:400d8e75a8d0 371
dflet 0:400d8e75a8d0 372 typedef struct
dflet 0:400d8e75a8d0 373 {
dflet 0:400d8e75a8d0 374 uint32_t AbortType;
dflet 0:400d8e75a8d0 375 uint32_t AbortData;
dflet 0:400d8e75a8d0 376 }sl_DeviceReportAbort;
dflet 0:400d8e75a8d0 377
dflet 0:400d8e75a8d0 378 typedef struct {
dflet 0:400d8e75a8d0 379 int8_t status;
dflet 0:400d8e75a8d0 380 SlErrorSender_e sender;
dflet 0:400d8e75a8d0 381 } sl_DeviceReport;
dflet 0:400d8e75a8d0 382
dflet 0:400d8e75a8d0 383 typedef union {
dflet 0:400d8e75a8d0 384 sl_DeviceReport deviceEvent;
dflet 0:400d8e75a8d0 385 sl_DeviceReportAbort deviceReport;
dflet 0:400d8e75a8d0 386 } _SlDeviceEventData_u;
dflet 0:400d8e75a8d0 387
dflet 0:400d8e75a8d0 388 typedef struct {
dflet 0:400d8e75a8d0 389 uint32_t Event;
dflet 0:400d8e75a8d0 390 _SlDeviceEventData_u EventData;
dflet 0:400d8e75a8d0 391 } SlDeviceEvent_t;
dflet 0:400d8e75a8d0 392
dflet 0:400d8e75a8d0 393 typedef struct {
dflet 0:400d8e75a8d0 394 /* time */
dflet 0:400d8e75a8d0 395 uint32_t sl_tm_sec;
dflet 0:400d8e75a8d0 396 uint32_t sl_tm_min;
dflet 0:400d8e75a8d0 397 uint32_t sl_tm_hour;
dflet 0:400d8e75a8d0 398 /* date */
dflet 0:400d8e75a8d0 399 uint32_t sl_tm_day; /* 1-31 */
dflet 0:400d8e75a8d0 400 uint32_t sl_tm_mon; /* 1-12 */
dflet 0:400d8e75a8d0 401 uint32_t sl_tm_year; /* YYYY 4 digits */
dflet 0:400d8e75a8d0 402 uint32_t sl_tm_week_day; /* not required */
dflet 0:400d8e75a8d0 403 uint32_t sl_tm_year_day; /* not required */
dflet 0:400d8e75a8d0 404 uint32_t reserved[3];
dflet 0:400d8e75a8d0 405 } SlDateTime_t;
dflet 0:400d8e75a8d0 406
dflet 0:400d8e75a8d0 407 /******************************************************************************/
dflet 0:400d8e75a8d0 408 /* Type declarations */
dflet 0:400d8e75a8d0 409 /******************************************************************************/
dflet 0:400d8e75a8d0 410 typedef void (*P_INIT_CALLBACK)(uint32_t Status);
dflet 0:400d8e75a8d0 411
dflet 0:400d8e75a8d0 412 class cc3100_netcfg;
dflet 0:400d8e75a8d0 413
dflet 0:400d8e75a8d0 414 class cc3100
dflet 0:400d8e75a8d0 415 {
dflet 0:400d8e75a8d0 416
dflet 0:400d8e75a8d0 417 public:
dflet 0:400d8e75a8d0 418
dflet 0:400d8e75a8d0 419 cc3100(PinName button1_irq, PinName button2_irq, PinName cc3100_irq, PinName cc3100_nHIB, PinName cc3100_cs, SPI cc3100_spi);
dflet 0:400d8e75a8d0 420
dflet 0:400d8e75a8d0 421 ~cc3100();
dflet 0:400d8e75a8d0 422
dflet 0:400d8e75a8d0 423 /*****************************************************************************/
dflet 0:400d8e75a8d0 424 /* Function prototypes */
dflet 0:400d8e75a8d0 425 /*****************************************************************************/
dflet 0:400d8e75a8d0 426 int32_t initializeAppVariables();
dflet 0:400d8e75a8d0 427
dflet 0:400d8e75a8d0 428 int32_t establishConnectionWithAP(void);
dflet 0:400d8e75a8d0 429
dflet 0:400d8e75a8d0 430 int32_t checkLanConnection(void);
dflet 0:400d8e75a8d0 431
dflet 0:400d8e75a8d0 432 int32_t checkInternetConnection(void);
dflet 0:400d8e75a8d0 433
dflet 0:400d8e75a8d0 434 int32_t createUDPConnection(void);
dflet 0:400d8e75a8d0 435
dflet 0:400d8e75a8d0 436 int32_t createConnection(uint32_t DestinationIP);
dflet 0:400d8e75a8d0 437
dflet 0:400d8e75a8d0 438 int32_t getChunkSize(int32_t *len, uint8_t **p_Buff, uint32_t *chunk_size);
dflet 0:400d8e75a8d0 439
dflet 0:400d8e75a8d0 440 int32_t hexToi(unsigned char *ptr);
dflet 0:400d8e75a8d0 441
dflet 0:400d8e75a8d0 442 // int32_t getFile(void);
dflet 0:400d8e75a8d0 443
dflet 0:400d8e75a8d0 444 int32_t disconnectFromAP(void);
dflet 0:400d8e75a8d0 445
dflet 0:400d8e75a8d0 446 uint16_t itoa(int16_t cNum, uint8_t *cString);
dflet 0:400d8e75a8d0 447
dflet 0:400d8e75a8d0 448 int32_t Network_IF_InitDriver(uint32_t uiMode);
dflet 0:400d8e75a8d0 449
dflet 0:400d8e75a8d0 450 int32_t configureSimpleLinkToDefaultState(void);
dflet 0:400d8e75a8d0 451
dflet 0:400d8e75a8d0 452 int16_t _sl_GetStartResponseConvert(uint32_t Status);
dflet 0:400d8e75a8d0 453
dflet 0:400d8e75a8d0 454 void _sl_HandleAsync_InitComplete(void *pVoidBuf);
dflet 0:400d8e75a8d0 455
dflet 0:400d8e75a8d0 456 bool IS_PING_DONE(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 457 bool IS_CONNECTED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 458 bool IS_STA_CONNECTED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 459 bool IS_IP_ACQUIRED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 460 bool IS_IP_LEASED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 461 bool IS_CONNECTION_FAILED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 462 bool IS_P2P_NEG_REQ_RECEIVED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 463 bool IS_SMARTCONFIG_DONE(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 464 bool IS_SMARTCONFIG_STOPPED(uint32_t status_variable,const uint32_t bit);
dflet 0:400d8e75a8d0 465
dflet 0:400d8e75a8d0 466
dflet 0:400d8e75a8d0 467
dflet 0:400d8e75a8d0 468 void CLR_STATUS_BIT(uint32_t status_variable, const uint32_t bit);
dflet 0:400d8e75a8d0 469 void SET_STATUS_BIT(uint32_t status_variable, const uint32_t bit);
dflet 0:400d8e75a8d0 470 void CLR_STATUS_BIT_ALL(uint32_t status_variable);
dflet 0:400d8e75a8d0 471
dflet 0:400d8e75a8d0 472 /*!
dflet 0:400d8e75a8d0 473 \brief Start the SimpleLink device
dflet 0:400d8e75a8d0 474
dflet 0:400d8e75a8d0 475 This function initialize the communication interface, set the enable pin
dflet 0:400d8e75a8d0 476 of the device, and call to the init complete callback.
dflet 0:400d8e75a8d0 477
dflet 0:400d8e75a8d0 478 \param[in] pIfHdl Opened Interface Object. In case the interface
dflet 0:400d8e75a8d0 479 must be opened outside the SimpleLink Driver, the
dflet 0:400d8e75a8d0 480 user might give the handler to be used in \n
dflet 0:400d8e75a8d0 481 any access of the communication interface with the
dflet 0:400d8e75a8d0 482 device (UART/SPI). \n
dflet 0:400d8e75a8d0 483 The SimpleLink driver will open an interface port
dflet 0:400d8e75a8d0 484 only if this parameter is null! \n
dflet 0:400d8e75a8d0 485 \param[in] pDevName The name of the device to open. Could be used when
dflet 0:400d8e75a8d0 486 the pIfHdl is null, to transfer information to the
dflet 0:400d8e75a8d0 487 open interface function \n
dflet 0:400d8e75a8d0 488 This pointer could be used to pass additional information to
dflet 0:400d8e75a8d0 489 sl_IfOpen in case it is required (e.g. UART com port name)
dflet 0:400d8e75a8d0 490 \param[in] pInitCallBack Pointer to function that would be called
dflet 0:400d8e75a8d0 491 on completion of the initialization process.\n
dflet 0:400d8e75a8d0 492 If this parameter is NULL the function is
dflet 0:400d8e75a8d0 493 blocked until the device initialization
dflet 0:400d8e75a8d0 494 is completed, otherwise the function returns
dflet 0:400d8e75a8d0 495 immediately.
dflet 0:400d8e75a8d0 496
dflet 0:400d8e75a8d0 497 \return Returns the current active role (STA/AP/P2P) or an error code:
dflet 0:400d8e75a8d0 498 - ROLE_STA, ROLE_AP, ROLE_P2P in case of success,
dflet 0:400d8e75a8d0 499 otherwise in failure one of the following is return:
dflet 0:400d8e75a8d0 500 - ROLE_STA_ERR (Failure to load MAC/PHY in STA role)
dflet 0:400d8e75a8d0 501 - ROLE_AP_ERR (Failure to load MAC/PHY in AP role)
dflet 0:400d8e75a8d0 502 - ROLE_P2P_ERR (Failure to load MAC/PHY in P2P role)
dflet 0:400d8e75a8d0 503
dflet 0:400d8e75a8d0 504
dflet 0:400d8e75a8d0 505 \sa sl_Stop
dflet 0:400d8e75a8d0 506
dflet 0:400d8e75a8d0 507 \note belongs to \ref basic_api
dflet 0:400d8e75a8d0 508
dflet 0:400d8e75a8d0 509 \warning This function must be called before any other SimpleLink API is used, or after sl_Stop is called for reinit the device
dflet 0:400d8e75a8d0 510 \par Example:
dflet 0:400d8e75a8d0 511 \code
dflet 0:400d8e75a8d0 512 An example for open interface without callback routine. The interface name and handler are
dflet 0:400d8e75a8d0 513 handled by the sl_IfOpen routine:
dflet 0:400d8e75a8d0 514
dflet 0:400d8e75a8d0 515 if( sl_Start(NULL, NULL, NULL) < 0 )
dflet 0:400d8e75a8d0 516 {
dflet 0:400d8e75a8d0 517 LOG("Error opening interface to device\n");
dflet 0:400d8e75a8d0 518 }
dflet 0:400d8e75a8d0 519 \endcode
dflet 0:400d8e75a8d0 520 */
dflet 0:400d8e75a8d0 521 #if _SL_INCLUDE_FUNC(sl_Start)
dflet 0:400d8e75a8d0 522 int16_t sl_Start(const void* pIfHdl, int8_t* pDevName, const P_INIT_CALLBACK pInitCallBack);
dflet 0:400d8e75a8d0 523 #endif
dflet 0:400d8e75a8d0 524
dflet 0:400d8e75a8d0 525 /*!
dflet 0:400d8e75a8d0 526 \brief Stop the SimpleLink device
dflet 0:400d8e75a8d0 527
dflet 0:400d8e75a8d0 528 This function clears the enable pin of the device, closes the communication \n
dflet 0:400d8e75a8d0 529 interface and invokes the stop complete callback
dflet 0:400d8e75a8d0 530
dflet 0:400d8e75a8d0 531 \param[in] timeout Stop timeout in msec. Should be used to give the device time to finish \n
dflet 0:400d8e75a8d0 532 any transmission/reception that is not completed when the function was called. \n
dflet 0:400d8e75a8d0 533 Additional options:
dflet 0:400d8e75a8d0 534 - 0 Enter to hibernate immediately \n
dflet 0:400d8e75a8d0 535 - 0xFFFF Host waits for device's response before \n
dflet 0:400d8e75a8d0 536 hibernating, without timeout protection \n
dflet 0:400d8e75a8d0 537 - 0 < Timeout[msec] < 0xFFFF Host waits for device's response before \n
dflet 0:400d8e75a8d0 538 hibernating, with a defined timeout protection \n
dflet 0:400d8e75a8d0 539 This timeout defines the max time to wait. The NWP \n
dflet 0:400d8e75a8d0 540 response can be sent earlier than this timeout.
dflet 0:400d8e75a8d0 541
dflet 0:400d8e75a8d0 542 \return On success, zero is returned. On error, -1 is returned
dflet 0:400d8e75a8d0 543
dflet 0:400d8e75a8d0 544 \sa sl_Start
dflet 0:400d8e75a8d0 545
dflet 0:400d8e75a8d0 546 \note This API will shutdown the device and invoke the "i/f close" function regardless \n
dflet 0:400d8e75a8d0 547 if it was opened implicitly or explicitly. \n
dflet 0:400d8e75a8d0 548 It is up to the platform interface library to properly handle interface close \n
dflet 0:400d8e75a8d0 549 routine \n
dflet 0:400d8e75a8d0 550 belongs to \ref basic_api \n
dflet 0:400d8e75a8d0 551 \warning
dflet 0:400d8e75a8d0 552 */
dflet 0:400d8e75a8d0 553 #if _SL_INCLUDE_FUNC(sl_Stop)
dflet 0:400d8e75a8d0 554 int16_t sl_Stop(const uint16_t timeout);
dflet 0:400d8e75a8d0 555 #endif
dflet 0:400d8e75a8d0 556
dflet 0:400d8e75a8d0 557
dflet 0:400d8e75a8d0 558 /*!
dflet 0:400d8e75a8d0 559 \brief Internal function for setting device configurations
dflet 0:400d8e75a8d0 560
dflet 0:400d8e75a8d0 561 \return On success, zero is returned. On error, -1 is
dflet 0:400d8e75a8d0 562 returned
dflet 0:400d8e75a8d0 563
dflet 0:400d8e75a8d0 564 \param[in] DeviceSetId configuration id
dflet 0:400d8e75a8d0 565 \param[in] Option configurations option
dflet 0:400d8e75a8d0 566 \param[in] ConfigLen configurations len
dflet 0:400d8e75a8d0 567 \param[in] pValues configurations values
dflet 0:400d8e75a8d0 568
dflet 0:400d8e75a8d0 569 \sa
dflet 0:400d8e75a8d0 570 \note
dflet 0:400d8e75a8d0 571 \warning
dflet 0:400d8e75a8d0 572 \par Examples:
dflet 0:400d8e75a8d0 573 \code
dflet 0:400d8e75a8d0 574 Setting device time and date example:
dflet 0:400d8e75a8d0 575
dflet 0:400d8e75a8d0 576 SlDateTime_t dateTime= {0};
dflet 0:400d8e75a8d0 577 dateTime.sl_tm_day = (uint32_t)23; // Day of month (DD format) range 1-13
dflet 0:400d8e75a8d0 578 dateTime.sl_tm_mon = (uint32_t)6; // Month (MM format) in the range of 1-12
dflet 0:400d8e75a8d0 579 dateTime.sl_tm_year = (uint32_t)2014; // Year (YYYY format)
dflet 0:400d8e75a8d0 580 dateTime.sl_tm_hour = (uint32_t)17; // Hours in the range of 0-23
dflet 0:400d8e75a8d0 581 dateTime.sl_tm_min = (uint32_t)55; // Minutes in the range of 0-59
dflet 0:400d8e75a8d0 582 dateTime.sl_tm_sec = (uint32_t)22; // Seconds in the range of 0-59
dflet 0:400d8e75a8d0 583 sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,
dflet 0:400d8e75a8d0 584 SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,
dflet 0:400d8e75a8d0 585 sizeof(SlDateTime_t),
dflet 0:400d8e75a8d0 586 (uint8_t *)(&dateTime));
dflet 0:400d8e75a8d0 587
dflet 0:400d8e75a8d0 588 \endcode
dflet 0:400d8e75a8d0 589 */
dflet 0:400d8e75a8d0 590 #if _SL_INCLUDE_FUNC(sl_DevSet)
dflet 0:400d8e75a8d0 591 int32_t sl_DevSet(const uint8_t DeviceSetId , const uint8_t Option, const uint8_t ConfigLen, const uint8_t *pValues);
dflet 0:400d8e75a8d0 592 #endif
dflet 0:400d8e75a8d0 593
dflet 0:400d8e75a8d0 594 /*!
dflet 0:400d8e75a8d0 595 \brief Internal function for getting device configurations
dflet 0:400d8e75a8d0 596 \return On success, zero is returned. On error, -1 is
dflet 0:400d8e75a8d0 597 returned
dflet 0:400d8e75a8d0 598 \param[in] DeviceGetId configuration id - example SL_DEVICE_STATUS
dflet 0:400d8e75a8d0 599 \param[out] pOption Get configurations option, example for get status options
dflet 0:400d8e75a8d0 600 - SL_EVENT_CLASS_GLOBAL
dflet 0:400d8e75a8d0 601 - SL_EVENT_CLASS_DEVICE
dflet 0:400d8e75a8d0 602 - SL_EVENT_CLASS_WLAN
dflet 0:400d8e75a8d0 603 - SL_EVENT_CLASS_BSD
dflet 0:400d8e75a8d0 604 - SL_EVENT_CLASS_NETAPP
dflet 0:400d8e75a8d0 605 - SL_EVENT_CLASS_NETCFG
dflet 0:400d8e75a8d0 606 - SL_EVENT_CLASS_FS
dflet 0:400d8e75a8d0 607 \param[out] pConfigLen The length of the allocated memory as input, when the
dflet 0:400d8e75a8d0 608 function complete, the value of this parameter would be
dflet 0:400d8e75a8d0 609 the len that actually read from the device.\n
dflet 0:400d8e75a8d0 610 If the device return length that is longer from the input
dflet 0:400d8e75a8d0 611 value, the function will cut the end of the returned structure
dflet 0:400d8e75a8d0 612 and will return SL_ESMALLBUF
dflet 0:400d8e75a8d0 613 \param[out] pValues Get configurations values
dflet 0:400d8e75a8d0 614 \sa
dflet 0:400d8e75a8d0 615 \note
dflet 0:400d8e75a8d0 616 \warning
dflet 0:400d8e75a8d0 617 \par Examples:
dflet 0:400d8e75a8d0 618 \code
dflet 0:400d8e75a8d0 619 Example for getting WLAN class status:
dflet 0:400d8e75a8d0 620 uint32_t statusWlan;
dflet 0:400d8e75a8d0 621 uint8_t pConfigOpt;
dflet 0:400d8e75a8d0 622 uint8_t pConfigLen;
dflet 0:400d8e75a8d0 623 pConfigLen = sizeof(_u32);
dflet 0:400d8e75a8d0 624 pConfigOpt = SL_EVENT_CLASS_WLAN;
dflet 0:400d8e75a8d0 625 sl_DevGet(SL_DEVICE_STATUS,&pConfigOpt,&pConfigLen,(uint8_t *)(&statusWlan));
dflet 0:400d8e75a8d0 626 Example for getting version:
dflet 0:400d8e75a8d0 627 SlVersionFull ver;
dflet 0:400d8e75a8d0 628 pConfigLen = sizeof(ver);
dflet 0:400d8e75a8d0 629 pConfigOpt = SL_DEVICE_GENERAL_VERSION;
dflet 0:400d8e75a8d0 630 sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&pConfigOpt,&pConfigLen,(uint8_t *)(&ver));
dflet 0:400d8e75a8d0 631 printf("CHIP %d\nMAC 31.%d.%d.%d.%d\nPHY %d.%d.%d.%d\nNWP %d.%d.%d.%d\nROM %d\nHOST %d.%d.%d.%d\n",
dflet 0:400d8e75a8d0 632 ver.ChipFwAndPhyVersion.ChipId,
dflet 0:400d8e75a8d0 633 ver.ChipFwAndPhyVersion.FwVersion[0],ver.ChipFwAndPhyVersion.FwVersion[1],
dflet 0:400d8e75a8d0 634 ver.ChipFwAndPhyVersion.FwVersion[2],ver.ChipFwAndPhyVersion.FwVersion[3],
dflet 0:400d8e75a8d0 635 ver.ChipFwAndPhyVersion.PhyVersion[0],ver.ChipFwAndPhyVersion.PhyVersion[1],
dflet 0:400d8e75a8d0 636 ver.ChipFwAndPhyVersion.PhyVersion[2],ver.ChipFwAndPhyVersion.PhyVersion[3],
dflet 0:400d8e75a8d0 637 ver.NwpVersion[0],ver.NwpVersion[1],ver.NwpVersion[2],ver.NwpVersion[3],
dflet 0:400d8e75a8d0 638 ver.RomVersion,
dflet 0:400d8e75a8d0 639 SL_MAJOR_VERSION_NUM,SL_MINOR_VERSION_NUM,SL_VERSION_NUM,SL_SUB_VERSION_NUM);
dflet 0:400d8e75a8d0 640
dflet 0:400d8e75a8d0 641 \endcode
dflet 0:400d8e75a8d0 642 \code
dflet 0:400d8e75a8d0 643 Getting Device time and date example:
dflet 0:400d8e75a8d0 644
dflet 0:400d8e75a8d0 645 SlDateTime_t dateTime = {0};
dflet 0:400d8e75a8d0 646 int8_t configLen = sizeof(SlDateTime_t);
dflet 0:400d8e75a8d0 647 int8_t configOpt = SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME;
dflet 0:400d8e75a8d0 648 sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION,&configOpt, &configLen,(uint8_t *)(&dateTime));
dflet 0:400d8e75a8d0 649
dflet 0:400d8e75a8d0 650 printf("Day %d,Mon %d,Year %d,Hour %,Min %d,Sec %d\n",dateTime.sl_tm_day,dateTime.sl_tm_mon,dateTime.sl_tm_year
dflet 0:400d8e75a8d0 651 dateTime.sl_tm_hour,dateTime.sl_tm_min,dateTime.sl_tm_sec);
dflet 0:400d8e75a8d0 652 \endcode
dflet 0:400d8e75a8d0 653 */
dflet 0:400d8e75a8d0 654 #if _SL_INCLUDE_FUNC(sl_DevGet)
dflet 0:400d8e75a8d0 655 int32_t sl_DevGet(const uint8_t DeviceGetId, uint8_t *pOption,uint8_t *pConfigLen, uint8_t *pValues);
dflet 0:400d8e75a8d0 656 #endif
dflet 0:400d8e75a8d0 657
dflet 0:400d8e75a8d0 658
dflet 0:400d8e75a8d0 659 /*!
dflet 0:400d8e75a8d0 660 \brief Set asynchronous event mask
dflet 0:400d8e75a8d0 661
dflet 0:400d8e75a8d0 662 Mask asynchronous events from the device. Masked events do not
dflet 0:400d8e75a8d0 663 generate asynchronous messages from the device.
dflet 0:400d8e75a8d0 664 By default - all events are active
dflet 0:400d8e75a8d0 665
dflet 0:400d8e75a8d0 666 \param[in] EventClass The classification groups that the
dflet 0:400d8e75a8d0 667 mask is referred to. Need to be one of
dflet 0:400d8e75a8d0 668 the following:
dflet 0:400d8e75a8d0 669 - SL_EVENT_CLASS_GLOBAL
dflet 0:400d8e75a8d0 670 - SL_EVENT_CLASS_DEVICE
dflet 0:400d8e75a8d0 671 - SL_EVENT_CLASS_WLAN
dflet 0:400d8e75a8d0 672 - SL_EVENT_CLASS_BSD
dflet 0:400d8e75a8d0 673 - SL_EVENT_CLASS_NETAPP
dflet 0:400d8e75a8d0 674 - SL_EVENT_CLASS_NETCFG
dflet 0:400d8e75a8d0 675 - SL_EVENT_CLASS_FS
dflet 0:400d8e75a8d0 676
dflet 0:400d8e75a8d0 677
dflet 0:400d8e75a8d0 678 \param[in] Mask Event Mask bitmap. Valid mask are (per group):
dflet 0:400d8e75a8d0 679 - SL_EVENT_CLASS_WLAN user events
dflet 0:400d8e75a8d0 680 - SL_WLAN_CONNECT_EVENT
dflet 0:400d8e75a8d0 681 - SL_WLAN_DISCONNECT_EVENT
dflet 0:400d8e75a8d0 682 - SL_EVENT_CLASS_DEVICE user events
dflet 0:400d8e75a8d0 683 - SL_DEVICE_FATAL_ERROR_EVENT
dflet 0:400d8e75a8d0 684 - SL_EVENT_CLASS_BSD user events
dflet 0:400d8e75a8d0 685 - SL_SOCKET_TX_FAILED_EVENT
dflet 0:400d8e75a8d0 686 - SL_SOCKET_ASYNC_EVENT
dflet 0:400d8e75a8d0 687 - SL_EVENT_CLASS_NETAPP user events
dflet 0:400d8e75a8d0 688 - SL_NETAPP_IPV4_IPACQUIRED_EVENT
dflet 0:400d8e75a8d0 689 - SL_NETAPP_IPV6_IPACQUIRED_EVENT
dflet 0:400d8e75a8d0 690
dflet 0:400d8e75a8d0 691 \return On success, zero is returned. On error, -1 is returned
dflet 0:400d8e75a8d0 692
dflet 0:400d8e75a8d0 693 \sa sl_EventMaskGet
dflet 0:400d8e75a8d0 694
dflet 0:400d8e75a8d0 695 \note belongs to \ref ext_api
dflet 0:400d8e75a8d0 696
dflet 0:400d8e75a8d0 697 \warning
dflet 0:400d8e75a8d0 698 \par Example:
dflet 0:400d8e75a8d0 699 \code
dflet 0:400d8e75a8d0 700
dflet 0:400d8e75a8d0 701 An example of masking connection/disconnection async events from WLAN class:
dflet 0:400d8e75a8d0 702 sl_EventMaskSet(SL_EVENT_CLASS_WLAN, (SL_WLAN_CONNECT_EVENT | SL_WLAN_DISCONNECT_EVENT) );
dflet 0:400d8e75a8d0 703
dflet 0:400d8e75a8d0 704 \endcode
dflet 0:400d8e75a8d0 705 */
dflet 0:400d8e75a8d0 706 #if _SL_INCLUDE_FUNC(sl_EventMaskSet)
dflet 0:400d8e75a8d0 707 int16_t sl_EventMaskSet(const uint8_t EventClass , const uint32_t Mask);
dflet 0:400d8e75a8d0 708 #endif
dflet 0:400d8e75a8d0 709
dflet 0:400d8e75a8d0 710 /*!
dflet 0:400d8e75a8d0 711 \brief Get current event mask of the device
dflet 0:400d8e75a8d0 712
dflet 0:400d8e75a8d0 713 return the events bit mask from the device. In case that event is
dflet 0:400d8e75a8d0 714 masked, the device is not sending this event.
dflet 0:400d8e75a8d0 715
dflet 0:400d8e75a8d0 716 \param[in] EventClass The classification groups that the
dflet 0:400d8e75a8d0 717 mask is referred to. Need to be one of
dflet 0:400d8e75a8d0 718 the following:
dflet 0:400d8e75a8d0 719 - SL_EVENT_CLASS_GLOBAL
dflet 0:400d8e75a8d0 720 - SL_EVENT_CLASS_DEVICE
dflet 0:400d8e75a8d0 721 - SL_EVENT_CLASS_WLAN
dflet 0:400d8e75a8d0 722 - SL_EVENT_CLASS_BSD
dflet 0:400d8e75a8d0 723 - SL_EVENT_CLASS_NETAPP
dflet 0:400d8e75a8d0 724 - SL_EVENT_CLASS_NETCFG
dflet 0:400d8e75a8d0 725 - SL_EVENT_CLASS_FS
dflet 0:400d8e75a8d0 726
dflet 0:400d8e75a8d0 727 \param[out] pMask Pointer to Mask bitmap where the
dflet 0:400d8e75a8d0 728 value should be stored. Bitmasks are the same as in \ref sl_EventMaskSet
dflet 0:400d8e75a8d0 729
dflet 0:400d8e75a8d0 730 \return On success, zero is returned. On error, -1 is returned
dflet 0:400d8e75a8d0 731
dflet 0:400d8e75a8d0 732 \sa sl_EventMaskSet
dflet 0:400d8e75a8d0 733
dflet 0:400d8e75a8d0 734 \note belongs to \ref ext_api
dflet 0:400d8e75a8d0 735
dflet 0:400d8e75a8d0 736 \warning
dflet 0:400d8e75a8d0 737 \par Example:
dflet 0:400d8e75a8d0 738 \code
dflet 0:400d8e75a8d0 739
dflet 0:400d8e75a8d0 740 An example of getting an event mask for WLAN class
dflet 0:400d8e75a8d0 741 uint32_t maskWlan;
dflet 0:400d8e75a8d0 742 sl_StatusGet(SL_EVENT_CLASS_WLAN,&maskWlan);
dflet 0:400d8e75a8d0 743
dflet 0:400d8e75a8d0 744 \endcode
dflet 0:400d8e75a8d0 745 */
dflet 0:400d8e75a8d0 746 #if _SL_INCLUDE_FUNC(sl_EventMaskGet)
dflet 0:400d8e75a8d0 747 int16_t sl_EventMaskGet(const uint8_t EventClass, uint32_t *pMask);
dflet 0:400d8e75a8d0 748 #endif
dflet 0:400d8e75a8d0 749
dflet 0:400d8e75a8d0 750
dflet 0:400d8e75a8d0 751 /*!
dflet 0:400d8e75a8d0 752 \brief the simple link task entry
dflet 0:400d8e75a8d0 753
dflet 0:400d8e75a8d0 754 \Param
dflet 0:400d8e75a8d0 755 This function must be called from the main loop or from dedicated thread in
dflet 0:400d8e75a8d0 756 the following cases:
dflet 0:400d8e75a8d0 757 - Non-Os Platform - should be called from the mail loop
dflet 0:400d8e75a8d0 758 - Multi Threaded Platform when the user does not implement the external spawn functions -
dflet 0:400d8e75a8d0 759 should be called from dedicated thread allocated to the simplelink driver.
dflet 0:400d8e75a8d0 760 In this mode the function never return.
dflet 0:400d8e75a8d0 761
dflet 0:400d8e75a8d0 762 \return None
dflet 0:400d8e75a8d0 763
dflet 0:400d8e75a8d0 764 \sa sl_Stop
dflet 0:400d8e75a8d0 765
dflet 0:400d8e75a8d0 766 \note belongs to \ref basic_api
dflet 0:400d8e75a8d0 767
dflet 0:400d8e75a8d0 768 \warning This function must be called from a thread that is start running before
dflet 0:400d8e75a8d0 769 any call to other simple link API
dflet 0:400d8e75a8d0 770 */
dflet 0:400d8e75a8d0 771 #if _SL_INCLUDE_FUNC(sl_Task)
dflet 0:400d8e75a8d0 772 void sl_Task(void);
dflet 0:400d8e75a8d0 773 #endif
dflet 0:400d8e75a8d0 774
dflet 0:400d8e75a8d0 775
dflet 0:400d8e75a8d0 776 /*!
dflet 0:400d8e75a8d0 777 \brief Setting the internal uart mode
dflet 0:400d8e75a8d0 778
dflet 0:400d8e75a8d0 779 \param[in] pUartParams Pointer to the uart configuration parameter set:
dflet 0:400d8e75a8d0 780 baudrate - up to 711 Kbps
dflet 0:400d8e75a8d0 781 flow control - enable/disable
dflet 0:400d8e75a8d0 782 comm port - the comm port number
dflet 0:400d8e75a8d0 783
dflet 0:400d8e75a8d0 784 \return On success zero is returned, otherwise - Failed.
dflet 0:400d8e75a8d0 785
dflet 0:400d8e75a8d0 786 \sa sl_Stop
dflet 0:400d8e75a8d0 787
dflet 0:400d8e75a8d0 788 \note belongs to \ref basic_api
dflet 0:400d8e75a8d0 789
dflet 0:400d8e75a8d0 790 \warning This function must consider the host uart capability
dflet 0:400d8e75a8d0 791 */
dflet 0:400d8e75a8d0 792 #ifdef SL_IF_TYPE_UART
dflet 0:400d8e75a8d0 793 #if _SL_INCLUDE_FUNC(sl_UartSetMode)
dflet 0:400d8e75a8d0 794 int16_t sl_UartSetMode(const SlUartIfParams_t* pUartParams);
dflet 0:400d8e75a8d0 795 #endif
dflet 0:400d8e75a8d0 796 #endif
dflet 0:400d8e75a8d0 797
dflet 0:400d8e75a8d0 798 public:
dflet 0:400d8e75a8d0 799
dflet 0:400d8e75a8d0 800 cc3100_spi _spi;
dflet 0:400d8e75a8d0 801 cc3100_driver _driver;
dflet 0:400d8e75a8d0 802 #ifndef SL_PLATFORM_MULTI_THREADED
dflet 0:400d8e75a8d0 803 cc3100_nonos _nonos;
dflet 0:400d8e75a8d0 804 #endif
dflet 0:400d8e75a8d0 805 cc3100_wlan _wlan;
dflet 0:400d8e75a8d0 806 cc3100_wlan_rx_filters _wlan_filters;
dflet 0:400d8e75a8d0 807 cc3100_netapp _netapp;
dflet 0:400d8e75a8d0 808 cc3100_fs _fs;
dflet 0:400d8e75a8d0 809 cc3100_netcfg _netcfg;
dflet 0:400d8e75a8d0 810 cc3100_socket _socket;
dflet 0:400d8e75a8d0 811 cc3100_flowcont _flowcont;
dflet 0:400d8e75a8d0 812
dflet 0:400d8e75a8d0 813
dflet 0:400d8e75a8d0 814 protected:
dflet 0:400d8e75a8d0 815
dflet 0:400d8e75a8d0 816
dflet 0:400d8e75a8d0 817 };//class
dflet 0:400d8e75a8d0 818
dflet 0:400d8e75a8d0 819 }//namespace mbed_cc3100
dflet 0:400d8e75a8d0 820
dflet 0:400d8e75a8d0 821 /*!
dflet 0:400d8e75a8d0 822
dflet 0:400d8e75a8d0 823 Close the Doxygen group.
dflet 0:400d8e75a8d0 824 @}
dflet 0:400d8e75a8d0 825
dflet 0:400d8e75a8d0 826 */
dflet 0:400d8e75a8d0 827
dflet 0:400d8e75a8d0 828
dflet 0:400d8e75a8d0 829 #endif /* __DEVICE_H__ */
dflet 0:400d8e75a8d0 830
dflet 0:400d8e75a8d0 831
dflet 0:400d8e75a8d0 832