TI's MQTT Demo with freertos CM4F

Dependencies:   mbed

Committer:
dflet
Date:
Thu Sep 03 14:07:01 2015 +0000
Revision:
0:1e7b5dd9edb4
First commit, it's been hanging around for a while. Updated SPI mode change 1 to 0.

Who changed what in which revision?

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