Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Committer:
dflet
Date:
Tue Sep 15 16:45:04 2015 +0000
Revision:
22:f9b5e0b80bf2
Parent:
0:50cedd586816
Removed some debug.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:50cedd586816 1 /*
dflet 0:50cedd586816 2 * simplelink.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:50cedd586816 3 *
dflet 0:50cedd586816 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:50cedd586816 5 *
dflet 0:50cedd586816 6 *
dflet 0:50cedd586816 7 * Redistribution and use in source and binary forms, with or without
dflet 0:50cedd586816 8 * modification, are permitted provided that the following conditions
dflet 0:50cedd586816 9 * are met:
dflet 0:50cedd586816 10 *
dflet 0:50cedd586816 11 * Redistributions of source code must retain the above copyright
dflet 0:50cedd586816 12 * notice, this list of conditions and the following disclaimer.
dflet 0:50cedd586816 13 *
dflet 0:50cedd586816 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:50cedd586816 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:50cedd586816 16 * documentation and/or other materials provided with the
dflet 0:50cedd586816 17 * distribution.
dflet 0:50cedd586816 18 *
dflet 0:50cedd586816 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:50cedd586816 20 * its contributors may be used to endorse or promote products derived
dflet 0:50cedd586816 21 * from this software without specific prior written permission.
dflet 0:50cedd586816 22 *
dflet 0:50cedd586816 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:50cedd586816 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:50cedd586816 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:50cedd586816 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:50cedd586816 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:50cedd586816 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:50cedd586816 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:50cedd586816 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:50cedd586816 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:50cedd586816 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:50cedd586816 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:50cedd586816 34 *
dflet 0:50cedd586816 35 */
dflet 0:50cedd586816 36
dflet 0:50cedd586816 37
dflet 0:50cedd586816 38 /*!
dflet 0:50cedd586816 39 \mainpage SimpleLink Driver
dflet 0:50cedd586816 40
dflet 0:50cedd586816 41 \section intro_sec Introduction
dflet 0:50cedd586816 42
dflet 0:50cedd586816 43 The SimpleLink CC31xx/CC2xx family allows to add Wi-Fi and networking capabilities
dflet 0:50cedd586816 44 to low-cost embedded products without having prior Wi-Fi, RF or networking expertise.
dflet 0:50cedd586816 45 The CC31xx/CC32xx is an ideal solution for microcontroller-based sensor and control
dflet 0:50cedd586816 46 applications such as home appliances, home automation and smart metering.
dflet 0:50cedd586816 47 The CC31xx/CC32xx has integrated a comprehensive TCP/IP network stack, Wi-Fi driver and
dflet 0:50cedd586816 48 security supplicant leading to easier portability to microcontrollers, to an
dflet 0:50cedd586816 49 ultra-low memory footprint, all without compromising the capabilities and robustness
dflet 0:50cedd586816 50 of the final application.
dflet 0:50cedd586816 51
dflet 0:50cedd586816 52
dflet 0:50cedd586816 53
dflet 0:50cedd586816 54 \section modules_sec Module Names
dflet 0:50cedd586816 55 To make it simple, TI's SimpleLink CC31xx/CC32xx platform capabilities were divided into modules by topic (Silo).
dflet 0:50cedd586816 56 These capabilities range from basic device management through wireless
dflet 0:50cedd586816 57 network configuration, standard BSD socket and much more.
dflet 0:50cedd586816 58 Listed below are the various modules in the SimpleLink CC31xx/CC32xx driver:
dflet 0:50cedd586816 59 -# \ref device - controls the behaviour of the CC31xx/CC32xx device (start/stop, events masking and obtaining specific device status)
dflet 0:50cedd586816 60 -# \ref wlan - controls the use of the WiFi WLAN module including:
dflet 0:50cedd586816 61 - Connection features, such as: profiles, policies, SmartConfig™
dflet 0:50cedd586816 62 - Advanced WLAN features, such as: scans, rx filters and rx statistics collection
dflet 0:50cedd586816 63 -# \ref socket - controls standard client/server sockets programming options and capabilities
dflet 0:50cedd586816 64 -# \ref netapp - activates networking applications, such as: HTTP Server, DHCP Server, Ping, DNS and mDNS.
dflet 0:50cedd586816 65 -# \ref netcfg - controls the configuration of the device addresses (i.e. IP and MAC addresses)
dflet 0:50cedd586816 66 -# \ref FileSystem - provides file system capabilities to TI's CC31XX that can be used by both the CC31XX device and the user.
dflet 0:50cedd586816 67
dflet 0:50cedd586816 68
dflet 0:50cedd586816 69 \section proting_sec Porting Guide
dflet 0:50cedd586816 70
dflet 0:50cedd586816 71 The porting of the SimpleLink driver to any new platform is based on few simple steps.
dflet 0:50cedd586816 72 This guide takes you through this process step by step. Please follow the instructions
dflet 0:50cedd586816 73 carefully to avoid any problems during this process and to enable efficient and proper
dflet 0:50cedd586816 74 work with the device.
dflet 0:50cedd586816 75 Please notice that all modifications and porting adjustments of the driver should be
dflet 0:50cedd586816 76 made in the user.h header file only.
dflet 0:50cedd586816 77 Keep making any of the changes only in this file will ensure smoothly transaction to
dflet 0:50cedd586816 78 new versions of the driver at the future!
dflet 0:50cedd586816 79
dflet 0:50cedd586816 80
dflet 0:50cedd586816 81 \subsection porting_step1 Step 1 - Create your own user.h file
dflet 0:50cedd586816 82
dflet 0:50cedd586816 83 The first step is to create a user.h file that will include your configurations and
dflet 0:50cedd586816 84 adjustments. You can use the empty template provided as part of this driver or
dflet 0:50cedd586816 85 you can choose to base your file on file from one of the wide range of examples
dflet 0:50cedd586816 86 applications provided by Texas Instruments
dflet 0:50cedd586816 87
dflet 0:50cedd586816 88
dflet 0:50cedd586816 89 \subsection porting_step2 Step 2 - Select the capabilities set required for your application
dflet 0:50cedd586816 90
dflet 0:50cedd586816 91 Texas Instruments made a lot of efforts to build set of predefined capability sets that would
dflet 0:50cedd586816 92 fit most of the target application.
dflet 0:50cedd586816 93 It is recommended to try and choose one of this predefined capabilities set before going to
dflet 0:50cedd586816 94 build your own customized set. If you find compatible set you can skip the rest of this step.
dflet 0:50cedd586816 95
dflet 0:50cedd586816 96 The available sets are:
dflet 0:50cedd586816 97 -# SL_TINY - Compatible to be used on platforms with very limited resources. Provides
dflet 0:50cedd586816 98 the best in class foot print in terms of Code and Data consumption.
dflet 0:50cedd586816 99 -# SL_SMALL - Compatible to most common networking applications. Provide the most
dflet 0:50cedd586816 100 common APIs with decent balance between code size, data size, functionality
dflet 0:50cedd586816 101 and performances
dflet 0:50cedd586816 102 -# SL_FULL - Provide access to all SimpleLink functionalities
dflet 0:50cedd586816 103
dflet 0:50cedd586816 104
dflet 0:50cedd586816 105 \subsection porting_step3 Step 3 - Bind the device enable/disable output line
dflet 0:50cedd586816 106
dflet 0:50cedd586816 107 The enable/disable line (nHib) provide mechanism to enter the device into the least current
dflet 0:50cedd586816 108 consumption mode. This mode could be used when no traffic is required (tx/rx).
dflet 0:50cedd586816 109 when this line is not connected to any IO of the host this define should be left empty.
dflet 0:50cedd586816 110 Not connecting this line results in ability to start the driver only once.
dflet 0:50cedd586816 111
dflet 0:50cedd586816 112
dflet 0:50cedd586816 113 \subsection porting_step4 Step 4 - Writing your interface communication driver
dflet 0:50cedd586816 114
dflet 0:50cedd586816 115 The SimpleLink device support several standard communication protocol among SPI and
dflet 0:50cedd586816 116 UART. Depending on your needs and your hardware design, you should choose the
dflet 0:50cedd586816 117 communication channel type.
dflet 0:50cedd586816 118 The interface for this communication channel should include 4 simple access functions:
dflet 0:50cedd586816 119 -# open
dflet 0:50cedd586816 120 -# close
dflet 0:50cedd586816 121 -# read
dflet 0:50cedd586816 122 -# write
dflet 0:50cedd586816 123
dflet 0:50cedd586816 124 The way this driver would be implemented is directly effecting the efficiency and
dflet 0:50cedd586816 125 the performances of the SimpleLink device on this platform.
dflet 0:50cedd586816 126 If your system has DMA you should consider to use it in order to increase the utilization
dflet 0:50cedd586816 127 of the communication channel
dflet 0:50cedd586816 128 If you have enough memory resources you should consider using a buffer to increase the
dflet 0:50cedd586816 129 efficiency of the write operations.
dflet 0:50cedd586816 130
dflet 0:50cedd586816 131
dflet 0:50cedd586816 132 \subsection porting_step5 Step 5 - Choose your memory management model
dflet 0:50cedd586816 133
dflet 0:50cedd586816 134 The SimpleLink driver support two memory models:
dflet 0:50cedd586816 135 -# Static (default)
dflet 0:50cedd586816 136 -# Dynamic
dflet 0:50cedd586816 137
dflet 0:50cedd586816 138 If you choose to work in dynamic model you will have to provide alloc and free functions
dflet 0:50cedd586816 139 to be used by the Simple Link driver otherwise nothing need to be done.
dflet 0:50cedd586816 140
dflet 0:50cedd586816 141
dflet 0:50cedd586816 142 \subsection porting_step6 Step 6 - OS adaptation
dflet 0:50cedd586816 143
dflet 0:50cedd586816 144 The SimpleLink driver could run on two kind of platforms:
dflet 0:50cedd586816 145 -# Non-Os / Single Threaded (default)
dflet 0:50cedd586816 146 -# Multi-Threaded
dflet 0:50cedd586816 147
dflet 0:50cedd586816 148 If you choose to work in multi-threaded environment under operating system you will have to
dflet 0:50cedd586816 149 provide some basic adaptation routines to allow the driver to protect access to resources
dflet 0:50cedd586816 150 for different threads (locking object) and to allow synchronization between threads (sync objects).
dflet 0:50cedd586816 151 In additional the driver support running without dedicated thread allocated solely to the simple
dflet 0:50cedd586816 152 link driver. If you choose to work in this mode, you should also supply a spawn method that
dflet 0:50cedd586816 153 will enable to run function on a temporary context.
dflet 0:50cedd586816 154
dflet 0:50cedd586816 155
dflet 0:50cedd586816 156 \subsection porting_step7 Step 7 - Set your asynchronous event handlers routines
dflet 0:50cedd586816 157
dflet 0:50cedd586816 158 The SimpleLink device generate asynchronous events in several situations.
dflet 0:50cedd586816 159 These asynchronous events could be masked.
dflet 0:50cedd586816 160 In order to catch these events you have to provide handler routines.
dflet 0:50cedd586816 161 Please notice that if you not provide a handler routine and the event is received,
dflet 0:50cedd586816 162 the driver will drop this event without any indication of this drop.
dflet 0:50cedd586816 163
dflet 0:50cedd586816 164
dflet 0:50cedd586816 165 \subsection porting_step8 Step 8 - Run diagnostic tools to validate the correctness of your porting
dflet 0:50cedd586816 166
dflet 0:50cedd586816 167 The driver is delivered with some porting diagnostic tools to simplify the porting validation process
dflet 0:50cedd586816 168 and to reduce issues latter. It is very important to follow carefully this process.
dflet 0:50cedd586816 169
dflet 0:50cedd586816 170 The diagnostic process include:
dflet 0:50cedd586816 171 -# Validating Interface Communication Driver
dflet 0:50cedd586816 172 -# Validating OS adaptation layer
dflet 0:50cedd586816 173 -# Validating HW integrity
dflet 0:50cedd586816 174 -# Validating basic work with the device
dflet 0:50cedd586816 175
dflet 0:50cedd586816 176
dflet 0:50cedd586816 177 \section sw_license License
dflet 0:50cedd586816 178
dflet 0:50cedd586816 179 *
dflet 0:50cedd586816 180 *
dflet 0:50cedd586816 181 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:50cedd586816 182 *
dflet 0:50cedd586816 183 *
dflet 0:50cedd586816 184 * Redistribution and use in source and binary forms, with or without
dflet 0:50cedd586816 185 * modification, are permitted provided that the following conditions
dflet 0:50cedd586816 186 * are met:
dflet 0:50cedd586816 187 *
dflet 0:50cedd586816 188 * Redistributions of source code must retain the above copyright
dflet 0:50cedd586816 189 * notice, this list of conditions and the following disclaimer.
dflet 0:50cedd586816 190 *
dflet 0:50cedd586816 191 * Redistributions in binary form must reproduce the above copyright
dflet 0:50cedd586816 192 * notice, this list of conditions and the following disclaimer in the
dflet 0:50cedd586816 193 * documentation and/or other materials provided with the
dflet 0:50cedd586816 194 * distribution.
dflet 0:50cedd586816 195 *
dflet 0:50cedd586816 196 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:50cedd586816 197 * its contributors may be used to endorse or promote products derived
dflet 0:50cedd586816 198 * from this software without specific prior written permission.
dflet 0:50cedd586816 199 *
dflet 0:50cedd586816 200 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:50cedd586816 201 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:50cedd586816 202 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:50cedd586816 203 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:50cedd586816 204 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:50cedd586816 205 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:50cedd586816 206 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:50cedd586816 207 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:50cedd586816 208 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:50cedd586816 209 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:50cedd586816 210 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:50cedd586816 211 *
dflet 0:50cedd586816 212 */
dflet 0:50cedd586816 213
dflet 0:50cedd586816 214
dflet 0:50cedd586816 215
dflet 0:50cedd586816 216 #ifndef SIMPLELINK_H_
dflet 0:50cedd586816 217 #define SIMPLELINK_H_
dflet 0:50cedd586816 218
dflet 0:50cedd586816 219 #include "mbed.h"
dflet 0:50cedd586816 220 #include "cc3100_user.h"
dflet 0:50cedd586816 221
dflet 0:50cedd586816 222 namespace mbed_cc3100 {
dflet 0:50cedd586816 223
dflet 0:50cedd586816 224 /*! \attention Async event activation notes
dflet 0:50cedd586816 225 Function prototypes for event callback handlers
dflet 0:50cedd586816 226 Event handler function names should be defined in the user.h file
dflet 0:50cedd586816 227 e.g.
dflet 0:50cedd586816 228 "#define sl_WlanEvtHdlr SLWlanEventHandler"
dflet 0:50cedd586816 229 Indicates all WLAN events are handled by User func "SLWlanEventHandler"
dflet 0:50cedd586816 230 Important notes:
dflet 0:50cedd586816 231 1. Event handlers cannot activate another SimpleLink API from the event's context
dflet 0:50cedd586816 232 2. Event's data is valid during event's context. Any application data
dflet 0:50cedd586816 233 which is required for the user application should be copied or marked
dflet 0:50cedd586816 234 into user's variables
dflet 0:50cedd586816 235 3. It is not recommended to delay the execution of the event callback handler
dflet 0:50cedd586816 236
dflet 0:50cedd586816 237 */
dflet 0:50cedd586816 238
dflet 0:50cedd586816 239 /*!
dflet 0:50cedd586816 240
dflet 0:50cedd586816 241 \addtogroup UserEvents
dflet 0:50cedd586816 242 @{
dflet 0:50cedd586816 243
dflet 0:50cedd586816 244 */
dflet 0:50cedd586816 245
dflet 0:50cedd586816 246
dflet 0:50cedd586816 247 /*****************************************************************************/
dflet 0:50cedd586816 248 /* Macro declarations for Host Driver version */
dflet 0:50cedd586816 249 /*****************************************************************************/
dflet 0:50cedd586816 250 #define SL_DRIVER_VERSION "1.0.0.10"
dflet 0:50cedd586816 251 #define SL_MAJOR_VERSION_NUM 1L
dflet 0:50cedd586816 252 #define SL_MINOR_VERSION_NUM 0L
dflet 0:50cedd586816 253 #define SL_VERSION_NUM 0L
dflet 0:50cedd586816 254 #define SL_SUB_VERSION_NUM 10L
dflet 0:50cedd586816 255
dflet 0:50cedd586816 256
dflet 0:50cedd586816 257 /*****************************************************************************/
dflet 0:50cedd586816 258 /* Macro declarations for predefined configurations */
dflet 0:50cedd586816 259 /*****************************************************************************/
dflet 0:50cedd586816 260
dflet 0:50cedd586816 261 #ifdef SL_TINY
dflet 0:50cedd586816 262
dflet 0:50cedd586816 263 #undef SL_INC_ARG_CHECK
dflet 0:50cedd586816 264 #undef SL_INC_EXT_API
dflet 0:50cedd586816 265 #undef SL_INC_SOCK_SERVER_SIDE_API
dflet 0:50cedd586816 266 #undef SL_INC_WLAN_PKG
dflet 0:50cedd586816 267 #undef SL_INC_NET_CFG_PKG
dflet 0:50cedd586816 268 #undef SL_INC_FS_PKG
dflet 0:50cedd586816 269 #undef SL_INC_SET_UART_MODE
dflet 0:50cedd586816 270 #undef SL_INC_NVMEM_PKG
dflet 0:50cedd586816 271 #define SL_INC_STD_BSD_API_NAMING
dflet 0:50cedd586816 272 #define SL_INC_SOCK_CLIENT_SIDE_API
dflet 0:50cedd586816 273 #define SL_INC_SOCK_RECV_API
dflet 0:50cedd586816 274 #define SL_INC_SOCK_SEND_API
dflet 0:50cedd586816 275 #define SL_INC_SOCKET_PKG
dflet 0:50cedd586816 276 #define SL_INC_NET_APP_PKG
dflet 0:50cedd586816 277 #endif
dflet 0:50cedd586816 278
dflet 0:50cedd586816 279 #ifdef SL_SMALL
dflet 0:50cedd586816 280 #undef SL_INC_EXT_API
dflet 0:50cedd586816 281 #undef SL_INC_NET_APP_PKG
dflet 0:50cedd586816 282 #undef SL_INC_NET_CFG_PKG
dflet 0:50cedd586816 283 #undef SL_INC_FS_PKG
dflet 0:50cedd586816 284 #define SL_INC_ARG_CHECK
dflet 0:50cedd586816 285 #define SL_INC_WLAN_PKG
dflet 0:50cedd586816 286 #define SL_INC_SOCKET_PKG
dflet 0:50cedd586816 287 #define SL_INC_SOCK_CLIENT_SIDE_API
dflet 0:50cedd586816 288 #define SL_INC_SOCK_SERVER_SIDE_API
dflet 0:50cedd586816 289 #define SL_INC_SOCK_RECV_API
dflet 0:50cedd586816 290 #define SL_INC_SOCK_SEND_API
dflet 0:50cedd586816 291 #define SL_INC_SET_UART_MODE
dflet 0:50cedd586816 292 #endif
dflet 0:50cedd586816 293
dflet 0:50cedd586816 294 #ifdef SL_FULL
dflet 0:50cedd586816 295 #define SL_INC_EXT_API
dflet 0:50cedd586816 296 #define SL_INC_NET_APP_PKG
dflet 0:50cedd586816 297 #define SL_INC_NET_CFG_PKG
dflet 0:50cedd586816 298 #define SL_INC_FS_PKG
dflet 0:50cedd586816 299 #define SL_INC_ARG_CHECK
dflet 0:50cedd586816 300 #define SL_INC_WLAN_PKG
dflet 0:50cedd586816 301 #define SL_INC_SOCKET_PKG
dflet 0:50cedd586816 302 #define SL_INC_SOCK_CLIENT_SIDE_API
dflet 0:50cedd586816 303 #define SL_INC_SOCK_SERVER_SIDE_API
dflet 0:50cedd586816 304 #define SL_INC_SOCK_RECV_API
dflet 0:50cedd586816 305 #define SL_INC_SOCK_SEND_API
dflet 0:50cedd586816 306 #define SL_INC_SET_UART_MODE
dflet 0:50cedd586816 307 #endif
dflet 0:50cedd586816 308
dflet 0:50cedd586816 309 #define SL_RET_CODE_OK (0)
dflet 0:50cedd586816 310 #define SL_RET_CODE_INVALID_INPUT (-2)
dflet 0:50cedd586816 311 #define SL_RET_CODE_SELF_ERROR (-3)
dflet 0:50cedd586816 312 #define SL_RET_CODE_NWP_IF_ERROR (-4)
dflet 0:50cedd586816 313 #define SL_RET_CODE_MALLOC_ERROR (-5)
dflet 0:50cedd586816 314
dflet 0:50cedd586816 315 #define sl_SyncObjClear(pObj) sl_SyncObjWait(pObj,SL_OS_NO_WAIT)
dflet 0:50cedd586816 316
dflet 0:50cedd586816 317 #ifndef SL_TINY_EXT
dflet 0:50cedd586816 318 #define SL_MAX_SOCKETS (8)
dflet 0:50cedd586816 319 #else
dflet 0:50cedd586816 320 #define SL_MAX_SOCKETS (2)
dflet 0:50cedd586816 321 #endif
dflet 0:50cedd586816 322
dflet 0:50cedd586816 323 /*****************************************************************************/
dflet 0:50cedd586816 324 /* Types definitions */
dflet 0:50cedd586816 325 /*****************************************************************************/
dflet 0:50cedd586816 326
dflet 0:50cedd586816 327
dflet 0:50cedd586816 328 #ifndef NULL
dflet 0:50cedd586816 329 #define NULL (0)
dflet 0:50cedd586816 330 #endif
dflet 0:50cedd586816 331
dflet 0:50cedd586816 332 #ifndef FALSE
dflet 0:50cedd586816 333 #define FALSE (0)
dflet 0:50cedd586816 334 #endif
dflet 0:50cedd586816 335
dflet 0:50cedd586816 336 #ifndef TRUE
dflet 0:50cedd586816 337 #define TRUE (!FALSE)
dflet 0:50cedd586816 338 #endif
dflet 0:50cedd586816 339
dflet 0:50cedd586816 340 #ifndef OK
dflet 0:50cedd586816 341 #define OK (0)
dflet 0:50cedd586816 342 #endif
dflet 0:50cedd586816 343
dflet 0:50cedd586816 344 //#ifndef _SL_USER_TYPES
dflet 0:50cedd586816 345 //typedef unsigned char _u8;
dflet 0:50cedd586816 346 //typedef signed char _i8;
dflet 0:50cedd586816 347
dflet 0:50cedd586816 348 //typedef unsigned short _u16;
dflet 0:50cedd586816 349 //typedef signed short _i16;
dflet 0:50cedd586816 350
dflet 0:50cedd586816 351 //typedef unsigned long _u32;
dflet 0:50cedd586816 352 //typedef signed long _i32;
dflet 0:50cedd586816 353 //#define _volatile volatile
dflet 0:50cedd586816 354 //#define _const const
dflet 0:50cedd586816 355 //#endif
dflet 0:50cedd586816 356
dflet 0:50cedd586816 357 typedef uint16_t _SlOpcode_t;
dflet 0:50cedd586816 358 typedef uint8_t _SlArgSize_t;
dflet 0:50cedd586816 359 typedef int16_t _SlDataSize_t;
dflet 0:50cedd586816 360 typedef int16_t _SlReturnVal_t;
dflet 0:50cedd586816 361
dflet 0:50cedd586816 362 /*
dflet 0:50cedd586816 363 * This event status used to block or continue the event propagation
dflet 0:50cedd586816 364 * through all the registered external libs/user application
dflet 0:50cedd586816 365 *
dflet 0:50cedd586816 366 */
dflet 0:50cedd586816 367
dflet 0:50cedd586816 368 typedef enum {
dflet 0:50cedd586816 369 EVENT_PROPAGATION_BLOCK = 0,
dflet 0:50cedd586816 370 EVENT_PROPAGATION_CONTINUE
dflet 0:50cedd586816 371
dflet 0:50cedd586816 372 } _SlEventPropogationStatus_e;
dflet 0:50cedd586816 373
dflet 0:50cedd586816 374 typedef void (*_SlSpawnEntryFunc_t)(void* pValue);
dflet 0:50cedd586816 375
dflet 0:50cedd586816 376 }//namespace mbed_cc3100
dflet 0:50cedd586816 377 /*****************************************************************************/
dflet 0:50cedd586816 378 /* Include files */
dflet 0:50cedd586816 379 /*****************************************************************************/
dflet 0:50cedd586816 380
dflet 0:50cedd586816 381 /*
dflet 0:50cedd586816 382 objInclusion.h and user.h must be included before all api header files
dflet 0:50cedd586816 383 objInclusion.h must be the last arrangement just before including the API header files
dflet 0:50cedd586816 384 since it based on the other configurations to decide which object should be included
dflet 0:50cedd586816 385 */
dflet 0:50cedd586816 386 #include "cc3100_objInclusion.h"
dflet 0:50cedd586816 387 #include "cc3100_trace.h"
dflet 0:50cedd586816 388 #include "cc3100_fs.h"
dflet 0:50cedd586816 389 #include "cc3100_socket.h"
dflet 0:50cedd586816 390 #include "cc3100_netapp.h"
dflet 0:50cedd586816 391 #include "cc3100_wlan.h"
dflet 0:50cedd586816 392 #include "cc3100.h"
dflet 0:50cedd586816 393 #include "cc3100_netcfg.h"
dflet 0:50cedd586816 394 #include "cc3100_wlan_rx_filters.h"
dflet 0:50cedd586816 395
dflet 0:50cedd586816 396 /* The general events dispatcher which is
dflet 0:50cedd586816 397 * initialized to the user handler */
dflet 0:50cedd586816 398 #ifdef sl_GeneralEvtHdlr
dflet 0:50cedd586816 399 #define _SlDrvHandleGeneralEvents sl_GeneralEvtHdlr
dflet 0:50cedd586816 400 #endif
dflet 0:50cedd586816 401
dflet 0:50cedd586816 402 /* The wlan events dispatcher which is
dflet 0:50cedd586816 403 * initialized to the user handler */
dflet 0:50cedd586816 404 #ifdef sl_WlanEvtHdlr
dflet 0:50cedd586816 405 #define _SlDrvHandleWlanEvents sl_WlanEvtHdlr
dflet 0:50cedd586816 406 #endif
dflet 0:50cedd586816 407
dflet 0:50cedd586816 408 /* The NetApp events dispatcher which is
dflet 0:50cedd586816 409 * initialized to the user handler */
dflet 0:50cedd586816 410 #ifdef sl_NetAppEvtHdlr
dflet 0:50cedd586816 411 #define _SlDrvHandleNetAppEvents sl_NetAppEvtHdlr
dflet 0:50cedd586816 412 #endif
dflet 0:50cedd586816 413
dflet 0:50cedd586816 414 /* The http server events dispatcher which is
dflet 0:50cedd586816 415 * initialized to the user handler if exists */
dflet 0:50cedd586816 416 #ifdef sl_HttpServerCallback
dflet 0:50cedd586816 417 #define _SlDrvHandleHttpServerEvents sl_HttpServerCallback
dflet 0:50cedd586816 418 #endif
dflet 0:50cedd586816 419
dflet 0:50cedd586816 420 /* The socket events dispatcher which is
dflet 0:50cedd586816 421 * initialized to the user handler */
dflet 0:50cedd586816 422 #ifdef sl_SockEvtHdlr
dflet 0:50cedd586816 423 #define _SlDrvHandleSockEvents sl_SockEvtHdlr
dflet 0:50cedd586816 424 #endif
dflet 0:50cedd586816 425
dflet 0:50cedd586816 426
dflet 0:50cedd586816 427
dflet 0:50cedd586816 428 #define __CONCAT(x,y) x ## y
dflet 0:50cedd586816 429 #define __CONCAT2(x,y) __CONCAT(x,y)
dflet 0:50cedd586816 430
dflet 0:50cedd586816 431
dflet 0:50cedd586816 432 /*
dflet 0:50cedd586816 433 * The section below handles the external lib event registration
dflet 0:50cedd586816 434 * according to the desired events it specified in its API header file.
dflet 0:50cedd586816 435 * The external lib should be first installed by the user (see user.h)
dflet 0:50cedd586816 436 */
dflet 0:50cedd586816 437 #ifdef SL_EXT_LIB_1
dflet 0:50cedd586816 438
dflet 0:50cedd586816 439 /* General Event Registration */
dflet 0:50cedd586816 440 #if __CONCAT2(SL_EXT_LIB_1, _NOTIFY_GENERAL_EVENT)
dflet 0:50cedd586816 441 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_1, _GeneralEventHdl) (SlDeviceEvent_t *);
dflet 0:50cedd586816 442 #define SlExtLib1GeneralEventHandler __CONCAT2(SL_EXT_LIB_1, _GeneralEventHdl)
dflet 0:50cedd586816 443
dflet 0:50cedd586816 444 #undef EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 445 #define EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 446 #endif
dflet 0:50cedd586816 447
dflet 0:50cedd586816 448 /* Wlan Event Registration */
dflet 0:50cedd586816 449 #if __CONCAT2(SL_EXT_LIB_1, _NOTIFY_WLAN_EVENT)
dflet 0:50cedd586816 450 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_1, _WlanEventHdl) (SlWlanEvent_t *);
dflet 0:50cedd586816 451 #define SlExtLib1WlanEventHandler __CONCAT2(SL_EXT_LIB_1, _WlanEventHdl)
dflet 0:50cedd586816 452
dflet 0:50cedd586816 453 #undef EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 454 #define EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 455 #endif
dflet 0:50cedd586816 456
dflet 0:50cedd586816 457 /* NetApp Event Registration */
dflet 0:50cedd586816 458 #if __CONCAT2(SL_EXT_LIB_1, _NOTIFY_NETAPP_EVENT)
dflet 0:50cedd586816 459 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_1, _NetAppEventHdl) (SlNetAppEvent_t *);
dflet 0:50cedd586816 460 #define SlExtLib1NetAppEventHandler __CONCAT2(SL_EXT_LIB_1, _NetAppEventHdl)
dflet 0:50cedd586816 461
dflet 0:50cedd586816 462 #undef EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 463 #define EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 464 #endif
dflet 0:50cedd586816 465
dflet 0:50cedd586816 466 /* Http Server Event Registration */
dflet 0:50cedd586816 467 #if __CONCAT2(SL_EXT_LIB_1, _NOTIFY_HTTP_SERVER_EVENT)
dflet 0:50cedd586816 468 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_1, _HttpServerEventHdl) (SlHttpServerEvent_t* , SlHttpServerResponse_t*);
dflet 0:50cedd586816 469 #define SlExtLib1HttpServerEventHandler __CONCAT2(SL_EXT_LIB_1, _HttpServerEventHdl)
dflet 0:50cedd586816 470
dflet 0:50cedd586816 471 #undef EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 472 #define EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 473 #endif
dflet 0:50cedd586816 474
dflet 0:50cedd586816 475 /* Socket Event Registration */
dflet 0:50cedd586816 476 #if __CONCAT2(SL_EXT_LIB_1, _NOTIFY_SOCK_EVENT)
dflet 0:50cedd586816 477 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_1, _SockEventHdl) (SlSockEvent_t *);
dflet 0:50cedd586816 478 #define SlExtLib1SockEventHandler __CONCAT2(SL_EXT_LIB_1, _SockEventHdl)
dflet 0:50cedd586816 479
dflet 0:50cedd586816 480 #undef EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 481 #define EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 482 #endif
dflet 0:50cedd586816 483
dflet 0:50cedd586816 484 #endif
dflet 0:50cedd586816 485
dflet 0:50cedd586816 486
dflet 0:50cedd586816 487 #ifdef SL_EXT_LIB_2
dflet 0:50cedd586816 488
dflet 0:50cedd586816 489 /* General Event Registration */
dflet 0:50cedd586816 490 #if __CONCAT2(SL_EXT_LIB_2, _NOTIFY_GENERAL_EVENT)
dflet 0:50cedd586816 491 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_2, _GeneralEventHdl) (SlDeviceEvent_t *);
dflet 0:50cedd586816 492 #define SlExtLib2GeneralEventHandler __CONCAT2(SL_EXT_LIB_2, _GeneralEventHdl)
dflet 0:50cedd586816 493
dflet 0:50cedd586816 494 #undef EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 495 #define EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 496 #endif
dflet 0:50cedd586816 497
dflet 0:50cedd586816 498 /* Wlan Event Registration */
dflet 0:50cedd586816 499 #if __CONCAT2(SL_EXT_LIB_2, _NOTIFY_WLAN_EVENT)
dflet 0:50cedd586816 500 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_2, _WlanEventHdl) (SlWlanEvent_t *);
dflet 0:50cedd586816 501 #define SlExtLib2WlanEventHandler __CONCAT2(SL_EXT_LIB_2, _WlanEventHdl)
dflet 0:50cedd586816 502
dflet 0:50cedd586816 503 #undef EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 504 #define EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 505 #endif
dflet 0:50cedd586816 506
dflet 0:50cedd586816 507 /* NetApp Event Registration */
dflet 0:50cedd586816 508 #if __CONCAT2(SL_EXT_LIB_2, _NOTIFY_NETAPP_EVENT)
dflet 0:50cedd586816 509 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_2, _NetAppEventHdl) (SlNetAppEvent_t *);
dflet 0:50cedd586816 510 #define SlExtLib2NetAppEventHandler __CONCAT2(SL_EXT_LIB_2, _NetAppEventHdl)
dflet 0:50cedd586816 511
dflet 0:50cedd586816 512 #undef EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 513 #define EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 514 #endif
dflet 0:50cedd586816 515
dflet 0:50cedd586816 516 /* Http Server Event Registration */
dflet 0:50cedd586816 517 #if __CONCAT2(SL_EXT_LIB_2, _NOTIFY_HTTP_SERVER_EVENT)
dflet 0:50cedd586816 518 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_2, _HttpServerEventHdl) (SlHttpServerEvent_t* , SlHttpServerResponse_t*);
dflet 0:50cedd586816 519 #define SlExtLib2HttpServerEventHandler __CONCAT2(SL_EXT_LIB_2, _HttpServerEventHdl)
dflet 0:50cedd586816 520
dflet 0:50cedd586816 521 #undef EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 522 #define EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 523 #endif
dflet 0:50cedd586816 524
dflet 0:50cedd586816 525 /* Socket Event Registration */
dflet 0:50cedd586816 526 #if __CONCAT2(SL_EXT_LIB_2, _NOTIFY_SOCK_EVENT)
dflet 0:50cedd586816 527 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_2, _SockEventHdl) (SlSockEvent_t *);
dflet 0:50cedd586816 528 #define SlExtLib2SockEventHandler __CONCAT2(SL_EXT_LIB_2, _SockEventHdl)
dflet 0:50cedd586816 529
dflet 0:50cedd586816 530 #undef EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 531 #define EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 532 #endif
dflet 0:50cedd586816 533
dflet 0:50cedd586816 534 #endif
dflet 0:50cedd586816 535
dflet 0:50cedd586816 536
dflet 0:50cedd586816 537 #ifdef SL_EXT_LIB_3
dflet 0:50cedd586816 538
dflet 0:50cedd586816 539 /* General Event Registration */
dflet 0:50cedd586816 540 #if __CONCAT2(SL_EXT_LIB_3, _NOTIFY_GENERAL_EVENT)
dflet 0:50cedd586816 541 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_3, _GeneralEventHdl) (SlDeviceEvent_t *);
dflet 0:50cedd586816 542 #define SlExtLib3GeneralEventHandler __CONCAT2(SL_EXT_LIB_3, _GeneralEventHdl)
dflet 0:50cedd586816 543
dflet 0:50cedd586816 544 #undef EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 545 #define EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 546 #endif
dflet 0:50cedd586816 547
dflet 0:50cedd586816 548 /* Wlan Event Registration */
dflet 0:50cedd586816 549 #if __CONCAT2(SL_EXT_LIB_3, _NOTIFY_WLAN_EVENT)
dflet 0:50cedd586816 550 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_3, _WlanEventHdl) (SlWlanEvent_t *);
dflet 0:50cedd586816 551 #define SlExtLib3WlanEventHandler __CONCAT2(SL_EXT_LIB_3, _WlanEventHdl)
dflet 0:50cedd586816 552
dflet 0:50cedd586816 553 #undef EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 554 #define EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 555 #endif
dflet 0:50cedd586816 556
dflet 0:50cedd586816 557 /* NetApp Event Registration */
dflet 0:50cedd586816 558 #if __CONCAT2(SL_EXT_LIB_3, _NOTIFY_NETAPP_EVENT)
dflet 0:50cedd586816 559 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_3, _NetAppEventHdl) (SlNetAppEvent_t *);
dflet 0:50cedd586816 560 #define SlExtLib3NetAppEventHandler __CONCAT2(SL_EXT_LIB_3, _NetAppEventHdl)
dflet 0:50cedd586816 561
dflet 0:50cedd586816 562 #undef EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 563 #define EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 564 #endif
dflet 0:50cedd586816 565
dflet 0:50cedd586816 566 /* Http Server Event Registration */
dflet 0:50cedd586816 567 #if __CONCAT2(SL_EXT_LIB_3, _NOTIFY_HTTP_SERVER_EVENT)
dflet 0:50cedd586816 568 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_3, _HttpServerEventHdl) (SlHttpServerEvent_t* , SlHttpServerResponse_t*);
dflet 0:50cedd586816 569 #define SlExtLib3HttpServerEventHandler __CONCAT2(SL_EXT_LIB_3, _HttpServerEventHdl)
dflet 0:50cedd586816 570
dflet 0:50cedd586816 571 #undef EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 572 #define EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 573 #endif
dflet 0:50cedd586816 574
dflet 0:50cedd586816 575 /* Socket Event Registration */
dflet 0:50cedd586816 576 #if __CONCAT2(SL_EXT_LIB_3, _NOTIFY_SOCK_EVENT)
dflet 0:50cedd586816 577 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_3, _SockEventHdl) (SlSockEvent_t *);
dflet 0:50cedd586816 578 #define SlExtLib3SockEventHandler __CONCAT2(SL_EXT_LIB_3, _SockEventHdl)
dflet 0:50cedd586816 579
dflet 0:50cedd586816 580 #undef EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 581 #define EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 582 #endif
dflet 0:50cedd586816 583
dflet 0:50cedd586816 584 #endif
dflet 0:50cedd586816 585
dflet 0:50cedd586816 586
dflet 0:50cedd586816 587 #ifdef SL_EXT_LIB_4
dflet 0:50cedd586816 588
dflet 0:50cedd586816 589 /* General Event Registration */
dflet 0:50cedd586816 590 #if __CONCAT2(SL_EXT_LIB_4, _NOTIFY_GENERAL_EVENT)
dflet 0:50cedd586816 591 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_4, _GeneralEventHdl) (SlDeviceEvent_t *);
dflet 0:50cedd586816 592 #define SlExtLib4GeneralEventHandler __CONCAT2(SL_EXT_LIB_4, _GeneralEventHdl)
dflet 0:50cedd586816 593
dflet 0:50cedd586816 594 #undef EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 595 #define EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 596 #endif
dflet 0:50cedd586816 597
dflet 0:50cedd586816 598 /* Wlan Event Registration */
dflet 0:50cedd586816 599 #if __CONCAT2(SL_EXT_LIB_4, _NOTIFY_WLAN_EVENT)
dflet 0:50cedd586816 600 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_4, _WlanEventHdl) (SlWlanEvent_t *);
dflet 0:50cedd586816 601 #define SlExtLib4WlanEventHandler __CONCAT2(SL_EXT_LIB_4, _WlanEventHdl)
dflet 0:50cedd586816 602
dflet 0:50cedd586816 603 #undef EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 604 #define EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 605 #endif
dflet 0:50cedd586816 606
dflet 0:50cedd586816 607 /* NetApp Event Registration */
dflet 0:50cedd586816 608 #if __CONCAT2(SL_EXT_LIB_4, _NOTIFY_NETAPP_EVENT)
dflet 0:50cedd586816 609 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_4, _NetAppEventHdl) (SlNetAppEvent_t *);
dflet 0:50cedd586816 610 #define SlExtLib4NetAppEventHandler __CONCAT2(SL_EXT_LIB_4, _NetAppEventHdl)
dflet 0:50cedd586816 611
dflet 0:50cedd586816 612 #undef EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 613 #define EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 614 #endif
dflet 0:50cedd586816 615
dflet 0:50cedd586816 616 /* Http Server Event Registration */
dflet 0:50cedd586816 617 #if __CONCAT2(SL_EXT_LIB_4, _NOTIFY_HTTP_SERVER_EVENT)
dflet 0:50cedd586816 618 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_4, _HttpServerEventHdl) (SlHttpServerEvent_t* , SlHttpServerResponse_t*);
dflet 0:50cedd586816 619 #define SlExtLib4HttpServerEventHandler __CONCAT2(SL_EXT_LIB_4, _HttpServerEventHdl)
dflet 0:50cedd586816 620
dflet 0:50cedd586816 621 #undef EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 622 #define EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 623 #endif
dflet 0:50cedd586816 624
dflet 0:50cedd586816 625 /* Socket Event Registration */
dflet 0:50cedd586816 626 #if __CONCAT2(SL_EXT_LIB_4, _NOTIFY_SOCK_EVENT)
dflet 0:50cedd586816 627 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_4, _SockEventHdl) (SlSockEvent_t *);
dflet 0:50cedd586816 628 #define SlExtLib4SockEventHandler __CONCAT2(SL_EXT_LIB_4, _SockEventHdl)
dflet 0:50cedd586816 629
dflet 0:50cedd586816 630 #undef EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 631 #define EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 632 #endif
dflet 0:50cedd586816 633
dflet 0:50cedd586816 634 #endif
dflet 0:50cedd586816 635
dflet 0:50cedd586816 636
dflet 0:50cedd586816 637 #ifdef SL_EXT_LIB_5
dflet 0:50cedd586816 638
dflet 0:50cedd586816 639 /* General Event Registration */
dflet 0:50cedd586816 640 #if __CONCAT2(SL_EXT_LIB_5, _NOTIFY_GENERAL_EVENT)
dflet 0:50cedd586816 641 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_5, _GeneralEventHdl) (SlDeviceEvent_t *);
dflet 0:50cedd586816 642 #define SlExtLib5GeneralEventHandler __CONCAT2(SL_EXT_LIB_5, _GeneralEventHdl)
dflet 0:50cedd586816 643
dflet 0:50cedd586816 644 #undef EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 645 #define EXT_LIB_REGISTERED_GENERAL_EVENTS
dflet 0:50cedd586816 646 #endif
dflet 0:50cedd586816 647
dflet 0:50cedd586816 648 /* Wlan Event Registration */
dflet 0:50cedd586816 649 #if __CONCAT2(SL_EXT_LIB_5, _NOTIFY_WLAN_EVENT)
dflet 0:50cedd586816 650 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_5, _WlanEventHdl) (SlWlanEvent_t *);
dflet 0:50cedd586816 651 #define SlExtLib5WlanEventHandler __CONCAT2(SL_EXT_LIB_5, _WlanEventHdl)
dflet 0:50cedd586816 652
dflet 0:50cedd586816 653 #undef EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 654 #define EXT_LIB_REGISTERED_WLAN_EVENTS
dflet 0:50cedd586816 655 #endif
dflet 0:50cedd586816 656
dflet 0:50cedd586816 657 /* NetApp Event Registration */
dflet 0:50cedd586816 658 #if __CONCAT2(SL_EXT_LIB_5, _NOTIFY_NETAPP_EVENT)
dflet 0:50cedd586816 659 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_5, _NetAppEventHdl) (SlNetAppEvent_t *);
dflet 0:50cedd586816 660 #define SlExtLib5NetAppEventHandler __CONCAT2(SL_EXT_LIB_5, _NetAppEventHdl)
dflet 0:50cedd586816 661
dflet 0:50cedd586816 662 #undef EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 663 #define EXT_LIB_REGISTERED_NETAPP_EVENTS
dflet 0:50cedd586816 664 #endif
dflet 0:50cedd586816 665
dflet 0:50cedd586816 666 /* Http Server Event Registration */
dflet 0:50cedd586816 667 #if __CONCAT2(SL_EXT_LIB_5, _NOTIFY_HTTP_SERVER_EVENT)
dflet 0:50cedd586816 668 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_5, _HttpServerEventHdl) (SlHttpServerEvent_t* , SlHttpServerResponse_t*);
dflet 0:50cedd586816 669 #define SlExtLib5HttpServerEventHandler __CONCAT2(SL_EXT_LIB_5, _HttpServerEventHdl)
dflet 0:50cedd586816 670
dflet 0:50cedd586816 671 #undef EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 672 #define EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS
dflet 0:50cedd586816 673 #endif
dflet 0:50cedd586816 674
dflet 0:50cedd586816 675 /* Socket Event Registration */
dflet 0:50cedd586816 676 #if __CONCAT2(SL_EXT_LIB_5, _NOTIFY_SOCK_EVENT)
dflet 0:50cedd586816 677 extern _SlEventPropogationStatus_e __CONCAT2(SL_EXT_LIB_5, _SockEventHdl) (SlSockEvent_t *);
dflet 0:50cedd586816 678 #define SlExtLib5SockEventHandler __CONCAT2(SL_EXT_LIB_5, _SockEventHdl)
dflet 0:50cedd586816 679
dflet 0:50cedd586816 680 #undef EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 681 #define EXT_LIB_REGISTERED_SOCK_EVENTS
dflet 0:50cedd586816 682 #endif
dflet 0:50cedd586816 683
dflet 0:50cedd586816 684 #endif
dflet 0:50cedd586816 685
dflet 0:50cedd586816 686
dflet 0:50cedd586816 687
dflet 0:50cedd586816 688 #if defined(EXT_LIB_REGISTERED_GENERAL_EVENTS)
dflet 0:50cedd586816 689 void _SlDrvHandleGeneralEvents(SlDeviceEvent_t *slGeneralEvent);
dflet 0:50cedd586816 690 #endif
dflet 0:50cedd586816 691
dflet 0:50cedd586816 692 #if defined(EXT_LIB_REGISTERED_WLAN_EVENTS)
dflet 0:50cedd586816 693 void _SlDrvHandleWlanEvents(SlWlanEvent_t *slWlanEvent);
dflet 0:50cedd586816 694 #endif
dflet 0:50cedd586816 695
dflet 0:50cedd586816 696 #if defined (EXT_LIB_REGISTERED_NETAPP_EVENTS)
dflet 0:50cedd586816 697 void _SlDrvHandleNetAppEvents(SlNetAppEvent_t *slNetAppEvent);
dflet 0:50cedd586816 698 #endif
dflet 0:50cedd586816 699
dflet 0:50cedd586816 700 #if defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS)
dflet 0:50cedd586816 701 void _SlDrvHandleHttpServerEvents(SlHttpServerEvent_t *slHttpServerEvent, SlHttpServerResponse_t *slHttpServerResponse);
dflet 0:50cedd586816 702 #endif
dflet 0:50cedd586816 703
dflet 0:50cedd586816 704
dflet 0:50cedd586816 705 #if defined(EXT_LIB_REGISTERED_SOCK_EVENTS)
dflet 0:50cedd586816 706 void _SlDrvHandleSockEvents(SlSockEvent_t *slSockEvent);
dflet 0:50cedd586816 707 #endif
dflet 0:50cedd586816 708
dflet 0:50cedd586816 709 #ifdef SL_PLATFORM_MULTI_THREADED
dflet 0:50cedd586816 710 #include "cc3100_spawn.h"
dflet 0:50cedd586816 711 #include "osi.h"
dflet 0:50cedd586816 712 #else
dflet 0:50cedd586816 713 #include "cc3100_nonos.h"
dflet 0:50cedd586816 714 #endif
dflet 0:50cedd586816 715
dflet 0:50cedd586816 716 namespace mbed_cc3100 {
dflet 0:50cedd586816 717
dflet 0:50cedd586816 718 /* Async functions description*/
dflet 0:50cedd586816 719
dflet 0:50cedd586816 720 /*!
dflet 0:50cedd586816 721 \brief General async event for inspecting general events
dflet 0:50cedd586816 722
dflet 0:50cedd586816 723 \param[out] pSlDeviceEvent pointer to SlDeviceEvent_t
dflet 0:50cedd586816 724
dflet 0:50cedd586816 725 \par- <b>pSlDeviceEvent->Event = SL_DEVICE_FATAL_ERROR_EVENT </b>
dflet 0:50cedd586816 726 - pSlDeviceEvent->EventData.deviceEvent fields:
dflet 0:50cedd586816 727 - status: An error code indication from the device
dflet 0:50cedd586816 728 - sender: The sender originator which is based on SlErrorSender_e enum
dflet 0:50cedd586816 729
dflet 0:50cedd586816 730 - <b>pSlDeviceEvent->Event = SL_DEVICE_ABORT_ERROR_EVENT </b>
dflet 0:50cedd586816 731 Indicates a severe error occured and the device stopped
dflet 0:50cedd586816 732 - pSlDeviceEvent->EventData.deviceReport fields:
dflet 0:50cedd586816 733 - AbortType: An idication of the event type
dflet 0:50cedd586816 734 - AbortData: Additional info about the data error
dflet 0:50cedd586816 735
dflet 0:50cedd586816 736
dflet 0:50cedd586816 737 \par Example for fatal error:
dflet 0:50cedd586816 738 \code
dflet 0:50cedd586816 739 printf(General Event Handler - ID=%d Sender=%d\n\n",
dflet 0:50cedd586816 740 pSlDeviceEvent->EventData.deviceEvent.status, // status of the general event
dflet 0:50cedd586816 741 pSlDeviceEvent->EventData.deviceEvent.sender); // sender type
dflet 0:50cedd586816 742 \endcode
dflet 0:50cedd586816 743 \par Example for abort request:
dflet 0:50cedd586816 744 \code
dflet 0:50cedd586816 745 printf(Abort type =%d Abort Data=%d\n\n",
dflet 0:50cedd586816 746 pSlDeviceEvent->EventData.deviceReport.AbortType,
dflet 0:50cedd586816 747 pSlDeviceEvent->EventData.deviceReport.AbortData);
dflet 0:50cedd586816 748
dflet 0:50cedd586816 749 \endcode
dflet 0:50cedd586816 750 */
dflet 0:50cedd586816 751 //#if (defined(sl_GeneralEvtHdlr))
dflet 0:50cedd586816 752 //void sl_GeneralEvtHdlr(SlDeviceEvent_t *pSlDeviceEvent);
dflet 0:50cedd586816 753 //#endif
dflet 0:50cedd586816 754
dflet 0:50cedd586816 755
dflet 0:50cedd586816 756 /*!
dflet 0:50cedd586816 757 \brief WLAN Async event handler
dflet 0:50cedd586816 758
dflet 0:50cedd586816 759 \param[out] pSlWlanEvent pointer to SlWlanEvent_t data
dflet 0:50cedd586816 760
dflet 0:50cedd586816 761 \par
dflet 0:50cedd586816 762 Parameters:
dflet 0:50cedd586816 763
dflet 0:50cedd586816 764 - <b>pSlWlanEvent->Event = SL_WLAN_CONNECT_EVENT </b>, STA or P2P client connection indication event
dflet 0:50cedd586816 765 - pSlWlanEvent->EventData.STAandP2PModeWlanConnected main fields:
dflet 0:50cedd586816 766 - ssid_name
dflet 0:50cedd586816 767 - ssid_len
dflet 0:50cedd586816 768 - bssid
dflet 0:50cedd586816 769 - go_peer_device_name
dflet 0:50cedd586816 770 - go_peer_device_name_len
dflet 0:50cedd586816 771
dflet 0:50cedd586816 772 - <b>pSlWlanEvent->Event = SL_WLAN_DISCONNECT_EVENT </b>, STA or P2P client disconnection event
dflet 0:50cedd586816 773 - pSlWlanEvent->EventData.STAandP2PModeDisconnected main fields:
dflet 0:50cedd586816 774 - ssid_name
dflet 0:50cedd586816 775 - ssid_len
dflet 0:50cedd586816 776 - reason_code
dflet 0:50cedd586816 777
dflet 0:50cedd586816 778 - <b>pSlWlanEvent->Event = SL_WLAN_STA_CONNECTED_EVENT </b>, AP/P2P(Go) connected STA/P2P(Client)
dflet 0:50cedd586816 779 - pSlWlanEvent->EventData.APModeStaConnected fields:
dflet 0:50cedd586816 780 - go_peer_device_name
dflet 0:50cedd586816 781 - mac
dflet 0:50cedd586816 782 - go_peer_device_name_len
dflet 0:50cedd586816 783 - wps_dev_password_id
dflet 0:50cedd586816 784 - own_ssid: relevant for event sta-connected only
dflet 0:50cedd586816 785 - own_ssid_len: relevant for event sta-connected only
dflet 0:50cedd586816 786
dflet 0:50cedd586816 787 - <b>pSlWlanEvent->Event = SL_WLAN_STA_DISCONNECTED_EVENT </b>, AP/P2P(Go) disconnected STA/P2P(Client)
dflet 0:50cedd586816 788 - pSlWlanEvent->EventData.APModestaDisconnected fields:
dflet 0:50cedd586816 789 - go_peer_device_name
dflet 0:50cedd586816 790 - mac
dflet 0:50cedd586816 791 - go_peer_device_name_len
dflet 0:50cedd586816 792 - wps_dev_password_id
dflet 0:50cedd586816 793 - own_ssid: relevant for event sta-connected only
dflet 0:50cedd586816 794 - own_ssid_len: relevant for event sta-connected only
dflet 0:50cedd586816 795
dflet 0:50cedd586816 796 - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_COMPLETE_EVENT </b>
dflet 0:50cedd586816 797 - pSlWlanEvent->EventData.smartConfigStartResponse fields:
dflet 0:50cedd586816 798 - status
dflet 0:50cedd586816 799 - ssid_len
dflet 0:50cedd586816 800 - ssid
dflet 0:50cedd586816 801 - private_token_len
dflet 0:50cedd586816 802 - private_token
dflet 0:50cedd586816 803
dflet 0:50cedd586816 804 - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_STOP_EVENT </b>
dflet 0:50cedd586816 805 - pSlWlanEvent->EventData.smartConfigStopResponse fields:
dflet 0:50cedd586816 806 - status
dflet 0:50cedd586816 807
dflet 0:50cedd586816 808 - <b>pSlWlanEvent->Event = SL_WLAN_P2P_DEV_FOUND_EVENT </b>
dflet 0:50cedd586816 809 - pSlWlanEvent->EventData.P2PModeDevFound fields:
dflet 0:50cedd586816 810 - go_peer_device_name
dflet 0:50cedd586816 811 - mac
dflet 0:50cedd586816 812 - go_peer_device_name_len
dflet 0:50cedd586816 813 - wps_dev_password_id
dflet 0:50cedd586816 814 - own_ssid: relevant for event sta-connected only
dflet 0:50cedd586816 815 - own_ssid_len: relevant for event sta-connected only
dflet 0:50cedd586816 816
dflet 0:50cedd586816 817 - <b>pSlWlanEvent->Event = SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT </b>
dflet 0:50cedd586816 818 - pSlWlanEvent->EventData.P2PModeNegReqReceived fields
dflet 0:50cedd586816 819 - go_peer_device_name
dflet 0:50cedd586816 820 - mac
dflet 0:50cedd586816 821 - go_peer_device_name_len
dflet 0:50cedd586816 822 - wps_dev_password_id
dflet 0:50cedd586816 823 - own_ssid: relevant for event sta-connected only
dflet 0:50cedd586816 824
dflet 0:50cedd586816 825 - <b>pSlWlanEvent->Event = SL_WLAN_CONNECTION_FAILED_EVENT </b>, P2P only
dflet 0:50cedd586816 826 - pSlWlanEvent->EventData.P2PModewlanConnectionFailure fields:
dflet 0:50cedd586816 827 - status
dflet 0:50cedd586816 828 */
dflet 0:50cedd586816 829 //#if (defined(sl_WlanEvtHdlr))
dflet 0:50cedd586816 830 //void sl_WlanEvtHdlr(SlWlanEvent_t *pSlWlanEvent);
dflet 0:50cedd586816 831 //#endif
dflet 0:50cedd586816 832
dflet 0:50cedd586816 833
dflet 0:50cedd586816 834 /*!
dflet 0:50cedd586816 835 \brief NETAPP Async event handler
dflet 0:50cedd586816 836
dflet 0:50cedd586816 837 \param[out] pSlNetApp pointer to SlNetAppEvent_t data
dflet 0:50cedd586816 838
dflet 0:50cedd586816 839 \par
dflet 0:50cedd586816 840 Parameters:
dflet 0:50cedd586816 841 - <b>pSlNetApp->Event = SL_NETAPP_IPV4_IPACQUIRED_EVENT</b>, IPV4 acquired event
dflet 0:50cedd586816 842 - pSlNetApp->EventData.ipAcquiredV4 fields:
dflet 0:50cedd586816 843 - ip
dflet 0:50cedd586816 844 - gateway
dflet 0:50cedd586816 845 - dns
dflet 0:50cedd586816 846
dflet 0:50cedd586816 847 - <b>pSlNetApp->Event = SL_NETAPP_IP_LEASED_EVENT</b>, AP or P2P go dhcp lease event
dflet 0:50cedd586816 848 - pSlNetApp->EventData.ipLeased fields:
dflet 0:50cedd586816 849 - ip_address
dflet 0:50cedd586816 850 - lease_time
dflet 0:50cedd586816 851 - mac
dflet 0:50cedd586816 852
dflet 0:50cedd586816 853 - <b>pSlNetApp->Event = SL_NETAPP_IP_RELEASED_EVENT</b>, AP or P2P go dhcp ip release event
dflet 0:50cedd586816 854 - pSlNetApp->EventData.ipReleased fields
dflet 0:50cedd586816 855 - ip_address
dflet 0:50cedd586816 856 - mac
dflet 0:50cedd586816 857 - reason
dflet 0:50cedd586816 858
dflet 0:50cedd586816 859 */
dflet 0:50cedd586816 860 //#if (defined(sl_NetAppEvtHdlr))
dflet 0:50cedd586816 861 //void sl_NetAppEvtHdlr(SlNetAppEvent_t *pSlNetApp);
dflet 0:50cedd586816 862 //#endif
dflet 0:50cedd586816 863
dflet 0:50cedd586816 864 /*!
dflet 0:50cedd586816 865 \brief Socket Async event handler
dflet 0:50cedd586816 866
dflet 0:50cedd586816 867 \param[out] pSlSockEvent pointer to SlSockEvent_t data
dflet 0:50cedd586816 868
dflet 0:50cedd586816 869 \par
dflet 0:50cedd586816 870 Parameters:\n
dflet 0:50cedd586816 871 - <b>pSlSockEvent->Event = SL_SOCKET_TX_FAILED_EVENT</b>
dflet 0:50cedd586816 872 - pSlSockEvent->SockTxFailData fields:
dflet 0:50cedd586816 873 - sd
dflet 0:50cedd586816 874 - status
dflet 0:50cedd586816 875 - <b>pSlSockEvent->Event = SL_SOCKET_ASYNC_EVENT</b>
dflet 0:50cedd586816 876 - pSlSockEvent->SockAsyncData fields:
dflet 0:50cedd586816 877 - sd
dflet 0:50cedd586816 878 - type: SSL_ACCEPT or RX_FRAGMENTATION_TOO_BIG or OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED
dflet 0:50cedd586816 879 - val
dflet 0:50cedd586816 880
dflet 0:50cedd586816 881 */
dflet 0:50cedd586816 882 //#if (defined(sl_SockEvtHdlr))
dflet 0:50cedd586816 883 //void sl_SockEvtHdlr(SlSockEvent_t *pSlSockEvent);
dflet 0:50cedd586816 884 //#endif
dflet 0:50cedd586816 885
dflet 0:50cedd586816 886 /*!
dflet 0:50cedd586816 887 \brief HTTP server async event
dflet 0:50cedd586816 888
dflet 0:50cedd586816 889 \param[out] pSlHttpServerEvent pointer to SlHttpServerEvent_t
dflet 0:50cedd586816 890 \param[in] pSlHttpServerResponse pointer to SlHttpServerResponse_t
dflet 0:50cedd586816 891
dflet 0:50cedd586816 892 \par
dflet 0:50cedd586816 893 Parameters: \n
dflet 0:50cedd586816 894
dflet 0:50cedd586816 895 - <b>pSlHttpServerEvent->Event = SL_NETAPP_HTTPGETTOKENVALUE_EVENT</b>
dflet 0:50cedd586816 896 - pSlHttpServerEvent->EventData fields:
dflet 0:50cedd586816 897 - httpTokenName
dflet 0:50cedd586816 898 - data
dflet 0:50cedd586816 899 - len
dflet 0:50cedd586816 900 - pSlHttpServerResponse->ResponseData fields:
dflet 0:50cedd586816 901 - data
dflet 0:50cedd586816 902 - len
dflet 0:50cedd586816 903
dflet 0:50cedd586816 904 - <b>pSlHttpServerEvent->Event = SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT</b>
dflet 0:50cedd586816 905 - pSlHttpServerEvent->EventData.httpPostData fields:
dflet 0:50cedd586816 906 - action
dflet 0:50cedd586816 907 - token_name
dflet 0:50cedd586816 908 - token_value
dflet 0:50cedd586816 909 - pSlHttpServerResponse->ResponseData fields:
dflet 0:50cedd586816 910 - data
dflet 0:50cedd586816 911 - len
dflet 0:50cedd586816 912
dflet 0:50cedd586816 913 */
dflet 0:50cedd586816 914 //#if (defined(sl_HttpServerCallback))
dflet 0:50cedd586816 915 //void sl_HttpServerCallback(SlHttpServerEvent_t *pSlHttpServerEvent, SlHttpServerResponse_t *pSlHttpServerResponse);
dflet 0:50cedd586816 916 //#endif
dflet 0:50cedd586816 917 /*!
dflet 0:50cedd586816 918
dflet 0:50cedd586816 919 Close the Doxygen group.
dflet 0:50cedd586816 920 @}
dflet 0:50cedd586816 921
dflet 0:50cedd586816 922 */
dflet 0:50cedd586816 923
dflet 0:50cedd586816 924 }//namespace mbed_cc3100
dflet 0:50cedd586816 925
dflet 0:50cedd586816 926 #endif /* __SIMPLELINK_H__ */
dflet 0:50cedd586816 927
dflet 0:50cedd586816 928