TI's CC3100 host driver and demo. Experimental and a work in progress.

Dependencies:   mbed

Committer:
dflet
Date:
Wed Nov 19 23:04:04 2014 +0000
Revision:
2:a3e52cf86086
Parent:
0:bbe98578d4c0
Added more boards!

Who changed what in which revision?

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