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 * user.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
dflet 0:400d8e75a8d0 38 #ifndef USER_H_
dflet 0:400d8e75a8d0 39 #define USER_H_
dflet 0:400d8e75a8d0 40
dflet 0:400d8e75a8d0 41 /*!
dflet 0:400d8e75a8d0 42
dflet 0:400d8e75a8d0 43 \addtogroup Porting
dflet 0:400d8e75a8d0 44 @{
dflet 0:400d8e75a8d0 45
dflet 0:400d8e75a8d0 46 */
dflet 0:400d8e75a8d0 47
dflet 0:400d8e75a8d0 48 /*!
dflet 0:400d8e75a8d0 49 ******************************************************************************
dflet 0:400d8e75a8d0 50
dflet 0:400d8e75a8d0 51 \defgroup porting_user_include User Include Files
dflet 0:400d8e75a8d0 52
dflet 0:400d8e75a8d0 53 This section IS NOT REQUIRED in case user provided primitives are handled
dflet 0:400d8e75a8d0 54 in makefiles or project configurations (IDE)
dflet 0:400d8e75a8d0 55
dflet 0:400d8e75a8d0 56 PORTING ACTION:
dflet 0:400d8e75a8d0 57 - Include all required header files for the definition of:
dflet 0:400d8e75a8d0 58 -# Transport layer library API (e.g. SPI, UART)
dflet 0:400d8e75a8d0 59 -# OS primitives definitions (e.g. Task spawn, Semaphores)
dflet 0:400d8e75a8d0 60 -# Memory management primitives (e.g. alloc, free)
dflet 0:400d8e75a8d0 61
dflet 0:400d8e75a8d0 62 ******************************************************************************
dflet 0:400d8e75a8d0 63 */
dflet 0:400d8e75a8d0 64
dflet 0:400d8e75a8d0 65 #include <string.h>
dflet 0:400d8e75a8d0 66
dflet 0:400d8e75a8d0 67 #ifndef SL_IF_TYPE_UART
dflet 0:400d8e75a8d0 68 #include "cc3100_spi.h"
dflet 0:400d8e75a8d0 69 #else
dflet 0:400d8e75a8d0 70 #include "uart.h"
dflet 0:400d8e75a8d0 71 #endif
dflet 0:400d8e75a8d0 72
dflet 0:400d8e75a8d0 73
dflet 0:400d8e75a8d0 74 /*!
dflet 0:400d8e75a8d0 75 ******************************************************************************
dflet 0:400d8e75a8d0 76
dflet 0:400d8e75a8d0 77 \defgroup porting_capabilities Capability Set Definition
dflet 0:400d8e75a8d0 78
dflet 0:400d8e75a8d0 79 This section IS NOT REQUIRED in case one of the following pre defined
dflet 0:400d8e75a8d0 80 capabilities set is in use:
dflet 0:400d8e75a8d0 81 - SL_TINY
dflet 0:400d8e75a8d0 82 - SL_SMALL
dflet 0:400d8e75a8d0 83 - SL_FULL
dflet 0:400d8e75a8d0 84
dflet 0:400d8e75a8d0 85 PORTING ACTION:
dflet 0:400d8e75a8d0 86 - Define one of the pre-defined capabilities set or uncomment the
dflet 0:400d8e75a8d0 87 relevant definitions below to select the required capabilities
dflet 0:400d8e75a8d0 88 in order to "install" external SimpleLink library one should follow the next steps:
dflet 0:400d8e75a8d0 89 1. Include the external library API header file (i.e. #include "IOT.h")
dflet 0:400d8e75a8d0 90 2. Define each one of the desired external lib with one (out of 5) of the following:
dflet 0:400d8e75a8d0 91 #define SL_EXT_LIB_1 <Your external lib name>
dflet 0:400d8e75a8d0 92 #define SL_EXT_LIB_2 <Your external lib name>
dflet 0:400d8e75a8d0 93 #define SL_EXT_LIB_3 <Your external lib name>
dflet 0:400d8e75a8d0 94 #define SL_EXT_LIB_4 <Your external lib name>
dflet 0:400d8e75a8d0 95 #define SL_EXT_LIB_5 <Your external lib name>
dflet 0:400d8e75a8d0 96 @{
dflet 0:400d8e75a8d0 97 *******************************************************************************
dflet 0:400d8e75a8d0 98 */
dflet 0:400d8e75a8d0 99
dflet 0:400d8e75a8d0 100 #define SL_FULL
dflet 0:400d8e75a8d0 101
dflet 0:400d8e75a8d0 102 /*!
dflet 0:400d8e75a8d0 103 \def MAX_CONCURRENT_ACTIONS
dflet 0:400d8e75a8d0 104
dflet 0:400d8e75a8d0 105 \brief Defines the maximum number of concurrent action in the system
dflet 0:400d8e75a8d0 106 Min:1 , Max: 32
dflet 0:400d8e75a8d0 107
dflet 0:400d8e75a8d0 108 Actions which has async events as return, can be
dflet 0:400d8e75a8d0 109
dflet 0:400d8e75a8d0 110 \sa
dflet 0:400d8e75a8d0 111
dflet 0:400d8e75a8d0 112 \note In case there are not enough resources for the actions needed in the system,
dflet 0:400d8e75a8d0 113 error is received: POOL_IS_EMPTY
dflet 0:400d8e75a8d0 114 one option is to increase MAX_CONCURRENT_ACTIONS
dflet 0:400d8e75a8d0 115 (improves performance but results in memory consumption)
dflet 0:400d8e75a8d0 116 Other option is to call the API later (decrease performance)
dflet 0:400d8e75a8d0 117
dflet 0:400d8e75a8d0 118 \warning In case of setting to one, recommend to use non-blocking recv\recvfrom to allow
dflet 0:400d8e75a8d0 119 multiple socket recv
dflet 0:400d8e75a8d0 120 */
dflet 0:400d8e75a8d0 121 #ifndef SL_TINY_EXT
dflet 0:400d8e75a8d0 122 #define MAX_CONCURRENT_ACTIONS 20
dflet 0:400d8e75a8d0 123 #else
dflet 0:400d8e75a8d0 124 #define MAX_CONCURRENT_ACTIONS 1
dflet 0:400d8e75a8d0 125 #endif
dflet 0:400d8e75a8d0 126
dflet 0:400d8e75a8d0 127 /*!
dflet 0:400d8e75a8d0 128 \def CPU_FREQ_IN_MHZ
dflet 0:400d8e75a8d0 129 \brief Defines CPU frequency for Host side, for better accuracy of busy loops, if any
dflet 0:400d8e75a8d0 130 \sa
dflet 0:400d8e75a8d0 131 \note
dflet 0:400d8e75a8d0 132
dflet 0:400d8e75a8d0 133 \warning If not set the default CPU frequency is set to 200MHz
dflet 0:400d8e75a8d0 134 This option will be deprecated in future release
dflet 0:400d8e75a8d0 135 */
dflet 0:400d8e75a8d0 136 /*
dflet 0:400d8e75a8d0 137 #define CPU_FREQ_IN_MHZ 25
dflet 0:400d8e75a8d0 138 */
dflet 0:400d8e75a8d0 139
dflet 0:400d8e75a8d0 140
dflet 0:400d8e75a8d0 141 /*!
dflet 0:400d8e75a8d0 142 \def SL_INC_ARG_CHECK
dflet 0:400d8e75a8d0 143
dflet 0:400d8e75a8d0 144 \brief Defines whether the SimpleLink driver perform argument check
dflet 0:400d8e75a8d0 145 or not
dflet 0:400d8e75a8d0 146
dflet 0:400d8e75a8d0 147 When defined, the SimpleLink driver perform argument check on
dflet 0:400d8e75a8d0 148 function call. Removing this define could reduce some code
dflet 0:400d8e75a8d0 149 size and improve slightly the performances but may impact in
dflet 0:400d8e75a8d0 150 unpredictable behaviour in case of invalid arguments
dflet 0:400d8e75a8d0 151
dflet 0:400d8e75a8d0 152 \sa
dflet 0:400d8e75a8d0 153
dflet 0:400d8e75a8d0 154 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 155
dflet 0:400d8e75a8d0 156 \warning Removing argument check may cause unpredictable behaviour in
dflet 0:400d8e75a8d0 157 case of invalid arguments.
dflet 0:400d8e75a8d0 158 In this case the user is responsible to argument validity
dflet 0:400d8e75a8d0 159 (for example all handlers must not be NULL)
dflet 0:400d8e75a8d0 160 */
dflet 0:400d8e75a8d0 161 #define SL_INC_ARG_CHECK
dflet 0:400d8e75a8d0 162
dflet 0:400d8e75a8d0 163
dflet 0:400d8e75a8d0 164 /*!
dflet 0:400d8e75a8d0 165 \def SL_INC_STD_BSD_API_NAMING
dflet 0:400d8e75a8d0 166
dflet 0:400d8e75a8d0 167 \brief Defines whether SimpleLink driver should expose standard BSD
dflet 0:400d8e75a8d0 168 APIs or not
dflet 0:400d8e75a8d0 169
dflet 0:400d8e75a8d0 170 When defined, the SimpleLink driver in addition to its alternative
dflet 0:400d8e75a8d0 171 BSD APIs expose also standard BSD APIs.
dflet 0:400d8e75a8d0 172 Standard BSD API includes the following functions:
dflet 0:400d8e75a8d0 173 socket , close , accept , bind , listen , connect , select ,
dflet 0:400d8e75a8d0 174 setsockopt , getsockopt , recv , recvfrom , write , send , sendto ,
dflet 0:400d8e75a8d0 175 gethostbyname
dflet 0:400d8e75a8d0 176
dflet 0:400d8e75a8d0 177 \sa
dflet 0:400d8e75a8d0 178
dflet 0:400d8e75a8d0 179 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 180
dflet 0:400d8e75a8d0 181 \warning
dflet 0:400d8e75a8d0 182 */
dflet 0:400d8e75a8d0 183
dflet 0:400d8e75a8d0 184 #define SL_INC_STD_BSD_API_NAMING
dflet 0:400d8e75a8d0 185
dflet 0:400d8e75a8d0 186
dflet 0:400d8e75a8d0 187 /*!
dflet 0:400d8e75a8d0 188 \brief Defines whether to include extended API in SimpleLink driver
dflet 0:400d8e75a8d0 189 or not
dflet 0:400d8e75a8d0 190
dflet 0:400d8e75a8d0 191 When defined, the SimpleLink driver will include also all
dflet 0:400d8e75a8d0 192 extended API of the included packages
dflet 0:400d8e75a8d0 193
dflet 0:400d8e75a8d0 194 \sa ext_api
dflet 0:400d8e75a8d0 195
dflet 0:400d8e75a8d0 196 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 197
dflet 0:400d8e75a8d0 198 \warning
dflet 0:400d8e75a8d0 199 */
dflet 0:400d8e75a8d0 200 #define SL_INC_EXT_API
dflet 0:400d8e75a8d0 201
dflet 0:400d8e75a8d0 202 /*!
dflet 0:400d8e75a8d0 203 \brief Defines whether to include WLAN package in SimpleLink driver
dflet 0:400d8e75a8d0 204 or not
dflet 0:400d8e75a8d0 205
dflet 0:400d8e75a8d0 206 When defined, the SimpleLink driver will include also
dflet 0:400d8e75a8d0 207 the WLAN package
dflet 0:400d8e75a8d0 208
dflet 0:400d8e75a8d0 209 \sa
dflet 0:400d8e75a8d0 210
dflet 0:400d8e75a8d0 211 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 212
dflet 0:400d8e75a8d0 213 \warning
dflet 0:400d8e75a8d0 214 */
dflet 0:400d8e75a8d0 215 #define SL_INC_WLAN_PKG
dflet 0:400d8e75a8d0 216
dflet 0:400d8e75a8d0 217 /*!
dflet 0:400d8e75a8d0 218 \brief Defines whether to include SOCKET package in SimpleLink
dflet 0:400d8e75a8d0 219 driver or not
dflet 0:400d8e75a8d0 220
dflet 0:400d8e75a8d0 221 When defined, the SimpleLink driver will include also
dflet 0:400d8e75a8d0 222 the SOCKET package
dflet 0:400d8e75a8d0 223
dflet 0:400d8e75a8d0 224 \sa
dflet 0:400d8e75a8d0 225
dflet 0:400d8e75a8d0 226 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 227
dflet 0:400d8e75a8d0 228 \warning
dflet 0:400d8e75a8d0 229 */
dflet 0:400d8e75a8d0 230 #define SL_INC_SOCKET_PKG
dflet 0:400d8e75a8d0 231
dflet 0:400d8e75a8d0 232 /*!
dflet 0:400d8e75a8d0 233 \brief Defines whether to include NET_APP package in SimpleLink
dflet 0:400d8e75a8d0 234 driver or not
dflet 0:400d8e75a8d0 235
dflet 0:400d8e75a8d0 236 When defined, the SimpleLink driver will include also the
dflet 0:400d8e75a8d0 237 NET_APP package
dflet 0:400d8e75a8d0 238
dflet 0:400d8e75a8d0 239 \sa
dflet 0:400d8e75a8d0 240
dflet 0:400d8e75a8d0 241 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 242
dflet 0:400d8e75a8d0 243 \warning
dflet 0:400d8e75a8d0 244 */
dflet 0:400d8e75a8d0 245 #define SL_INC_NET_APP_PKG
dflet 0:400d8e75a8d0 246
dflet 0:400d8e75a8d0 247 /*!
dflet 0:400d8e75a8d0 248 \brief Defines whether to include NET_CFG package in SimpleLink
dflet 0:400d8e75a8d0 249 driver or not
dflet 0:400d8e75a8d0 250
dflet 0:400d8e75a8d0 251 When defined, the SimpleLink driver will include also
dflet 0:400d8e75a8d0 252 the NET_CFG package
dflet 0:400d8e75a8d0 253
dflet 0:400d8e75a8d0 254 \sa
dflet 0:400d8e75a8d0 255
dflet 0:400d8e75a8d0 256 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 257
dflet 0:400d8e75a8d0 258 \warning
dflet 0:400d8e75a8d0 259 */
dflet 0:400d8e75a8d0 260 #define SL_INC_NET_CFG_PKG
dflet 0:400d8e75a8d0 261
dflet 0:400d8e75a8d0 262 /*!
dflet 0:400d8e75a8d0 263 \brief Defines whether to include NVMEM package in SimpleLink
dflet 0:400d8e75a8d0 264 driver or not
dflet 0:400d8e75a8d0 265
dflet 0:400d8e75a8d0 266 When defined, the SimpleLink driver will include also the
dflet 0:400d8e75a8d0 267 NVMEM package
dflet 0:400d8e75a8d0 268
dflet 0:400d8e75a8d0 269 \sa
dflet 0:400d8e75a8d0 270
dflet 0:400d8e75a8d0 271 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 272
dflet 0:400d8e75a8d0 273 \warning
dflet 0:400d8e75a8d0 274 */
dflet 0:400d8e75a8d0 275 #define SL_INC_NVMEM_PKG
dflet 0:400d8e75a8d0 276
dflet 0:400d8e75a8d0 277 /*!
dflet 0:400d8e75a8d0 278 \brief Defines whether to include socket server side APIs
dflet 0:400d8e75a8d0 279 in SimpleLink driver or not
dflet 0:400d8e75a8d0 280
dflet 0:400d8e75a8d0 281 When defined, the SimpleLink driver will include also socket
dflet 0:400d8e75a8d0 282 server side APIs
dflet 0:400d8e75a8d0 283
dflet 0:400d8e75a8d0 284 \sa server_side
dflet 0:400d8e75a8d0 285
dflet 0:400d8e75a8d0 286 \note
dflet 0:400d8e75a8d0 287
dflet 0:400d8e75a8d0 288 \warning
dflet 0:400d8e75a8d0 289 */
dflet 0:400d8e75a8d0 290 #define SL_INC_SOCK_SERVER_SIDE_API
dflet 0:400d8e75a8d0 291
dflet 0:400d8e75a8d0 292 /*!
dflet 0:400d8e75a8d0 293 \brief Defines whether to include socket client side APIs in SimpleLink
dflet 0:400d8e75a8d0 294 driver or not
dflet 0:400d8e75a8d0 295
dflet 0:400d8e75a8d0 296 When defined, the SimpleLink driver will include also socket
dflet 0:400d8e75a8d0 297 client side APIs
dflet 0:400d8e75a8d0 298
dflet 0:400d8e75a8d0 299 \sa client_side
dflet 0:400d8e75a8d0 300
dflet 0:400d8e75a8d0 301 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 302
dflet 0:400d8e75a8d0 303 \warning
dflet 0:400d8e75a8d0 304 */
dflet 0:400d8e75a8d0 305 #define SL_INC_SOCK_CLIENT_SIDE_API
dflet 0:400d8e75a8d0 306
dflet 0:400d8e75a8d0 307 /*!
dflet 0:400d8e75a8d0 308 \brief Defines whether to include socket receive APIs in SimpleLink
dflet 0:400d8e75a8d0 309 driver or not
dflet 0:400d8e75a8d0 310
dflet 0:400d8e75a8d0 311 When defined, the SimpleLink driver will include also socket
dflet 0:400d8e75a8d0 312 receive side APIs
dflet 0:400d8e75a8d0 313
dflet 0:400d8e75a8d0 314 \sa recv_api
dflet 0:400d8e75a8d0 315
dflet 0:400d8e75a8d0 316 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 317
dflet 0:400d8e75a8d0 318 \warning
dflet 0:400d8e75a8d0 319 */
dflet 0:400d8e75a8d0 320 #define SL_INC_SOCK_RECV_API
dflet 0:400d8e75a8d0 321
dflet 0:400d8e75a8d0 322 /*!
dflet 0:400d8e75a8d0 323 \brief Defines whether to include socket send APIs in SimpleLink
dflet 0:400d8e75a8d0 324 driver or not
dflet 0:400d8e75a8d0 325
dflet 0:400d8e75a8d0 326 When defined, the SimpleLink driver will include also socket
dflet 0:400d8e75a8d0 327 send side APIs
dflet 0:400d8e75a8d0 328
dflet 0:400d8e75a8d0 329 \sa send_api
dflet 0:400d8e75a8d0 330
dflet 0:400d8e75a8d0 331 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 332
dflet 0:400d8e75a8d0 333 \warning
dflet 0:400d8e75a8d0 334 */
dflet 0:400d8e75a8d0 335 #define SL_INC_SOCK_SEND_API
dflet 0:400d8e75a8d0 336
dflet 0:400d8e75a8d0 337 /*!
dflet 0:400d8e75a8d0 338
dflet 0:400d8e75a8d0 339 Close the Doxygen group.
dflet 0:400d8e75a8d0 340 @}
dflet 0:400d8e75a8d0 341
dflet 0:400d8e75a8d0 342 */
dflet 0:400d8e75a8d0 343
dflet 0:400d8e75a8d0 344
dflet 0:400d8e75a8d0 345 /*!
dflet 0:400d8e75a8d0 346 ******************************************************************************
dflet 0:400d8e75a8d0 347
dflet 0:400d8e75a8d0 348 \defgroup porting_enable_device Device Enable/Disable IO
dflet 0:400d8e75a8d0 349
dflet 0:400d8e75a8d0 350 The enable/disable API provide mechanism to enable/disable the network processor
dflet 0:400d8e75a8d0 351
dflet 0:400d8e75a8d0 352
dflet 0:400d8e75a8d0 353 PORTING ACTION:
dflet 0:400d8e75a8d0 354 - None
dflet 0:400d8e75a8d0 355 @{
dflet 0:400d8e75a8d0 356
dflet 0:400d8e75a8d0 357 ******************************************************************************
dflet 0:400d8e75a8d0 358 */
dflet 0:400d8e75a8d0 359 /*!
dflet 0:400d8e75a8d0 360 \brief Preamble to the enabling the Network Processor.
dflet 0:400d8e75a8d0 361 Placeholder to implement any pre-process operations
dflet 0:400d8e75a8d0 362 before enabling networking operations.
dflet 0:400d8e75a8d0 363
dflet 0:400d8e75a8d0 364 \sa sl_DeviceEnable
dflet 0:400d8e75a8d0 365
dflet 0:400d8e75a8d0 366 \note belongs to \ref ported_sec
dflet 0:400d8e75a8d0 367
dflet 0:400d8e75a8d0 368 */
dflet 0:400d8e75a8d0 369 #define sl_DeviceEnablePreamble()
dflet 0:400d8e75a8d0 370
dflet 0:400d8e75a8d0 371 /*!
dflet 0:400d8e75a8d0 372 \brief Enable the Network Processor
dflet 0:400d8e75a8d0 373
dflet 0:400d8e75a8d0 374 \sa sl_DeviceDisable
dflet 0:400d8e75a8d0 375
dflet 0:400d8e75a8d0 376 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 377
dflet 0:400d8e75a8d0 378 */
dflet 0:400d8e75a8d0 379 //#define sl_DeviceEnable _spi->CC3100_enable
dflet 0:400d8e75a8d0 380
dflet 0:400d8e75a8d0 381 /*!
dflet 0:400d8e75a8d0 382 \brief Disable the Network Processor
dflet 0:400d8e75a8d0 383
dflet 0:400d8e75a8d0 384 \sa sl_DeviceEnable
dflet 0:400d8e75a8d0 385
dflet 0:400d8e75a8d0 386 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 387 */
dflet 0:400d8e75a8d0 388 //#define sl_DeviceDisable _spi->CC3100_disable
dflet 0:400d8e75a8d0 389
dflet 0:400d8e75a8d0 390 /*!
dflet 0:400d8e75a8d0 391
dflet 0:400d8e75a8d0 392 Close the Doxygen group.
dflet 0:400d8e75a8d0 393 @}
dflet 0:400d8e75a8d0 394
dflet 0:400d8e75a8d0 395 */
dflet 0:400d8e75a8d0 396
dflet 0:400d8e75a8d0 397 /*!
dflet 0:400d8e75a8d0 398 ******************************************************************************
dflet 0:400d8e75a8d0 399
dflet 0:400d8e75a8d0 400 \defgroup porting_interface Hardware Transport Interface
dflet 0:400d8e75a8d0 401
dflet 0:400d8e75a8d0 402 The simple link device can work with different transport interfaces
dflet 0:400d8e75a8d0 403 (namely,SPI or UART). Texas Instruments provides single driver
dflet 0:400d8e75a8d0 404 that can work with all these types. This section binds the
dflet 0:400d8e75a8d0 405 physical transport interface with the SimpleLink driver
dflet 0:400d8e75a8d0 406
dflet 0:400d8e75a8d0 407
dflet 0:400d8e75a8d0 408 \note Correct and efficient implementation of this driver is critical
dflet 0:400d8e75a8d0 409 for the performances of the SimpleLink device on this platform.
dflet 0:400d8e75a8d0 410
dflet 0:400d8e75a8d0 411
dflet 0:400d8e75a8d0 412 PORTING ACTION:
dflet 0:400d8e75a8d0 413 - None
dflet 0:400d8e75a8d0 414
dflet 0:400d8e75a8d0 415 @{
dflet 0:400d8e75a8d0 416
dflet 0:400d8e75a8d0 417 ******************************************************************************
dflet 0:400d8e75a8d0 418 */
dflet 0:400d8e75a8d0 419
dflet 0:400d8e75a8d0 420 #define _SlFd_t int32_t
dflet 0:400d8e75a8d0 421
dflet 0:400d8e75a8d0 422 /*!
dflet 0:400d8e75a8d0 423 \brief Opens an interface communication port to be used for communicating
dflet 0:400d8e75a8d0 424 with a SimpleLink device
dflet 0:400d8e75a8d0 425
dflet 0:400d8e75a8d0 426 Given an interface name and option flags, this function opens
dflet 0:400d8e75a8d0 427 the communication port and creates a file descriptor.
dflet 0:400d8e75a8d0 428 This file descriptor is used afterwards to read and write
dflet 0:400d8e75a8d0 429 data from and to this specific communication channel.
dflet 0:400d8e75a8d0 430 The speed, clock polarity, clock phase, chip select and all other
dflet 0:400d8e75a8d0 431 specific attributes of the channel are all should be set to hardcoded
dflet 0:400d8e75a8d0 432 in this function.
dflet 0:400d8e75a8d0 433
dflet 0:400d8e75a8d0 434 \param ifName - points to the interface name/path. The interface name is an
dflet 0:400d8e75a8d0 435 optional attributes that the simple link driver receives
dflet 0:400d8e75a8d0 436 on opening the driver (sl_Start).
dflet 0:400d8e75a8d0 437 In systems that the spi channel is not implemented as
dflet 0:400d8e75a8d0 438 part of the OS device drivers, this parameter could be NULL.
dflet 0:400d8e75a8d0 439
dflet 0:400d8e75a8d0 440 \param flags - optional flags parameters for future use
dflet 0:400d8e75a8d0 441
dflet 0:400d8e75a8d0 442 \return upon successful completion, the function shall open the channel
dflet 0:400d8e75a8d0 443 and return a non-negative integer representing the file descriptor.
dflet 0:400d8e75a8d0 444 Otherwise, -1 shall be returned
dflet 0:400d8e75a8d0 445
dflet 0:400d8e75a8d0 446 \sa sl_IfClose , sl_IfRead , sl_IfWrite
dflet 0:400d8e75a8d0 447
dflet 0:400d8e75a8d0 448 \note The prototype of the function is as follow:
dflet 0:400d8e75a8d0 449 Fd_t xxx_IfOpen(char* pIfName , unsigned long flags);
dflet 0:400d8e75a8d0 450
dflet 0:400d8e75a8d0 451 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 452
dflet 0:400d8e75a8d0 453 \warning
dflet 0:400d8e75a8d0 454 */
dflet 0:400d8e75a8d0 455 //#define sl_IfOpen _spi->spi_Open
dflet 0:400d8e75a8d0 456
dflet 0:400d8e75a8d0 457 /*!
dflet 0:400d8e75a8d0 458 \brief Closes an opened interface communication port
dflet 0:400d8e75a8d0 459
dflet 0:400d8e75a8d0 460 \param fd - file descriptor of opened communication channel
dflet 0:400d8e75a8d0 461
dflet 0:400d8e75a8d0 462 \return upon successful completion, the function shall return 0.
dflet 0:400d8e75a8d0 463 Otherwise, -1 shall be returned
dflet 0:400d8e75a8d0 464
dflet 0:400d8e75a8d0 465 \sa sl_IfOpen , sl_IfRead , sl_IfWrite
dflet 0:400d8e75a8d0 466
dflet 0:400d8e75a8d0 467 \note The prototype of the function is as follow:
dflet 0:400d8e75a8d0 468 int xxx_IfClose(Fd_t Fd);
dflet 0:400d8e75a8d0 469
dflet 0:400d8e75a8d0 470 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 471
dflet 0:400d8e75a8d0 472 \warning
dflet 0:400d8e75a8d0 473 */
dflet 0:400d8e75a8d0 474 //#define sl_IfClose _spi->spi_Close
dflet 0:400d8e75a8d0 475
dflet 0:400d8e75a8d0 476 /*!
dflet 0:400d8e75a8d0 477 \brief Attempts to read up to len bytes from an opened communication channel
dflet 0:400d8e75a8d0 478 into a buffer starting at pBuff.
dflet 0:400d8e75a8d0 479
dflet 0:400d8e75a8d0 480 \param fd - file descriptor of an opened communication channel
dflet 0:400d8e75a8d0 481
dflet 0:400d8e75a8d0 482 \param pBuff - pointer to the first location of a buffer that contains enough
dflet 0:400d8e75a8d0 483 space for all expected data
dflet 0:400d8e75a8d0 484
dflet 0:400d8e75a8d0 485 \param len - number of bytes to read from the communication channel
dflet 0:400d8e75a8d0 486
dflet 0:400d8e75a8d0 487 \return upon successful completion, the function shall return the number of read bytes.
dflet 0:400d8e75a8d0 488 Otherwise, 0 shall be returned
dflet 0:400d8e75a8d0 489
dflet 0:400d8e75a8d0 490 \sa sl_IfClose , sl_IfOpen , sl_IfWrite
dflet 0:400d8e75a8d0 491
dflet 0:400d8e75a8d0 492
dflet 0:400d8e75a8d0 493 \note The prototype of the function is as follow:
dflet 0:400d8e75a8d0 494 int xxx_IfRead(Fd_t Fd , char* pBuff , int Len);
dflet 0:400d8e75a8d0 495
dflet 0:400d8e75a8d0 496 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 497
dflet 0:400d8e75a8d0 498 \warning
dflet 0:400d8e75a8d0 499 */
dflet 0:400d8e75a8d0 500 //#define sl_IfRead _spi->spi_Read
dflet 0:400d8e75a8d0 501
dflet 0:400d8e75a8d0 502 /*!
dflet 0:400d8e75a8d0 503 \brief attempts to write up to len bytes to the SPI channel
dflet 0:400d8e75a8d0 504
dflet 0:400d8e75a8d0 505 \param fd - file descriptor of an opened communication channel
dflet 0:400d8e75a8d0 506
dflet 0:400d8e75a8d0 507 \param pBuff - pointer to the first location of a buffer that contains
dflet 0:400d8e75a8d0 508 the data to send over the communication channel
dflet 0:400d8e75a8d0 509
dflet 0:400d8e75a8d0 510 \param len - number of bytes to write to the communication channel
dflet 0:400d8e75a8d0 511
dflet 0:400d8e75a8d0 512 \return upon successful completion, the function shall return the number of sent bytes.
dflet 0:400d8e75a8d0 513 otherwise, 0 shall be returned
dflet 0:400d8e75a8d0 514
dflet 0:400d8e75a8d0 515 \sa sl_IfClose , sl_IfOpen , sl_IfRead
dflet 0:400d8e75a8d0 516
dflet 0:400d8e75a8d0 517 \note This function could be implemented as zero copy and return only upon successful completion
dflet 0:400d8e75a8d0 518 of writing the whole buffer, but in cases that memory allocation is not too tight, the
dflet 0:400d8e75a8d0 519 function could copy the data to internal buffer, return back and complete the write in
dflet 0:400d8e75a8d0 520 parallel to other activities as long as the other SPI activities would be blocked until
dflet 0:400d8e75a8d0 521 the entire buffer write would be completed
dflet 0:400d8e75a8d0 522
dflet 0:400d8e75a8d0 523 The prototype of the function is as follow:
dflet 0:400d8e75a8d0 524 int xxx_IfWrite(Fd_t Fd , char* pBuff , int Len);
dflet 0:400d8e75a8d0 525
dflet 0:400d8e75a8d0 526 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 527
dflet 0:400d8e75a8d0 528 \warning
dflet 0:400d8e75a8d0 529 */
dflet 0:400d8e75a8d0 530 //#define sl_IfWrite _spi->spi_Write
dflet 0:400d8e75a8d0 531
dflet 0:400d8e75a8d0 532 /*!
dflet 0:400d8e75a8d0 533 \brief register an interrupt handler routine for the host IRQ
dflet 0:400d8e75a8d0 534
dflet 0:400d8e75a8d0 535 \param InterruptHdl - pointer to interrupt handler routine
dflet 0:400d8e75a8d0 536
dflet 0:400d8e75a8d0 537 \param pValue - pointer to a memory structure that is passed
dflet 0:400d8e75a8d0 538 to the interrupt handler.
dflet 0:400d8e75a8d0 539
dflet 0:400d8e75a8d0 540 \return upon successful registration, the function shall return 0.
dflet 0:400d8e75a8d0 541 Otherwise, -1 shall be returned
dflet 0:400d8e75a8d0 542
dflet 0:400d8e75a8d0 543 \sa
dflet 0:400d8e75a8d0 544
dflet 0:400d8e75a8d0 545 \note If there is already registered interrupt handler, the function
dflet 0:400d8e75a8d0 546 should overwrite the old handler with the new one
dflet 0:400d8e75a8d0 547
dflet 0:400d8e75a8d0 548 \note If the handler is a null pointer, the function should un-register the
dflet 0:400d8e75a8d0 549 interrupt handler, and the interrupts can be disabled.
dflet 0:400d8e75a8d0 550
dflet 0:400d8e75a8d0 551 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 552
dflet 0:400d8e75a8d0 553 \warning
dflet 0:400d8e75a8d0 554 */
dflet 0:400d8e75a8d0 555 //#define sl_IfRegIntHdlr(InterruptHdl , pValue) \
dflet 0:400d8e75a8d0 556 // _spi->registerInterruptHandler(InterruptHdl , pValue)
dflet 0:400d8e75a8d0 557 /*!
dflet 0:400d8e75a8d0 558 \brief Masks the Host IRQ
dflet 0:400d8e75a8d0 559
dflet 0:400d8e75a8d0 560 \sa sl_IfUnMaskIntHdlr
dflet 0:400d8e75a8d0 561
dflet 0:400d8e75a8d0 562
dflet 0:400d8e75a8d0 563
dflet 0:400d8e75a8d0 564 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 565
dflet 0:400d8e75a8d0 566 \warning
dflet 0:400d8e75a8d0 567 */
dflet 0:400d8e75a8d0 568
dflet 0:400d8e75a8d0 569 //#define sl_IfMaskIntHdlr()
dflet 0:400d8e75a8d0 570
dflet 0:400d8e75a8d0 571 /*!
dflet 0:400d8e75a8d0 572 \brief Unmasks the Host IRQ
dflet 0:400d8e75a8d0 573
dflet 0:400d8e75a8d0 574 \sa sl_IfMaskIntHdlr
dflet 0:400d8e75a8d0 575
dflet 0:400d8e75a8d0 576
dflet 0:400d8e75a8d0 577
dflet 0:400d8e75a8d0 578 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 579
dflet 0:400d8e75a8d0 580 \warning
dflet 0:400d8e75a8d0 581 */
dflet 0:400d8e75a8d0 582
dflet 0:400d8e75a8d0 583 //#define sl_IfUnMaskIntHdlr()
dflet 0:400d8e75a8d0 584
dflet 0:400d8e75a8d0 585 /*!
dflet 0:400d8e75a8d0 586 \brief Write Handers for statistics debug on write
dflet 0:400d8e75a8d0 587
dflet 0:400d8e75a8d0 588 \param interface handler - pointer to interrupt handler routine
dflet 0:400d8e75a8d0 589
dflet 0:400d8e75a8d0 590
dflet 0:400d8e75a8d0 591 \return no return value
dflet 0:400d8e75a8d0 592
dflet 0:400d8e75a8d0 593 \sa
dflet 0:400d8e75a8d0 594
dflet 0:400d8e75a8d0 595 \note An optional hooks for monitoring before and after write info
dflet 0:400d8e75a8d0 596
dflet 0:400d8e75a8d0 597 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 598
dflet 0:400d8e75a8d0 599 \warning
dflet 0:400d8e75a8d0 600 */
dflet 0:400d8e75a8d0 601 /*
dflet 0:400d8e75a8d0 602 #define SL_START_WRITE_STAT
dflet 0:400d8e75a8d0 603 */
dflet 0:400d8e75a8d0 604
dflet 0:400d8e75a8d0 605 #ifdef SL_START_WRITE_STAT
dflet 0:400d8e75a8d0 606 #define sl_IfStartWriteSequence
dflet 0:400d8e75a8d0 607 #define sl_IfEndWriteSequence
dflet 0:400d8e75a8d0 608 #endif
dflet 0:400d8e75a8d0 609 /*!
dflet 0:400d8e75a8d0 610
dflet 0:400d8e75a8d0 611 Close the Doxygen group.
dflet 0:400d8e75a8d0 612 @}
dflet 0:400d8e75a8d0 613
dflet 0:400d8e75a8d0 614 */
dflet 0:400d8e75a8d0 615
dflet 0:400d8e75a8d0 616 /*!
dflet 0:400d8e75a8d0 617 ******************************************************************************
dflet 0:400d8e75a8d0 618
dflet 0:400d8e75a8d0 619 \defgroup porting_mem_mgm Memory Management
dflet 0:400d8e75a8d0 620
dflet 0:400d8e75a8d0 621 This section declare in which memory management model the SimpleLink driver
dflet 0:400d8e75a8d0 622 will run:
dflet 0:400d8e75a8d0 623 -# Static
dflet 0:400d8e75a8d0 624 -# Dynamic
dflet 0:400d8e75a8d0 625
dflet 0:400d8e75a8d0 626 This section IS NOT REQUIRED in case Static model is selected.
dflet 0:400d8e75a8d0 627
dflet 0:400d8e75a8d0 628 The default memory model is Static
dflet 0:400d8e75a8d0 629
dflet 0:400d8e75a8d0 630 PORTING ACTION:
dflet 0:400d8e75a8d0 631 - If dynamic model is selected, define the alloc and free functions.
dflet 0:400d8e75a8d0 632
dflet 0:400d8e75a8d0 633 @{
dflet 0:400d8e75a8d0 634
dflet 0:400d8e75a8d0 635 *****************************************************************************
dflet 0:400d8e75a8d0 636 */
dflet 0:400d8e75a8d0 637
dflet 0:400d8e75a8d0 638 /*!
dflet 0:400d8e75a8d0 639 \brief Defines whether the SimpleLink driver is working in dynamic
dflet 0:400d8e75a8d0 640 memory model or not
dflet 0:400d8e75a8d0 641
dflet 0:400d8e75a8d0 642 When defined, the SimpleLink driver use dynamic allocations
dflet 0:400d8e75a8d0 643 if dynamic allocation is selected malloc and free functions
dflet 0:400d8e75a8d0 644 must be retrieved
dflet 0:400d8e75a8d0 645
dflet 0:400d8e75a8d0 646 \sa
dflet 0:400d8e75a8d0 647
dflet 0:400d8e75a8d0 648 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 649
dflet 0:400d8e75a8d0 650 \warning
dflet 0:400d8e75a8d0 651 */
dflet 0:400d8e75a8d0 652 /*
dflet 0:400d8e75a8d0 653 #define SL_MEMORY_MGMT_DYNAMIC
dflet 0:400d8e75a8d0 654 */
dflet 0:400d8e75a8d0 655
dflet 0:400d8e75a8d0 656 #ifdef SL_MEMORY_MGMT_DYNAMIC
dflet 0:400d8e75a8d0 657
dflet 0:400d8e75a8d0 658 /*!
dflet 0:400d8e75a8d0 659 \brief
dflet 0:400d8e75a8d0 660
dflet 0:400d8e75a8d0 661 \sa
dflet 0:400d8e75a8d0 662
dflet 0:400d8e75a8d0 663 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 664
dflet 0:400d8e75a8d0 665 \warning
dflet 0:400d8e75a8d0 666 */
dflet 0:400d8e75a8d0 667 #define sl_Malloc(Size) malloc(Size)
dflet 0:400d8e75a8d0 668
dflet 0:400d8e75a8d0 669 /*!
dflet 0:400d8e75a8d0 670 \brief
dflet 0:400d8e75a8d0 671
dflet 0:400d8e75a8d0 672 \sa
dflet 0:400d8e75a8d0 673
dflet 0:400d8e75a8d0 674 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 675
dflet 0:400d8e75a8d0 676 \warning
dflet 0:400d8e75a8d0 677 */
dflet 0:400d8e75a8d0 678 #define sl_Free(pMem) free(pMem)
dflet 0:400d8e75a8d0 679
dflet 0:400d8e75a8d0 680 #endif
dflet 0:400d8e75a8d0 681
dflet 0:400d8e75a8d0 682 /*!
dflet 0:400d8e75a8d0 683
dflet 0:400d8e75a8d0 684 Close the Doxygen group.
dflet 0:400d8e75a8d0 685 @}
dflet 0:400d8e75a8d0 686
dflet 0:400d8e75a8d0 687 */
dflet 0:400d8e75a8d0 688
dflet 0:400d8e75a8d0 689 /*!
dflet 0:400d8e75a8d0 690 ******************************************************************************
dflet 0:400d8e75a8d0 691
dflet 0:400d8e75a8d0 692 \defgroup porting_os Operating System (OS)
dflet 0:400d8e75a8d0 693
dflet 0:400d8e75a8d0 694 The simple link driver can run on multi-threaded environment as well
dflet 0:400d8e75a8d0 695 as non-os environment (main loop)
dflet 0:400d8e75a8d0 696
dflet 0:400d8e75a8d0 697 This section IS NOT REQUIRED in case you are working on non-os environment.
dflet 0:400d8e75a8d0 698
dflet 0:400d8e75a8d0 699 If you choose to work in multi-threaded environment under any operating system
dflet 0:400d8e75a8d0 700 you will have to provide some basic adaptation routines to allow the driver
dflet 0:400d8e75a8d0 701 to protect access to resources from different threads (locking object) and
dflet 0:400d8e75a8d0 702 to allow synchronization between threads (sync objects).
dflet 0:400d8e75a8d0 703
dflet 0:400d8e75a8d0 704 PORTING ACTION:
dflet 0:400d8e75a8d0 705 -# Uncomment SL_PLATFORM_MULTI_THREADED define
dflet 0:400d8e75a8d0 706 -# Bind locking object routines
dflet 0:400d8e75a8d0 707 -# Bind synchronization object routines
dflet 0:400d8e75a8d0 708 -# Optional - Bind spawn thread routine
dflet 0:400d8e75a8d0 709
dflet 0:400d8e75a8d0 710 @{
dflet 0:400d8e75a8d0 711
dflet 0:400d8e75a8d0 712 ******************************************************************************
dflet 0:400d8e75a8d0 713 */
dflet 0:400d8e75a8d0 714
dflet 0:400d8e75a8d0 715
dflet 0:400d8e75a8d0 716 //#define SL_PLATFORM_MULTI_THREADED
dflet 0:400d8e75a8d0 717
dflet 0:400d8e75a8d0 718
dflet 0:400d8e75a8d0 719 #ifdef SL_PLATFORM_MULTI_THREADED
dflet 0:400d8e75a8d0 720 #include "osi.h"
dflet 0:400d8e75a8d0 721
dflet 0:400d8e75a8d0 722
dflet 0:400d8e75a8d0 723 /*!
dflet 0:400d8e75a8d0 724 \brief
dflet 0:400d8e75a8d0 725 \sa
dflet 0:400d8e75a8d0 726 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 727 \warning
dflet 0:400d8e75a8d0 728 */
dflet 0:400d8e75a8d0 729 #define SL_OS_RET_CODE_OK ((int32_t)OSI_OK)
dflet 0:400d8e75a8d0 730
dflet 0:400d8e75a8d0 731 /*!
dflet 0:400d8e75a8d0 732 \brief
dflet 0:400d8e75a8d0 733 \sa
dflet 0:400d8e75a8d0 734 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 735 \warning
dflet 0:400d8e75a8d0 736 */
dflet 0:400d8e75a8d0 737 #define SL_OS_WAIT_FOREVER ((OsiTime_t)OSI_WAIT_FOREVER)
dflet 0:400d8e75a8d0 738
dflet 0:400d8e75a8d0 739 /*!
dflet 0:400d8e75a8d0 740 \brief
dflet 0:400d8e75a8d0 741 \sa
dflet 0:400d8e75a8d0 742 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 743 \warning
dflet 0:400d8e75a8d0 744 */
dflet 0:400d8e75a8d0 745 #define SL_OS_NO_WAIT ((OsiTime_t)OSI_NO_WAIT)
dflet 0:400d8e75a8d0 746
dflet 0:400d8e75a8d0 747 /*!
dflet 0:400d8e75a8d0 748 \brief type definition for a time value
dflet 0:400d8e75a8d0 749
dflet 0:400d8e75a8d0 750 \note On each porting or platform the type could be whatever is needed - integer, pointer to structure etc.
dflet 0:400d8e75a8d0 751
dflet 0:400d8e75a8d0 752 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 753 */
dflet 0:400d8e75a8d0 754 #define _SlTime_t OsiTime_t
dflet 0:400d8e75a8d0 755
dflet 0:400d8e75a8d0 756 /*!
dflet 0:400d8e75a8d0 757 \brief type definition for a sync object container
dflet 0:400d8e75a8d0 758
dflet 0:400d8e75a8d0 759 Sync object is object used to synchronize between two threads or thread and interrupt handler.
dflet 0:400d8e75a8d0 760 One thread is waiting on the object and the other thread send a signal, which then
dflet 0:400d8e75a8d0 761 release the waiting thread.
dflet 0:400d8e75a8d0 762 The signal must be able to be sent from interrupt context.
dflet 0:400d8e75a8d0 763 This object is generally implemented by binary semaphore or events.
dflet 0:400d8e75a8d0 764
dflet 0:400d8e75a8d0 765 \note On each porting or platform the type could be whatever is needed - integer, structure etc.
dflet 0:400d8e75a8d0 766
dflet 0:400d8e75a8d0 767 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 768 */
dflet 0:400d8e75a8d0 769 #define _SlSyncObj_t OsiSyncObj_t
dflet 0:400d8e75a8d0 770
dflet 0:400d8e75a8d0 771
dflet 0:400d8e75a8d0 772 /*!
dflet 0:400d8e75a8d0 773 \brief This function creates a sync object
dflet 0:400d8e75a8d0 774
dflet 0:400d8e75a8d0 775 The sync object is used for synchronization between different thread or ISR and
dflet 0:400d8e75a8d0 776 a thread.
dflet 0:400d8e75a8d0 777
dflet 0:400d8e75a8d0 778 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 779
dflet 0:400d8e75a8d0 780 \return upon successful creation the function should return 0
dflet 0:400d8e75a8d0 781 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 782
dflet 0:400d8e75a8d0 783 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 784 \warning
dflet 0:400d8e75a8d0 785 */
dflet 0:400d8e75a8d0 786 #define sl_SyncObjCreate(pSyncObj,pName) osi_SyncObjCreate(pSyncObj)
dflet 0:400d8e75a8d0 787
dflet 0:400d8e75a8d0 788 /*!
dflet 0:400d8e75a8d0 789 \brief This function deletes a sync object
dflet 0:400d8e75a8d0 790
dflet 0:400d8e75a8d0 791 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 792
dflet 0:400d8e75a8d0 793 \return upon successful deletion the function should return 0
dflet 0:400d8e75a8d0 794 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 795 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 796 \warning
dflet 0:400d8e75a8d0 797 */
dflet 0:400d8e75a8d0 798 #define sl_SyncObjDelete(pSyncObj) osi_SyncObjDelete(pSyncObj)
dflet 0:400d8e75a8d0 799
dflet 0:400d8e75a8d0 800
dflet 0:400d8e75a8d0 801 /*!
dflet 0:400d8e75a8d0 802 \brief This function generates a sync signal for the object.
dflet 0:400d8e75a8d0 803
dflet 0:400d8e75a8d0 804 All suspended threads waiting on this sync object are resumed
dflet 0:400d8e75a8d0 805
dflet 0:400d8e75a8d0 806 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 807
dflet 0:400d8e75a8d0 808 \return upon successful signalling the function should return 0
dflet 0:400d8e75a8d0 809 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 810 \note the function could be called from ISR context
dflet 0:400d8e75a8d0 811 \warning
dflet 0:400d8e75a8d0 812 */
dflet 0:400d8e75a8d0 813 #define sl_SyncObjSignal(pSyncObj) osi_SyncObjSignal(pSyncObj)
dflet 0:400d8e75a8d0 814
dflet 0:400d8e75a8d0 815 /*!
dflet 0:400d8e75a8d0 816 \brief This function generates a sync signal for the object from Interrupt
dflet 0:400d8e75a8d0 817
dflet 0:400d8e75a8d0 818 This is for RTOS that should signal from IRQ using a dedicated API
dflet 0:400d8e75a8d0 819
dflet 0:400d8e75a8d0 820 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 821
dflet 0:400d8e75a8d0 822 \return upon successful signalling the function should return 0
dflet 0:400d8e75a8d0 823 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 824 \note the function could be called from ISR context
dflet 0:400d8e75a8d0 825 \warning
dflet 0:400d8e75a8d0 826 */
dflet 0:400d8e75a8d0 827 #define sl_SyncObjSignalFromIRQ(pSyncObj) osi_SyncObjSignalFromISR( pSyncObj)
dflet 0:400d8e75a8d0 828 /*!
dflet 0:400d8e75a8d0 829 \brief This function waits for a sync signal of the specific sync object
dflet 0:400d8e75a8d0 830
dflet 0:400d8e75a8d0 831 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 832 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:400d8e75a8d0 833 stay suspended while waiting for the sync signal
dflet 0:400d8e75a8d0 834 Currently, the simple link driver uses only two values:
dflet 0:400d8e75a8d0 835 - OSI_WAIT_FOREVER
dflet 0:400d8e75a8d0 836 - OSI_NO_WAIT
dflet 0:400d8e75a8d0 837
dflet 0:400d8e75a8d0 838 \return upon successful reception of the signal within the timeout window return 0
dflet 0:400d8e75a8d0 839 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 840 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 841 \warning
dflet 0:400d8e75a8d0 842 */
dflet 0:400d8e75a8d0 843 #define sl_SyncObjWait(pSyncObj,Timeout) osi_SyncObjWait( pSyncObj , Timeout)
dflet 0:400d8e75a8d0 844
dflet 0:400d8e75a8d0 845 /*!
dflet 0:400d8e75a8d0 846 \brief type definition for a locking object container
dflet 0:400d8e75a8d0 847
dflet 0:400d8e75a8d0 848 Locking object are used to protect a resource from mutual accesses of two or more threads.
dflet 0:400d8e75a8d0 849 The locking object should support reentrant locks by a signal thread.
dflet 0:400d8e75a8d0 850 This object is generally implemented by mutex semaphore
dflet 0:400d8e75a8d0 851
dflet 0:400d8e75a8d0 852 \note On each porting or platform the type could be whatever is needed - integer, structure etc.
dflet 0:400d8e75a8d0 853 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 854 */
dflet 0:400d8e75a8d0 855 #define _SlLockObj_t OsiLockObj_t
dflet 0:400d8e75a8d0 856
dflet 0:400d8e75a8d0 857 /*!
dflet 0:400d8e75a8d0 858 \brief This function creates a locking object.
dflet 0:400d8e75a8d0 859
dflet 0:400d8e75a8d0 860 The locking object is used for protecting a shared resources between different
dflet 0:400d8e75a8d0 861 threads.
dflet 0:400d8e75a8d0 862
dflet 0:400d8e75a8d0 863 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 864
dflet 0:400d8e75a8d0 865 \return upon successful creation the function should return 0
dflet 0:400d8e75a8d0 866 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 867 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 868 \warning
dflet 0:400d8e75a8d0 869 */
dflet 0:400d8e75a8d0 870 #define sl_LockObjCreate(pLockObj,pName) osi_LockObjCreate(pLockObj)
dflet 0:400d8e75a8d0 871
dflet 0:400d8e75a8d0 872 /*!
dflet 0:400d8e75a8d0 873 \brief This function deletes a locking object.
dflet 0:400d8e75a8d0 874
dflet 0:400d8e75a8d0 875 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 876
dflet 0:400d8e75a8d0 877 \return upon successful deletion the function should return 0
dflet 0:400d8e75a8d0 878 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 879 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 880 \warning
dflet 0:400d8e75a8d0 881 */
dflet 0:400d8e75a8d0 882 #define sl_LockObjDelete(pLockObj) osi_LockObjDelete(pLockObj)
dflet 0:400d8e75a8d0 883
dflet 0:400d8e75a8d0 884 /*!
dflet 0:400d8e75a8d0 885 \brief This function locks a locking object.
dflet 0:400d8e75a8d0 886
dflet 0:400d8e75a8d0 887 All other threads that call this function before this thread calls
dflet 0:400d8e75a8d0 888 the osi_LockObjUnlock would be suspended
dflet 0:400d8e75a8d0 889
dflet 0:400d8e75a8d0 890 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 891 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:400d8e75a8d0 892 stay suspended while waiting for the locking object
dflet 0:400d8e75a8d0 893 Currently, the simple link driver uses only two values:
dflet 0:400d8e75a8d0 894 - OSI_WAIT_FOREVER
dflet 0:400d8e75a8d0 895 - OSI_NO_WAIT
dflet 0:400d8e75a8d0 896
dflet 0:400d8e75a8d0 897
dflet 0:400d8e75a8d0 898 \return upon successful reception of the locking object the function should return 0
dflet 0:400d8e75a8d0 899 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 900 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 901 \warning
dflet 0:400d8e75a8d0 902 */
dflet 0:400d8e75a8d0 903 #define sl_LockObjLock(pLockObj,Timeout) osi_LockObjLock( pLockObj , Timeout)
dflet 0:400d8e75a8d0 904
dflet 0:400d8e75a8d0 905 /*!
dflet 0:400d8e75a8d0 906 \brief This function unlock a locking object.
dflet 0:400d8e75a8d0 907
dflet 0:400d8e75a8d0 908 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 909
dflet 0:400d8e75a8d0 910 \return upon successful unlocking the function should return 0
dflet 0:400d8e75a8d0 911 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 912 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 913 \warning
dflet 0:400d8e75a8d0 914 */
dflet 0:400d8e75a8d0 915 #define sl_LockObjUnlock(pLockObj) osi_LockObjUnlock( pLockObj)
dflet 0:400d8e75a8d0 916
dflet 0:400d8e75a8d0 917 #endif
dflet 0:400d8e75a8d0 918 /*!
dflet 0:400d8e75a8d0 919 \brief This function call the pEntry callback from a different context
dflet 0:400d8e75a8d0 920
dflet 0:400d8e75a8d0 921 \param pEntry - pointer to the entry callback function
dflet 0:400d8e75a8d0 922
dflet 0:400d8e75a8d0 923 \param pValue - pointer to any type of memory structure that would be
dflet 0:400d8e75a8d0 924 passed to pEntry callback from the execution thread.
dflet 0:400d8e75a8d0 925
dflet 0:400d8e75a8d0 926 \param flags - execution flags - reserved for future usage
dflet 0:400d8e75a8d0 927
dflet 0:400d8e75a8d0 928 \return upon successful registration of the spawn the function should return 0
dflet 0:400d8e75a8d0 929 (the function is not blocked till the end of the execution of the function
dflet 0:400d8e75a8d0 930 and could be returned before the execution is actually completed)
dflet 0:400d8e75a8d0 931 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 932 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 933 \warning
dflet 0:400d8e75a8d0 934 */
dflet 0:400d8e75a8d0 935
dflet 0:400d8e75a8d0 936 #define SL_PLATFORM_EXTERNAL_SPAWN
dflet 0:400d8e75a8d0 937
dflet 0:400d8e75a8d0 938
dflet 0:400d8e75a8d0 939 #ifdef SL_PLATFORM_EXTERNAL_SPAWN
dflet 0:400d8e75a8d0 940 #define sl_Spawn(pEntry,pValue,flags) osi_Spawn(pEntry,pValue,flags)
dflet 0:400d8e75a8d0 941 #endif
dflet 0:400d8e75a8d0 942
dflet 0:400d8e75a8d0 943 /*!
dflet 0:400d8e75a8d0 944
dflet 0:400d8e75a8d0 945 Close the Doxygen group.
dflet 0:400d8e75a8d0 946 @}
dflet 0:400d8e75a8d0 947
dflet 0:400d8e75a8d0 948 */
dflet 0:400d8e75a8d0 949
dflet 0:400d8e75a8d0 950
dflet 0:400d8e75a8d0 951 /*!
dflet 0:400d8e75a8d0 952 ******************************************************************************
dflet 0:400d8e75a8d0 953
dflet 0:400d8e75a8d0 954 \defgroup porting_events Event Handlers
dflet 0:400d8e75a8d0 955
dflet 0:400d8e75a8d0 956 This section includes the asynchronous event handlers routines
dflet 0:400d8e75a8d0 957
dflet 0:400d8e75a8d0 958 PORTING ACTION:
dflet 0:400d8e75a8d0 959 -Uncomment the required handler and define your routine as the value
dflet 0:400d8e75a8d0 960 of this handler
dflet 0:400d8e75a8d0 961
dflet 0:400d8e75a8d0 962 @{
dflet 0:400d8e75a8d0 963
dflet 0:400d8e75a8d0 964 ******************************************************************************
dflet 0:400d8e75a8d0 965 */
dflet 0:400d8e75a8d0 966
dflet 0:400d8e75a8d0 967 /*!
dflet 0:400d8e75a8d0 968 \brief
dflet 0:400d8e75a8d0 969
dflet 0:400d8e75a8d0 970 \sa
dflet 0:400d8e75a8d0 971
dflet 0:400d8e75a8d0 972 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 973
dflet 0:400d8e75a8d0 974 \warning
dflet 0:400d8e75a8d0 975 */
dflet 0:400d8e75a8d0 976 #define sl_GeneralEvtHdlr SimpleLinkGeneralEventHandler
dflet 0:400d8e75a8d0 977
dflet 0:400d8e75a8d0 978
dflet 0:400d8e75a8d0 979 /*!
dflet 0:400d8e75a8d0 980 \brief An event handler for WLAN connection or disconnection indication
dflet 0:400d8e75a8d0 981 This event handles async WLAN events.
dflet 0:400d8e75a8d0 982 Possible events are:
dflet 0:400d8e75a8d0 983 SL_WLAN_CONNECT_EVENT - indicates WLAN is connected
dflet 0:400d8e75a8d0 984 SL_WLAN_DISCONNECT_EVENT - indicates WLAN is disconnected
dflet 0:400d8e75a8d0 985 \sa
dflet 0:400d8e75a8d0 986
dflet 0:400d8e75a8d0 987 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 988
dflet 0:400d8e75a8d0 989 \warning
dflet 0:400d8e75a8d0 990 */
dflet 0:400d8e75a8d0 991 #define sl_WlanEvtHdlr SimpleLinkWlanEventHandler
dflet 0:400d8e75a8d0 992
dflet 0:400d8e75a8d0 993 /*!
dflet 0:400d8e75a8d0 994 \brief An event handler for IP address asynchronous event. Usually accepted after new WLAN connection.
dflet 0:400d8e75a8d0 995 This event handles networking events.
dflet 0:400d8e75a8d0 996 Possible events are:
dflet 0:400d8e75a8d0 997 SL_NETAPP_IPV4_ACQUIRED - IP address was acquired (DHCP or Static)
dflet 0:400d8e75a8d0 998
dflet 0:400d8e75a8d0 999 \sa
dflet 0:400d8e75a8d0 1000
dflet 0:400d8e75a8d0 1001 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 1002
dflet 0:400d8e75a8d0 1003 \warning
dflet 0:400d8e75a8d0 1004 */
dflet 0:400d8e75a8d0 1005
dflet 0:400d8e75a8d0 1006 #define sl_NetAppEvtHdlr SimpleLinkNetAppEventHandler
dflet 0:400d8e75a8d0 1007
dflet 0:400d8e75a8d0 1008 /*!
dflet 0:400d8e75a8d0 1009 \brief A callback for HTTP server events.
dflet 0:400d8e75a8d0 1010 Possible events are:
dflet 0:400d8e75a8d0 1011 SL_NETAPP_HTTPGETTOKENVALUE - NWP requests to get the value of a specific token
dflet 0:400d8e75a8d0 1012 SL_NETAPP_HTTPPOSTTOKENVALUE - NWP post to the host a new value for a specific token
dflet 0:400d8e75a8d0 1013
dflet 0:400d8e75a8d0 1014 \param pServerEvent - Contains the relevant event information (SL_NETAPP_HTTPGETTOKENVALUE or SL_NETAPP_HTTPPOSTTOKENVALUE)
dflet 0:400d8e75a8d0 1015
dflet 0:400d8e75a8d0 1016 \param pServerResponse - Should be filled by the user with the relevant response information (i.e SL_NETAPP_HTTPSETTOKENVALUE as a response to SL_NETAPP_HTTPGETTOKENVALUE event)
dflet 0:400d8e75a8d0 1017
dflet 0:400d8e75a8d0 1018 \sa
dflet 0:400d8e75a8d0 1019
dflet 0:400d8e75a8d0 1020 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 1021
dflet 0:400d8e75a8d0 1022 \warning
dflet 0:400d8e75a8d0 1023 */
dflet 0:400d8e75a8d0 1024
dflet 0:400d8e75a8d0 1025 #define sl_HttpServerCallback SimpleLinkHttpServerCallback
dflet 0:400d8e75a8d0 1026
dflet 0:400d8e75a8d0 1027 /*!
dflet 0:400d8e75a8d0 1028 \brief
dflet 0:400d8e75a8d0 1029
dflet 0:400d8e75a8d0 1030 \sa
dflet 0:400d8e75a8d0 1031
dflet 0:400d8e75a8d0 1032 \note belongs to \ref porting_sec
dflet 0:400d8e75a8d0 1033
dflet 0:400d8e75a8d0 1034 \warning
dflet 0:400d8e75a8d0 1035 */
dflet 0:400d8e75a8d0 1036 #define sl_SockEvtHdlr SimpleLinkSockEventHandler
dflet 0:400d8e75a8d0 1037
dflet 0:400d8e75a8d0 1038
dflet 0:400d8e75a8d0 1039
dflet 0:400d8e75a8d0 1040 /*!
dflet 0:400d8e75a8d0 1041
dflet 0:400d8e75a8d0 1042 Close the Doxygen group.
dflet 0:400d8e75a8d0 1043 @}
dflet 0:400d8e75a8d0 1044
dflet 0:400d8e75a8d0 1045 */
dflet 0:400d8e75a8d0 1046
dflet 0:400d8e75a8d0 1047 #endif /* __USER_H__ */
dflet 0:400d8e75a8d0 1048