| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063 |
- /*
- * user.h - CC31xx/CC32xx Host Driver Implementation
- *
- * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
- #ifndef __USER_H__
- #define __USER_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*!
- ******************************************************************************
- \defgroup porting_user_include Porting - User Include Files
- This section IS NOT REQUIRED in case user provided primitives are handled
- in makefiles or project configurations (IDE)
- PORTING ACTION:
- - Include all required header files for the definition of:
- -# Transport layer library API (e.g. SPI, UART)
- -# OS primitives definitions (e.g. Task spawn, Semaphores)
- -# Memory management primitives (e.g. alloc, free)
- ******************************************************************************
- */
-
- #include <string.h>
- #include "cc_pal.h"
- /*!
- \def MAX_CONCURRENT_ACTIONS
- \brief Defines the maximum number of concurrent action in the system
- Min:1 , Max: 32
- Actions which has async events as return, can be
- \sa
- \note In case there are not enough resources for the actions needed in the system,
- error is received: POOL_IS_EMPTY
- one option is to increase MAX_CONCURRENT_ACTIONS
- (improves performance but results in memory consumption)
- Other option is to call the API later (decrease performance)
- \warning In case of setting to one, recommend to use non-blocking recv\recvfrom to allow
- multiple socket recv
- */
- #define MAX_CONCURRENT_ACTIONS 10
- /*!
- \def CPU_FREQ_IN_MHZ
- \brief Defines CPU frequency for Host side, for better accuracy of busy loops, if any
- \sa
- \note
- \warning If not set the default CPU frequency is set to 200MHz
- This option will be deprecated in future release
- */
- #define CPU_FREQ_IN_MHZ 80
- /*!
- ******************************************************************************
- \defgroup porting_capabilities Porting - Capabilities Set
- This section IS NOT REQUIRED in case one of the following pre defined
- capabilities set is in use:
- - SL_TINY
- - SL_SMALL
- - SL_FULL
- PORTING ACTION:
- - Define one of the pre-defined capabilities set or uncomment the
- relevant definitions below to select the required capabilities
- @{
- *******************************************************************************
- */
- /*!
- \def SL_INC_ARG_CHECK
- \brief Defines whether the SimpleLink driver perform argument check
- or not
- When defined, the SimpleLink driver perform argument check on
- function call. Removing this define could reduce some code
- size and improve slightly the performances but may impact in
- unpredictable behavior in case of invalid arguments
- \sa
- \note belongs to \ref proting_sec
- \warning Removing argument check may cause unpredictable behavior in
- case of invalid arguments.
- In this case the user is responsible to argument validity
- (for example all handlers must not be NULL)
- */
- #define SL_INC_ARG_CHECK
- /*!
- \def SL_INC_STD_BSD_API_NAMING
- \brief Defines whether SimpleLink driver should expose standard BSD
- APIs or not
- When defined, the SimpleLink driver in addtion to its alternative
- BSD APIs expose also standard BSD APIs.
- Stadrad BSD API includs the following functions:
- socket , close , accept , bind , listen , connect , select ,
- setsockopt , getsockopt , recv , recvfrom , write , send , sendto ,
- gethostbyname
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_STD_BSD_API_NAMING
- /*!
- \brief Defines whether to include extended API in SimpleLink driver
- or not
- When defined, the SimpleLink driver will include also all
- exteded API of the included packages
- \sa ext_api
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_EXT_API
- /*!
- \brief Defines whether to include WLAN package in SimpleLink driver
- or not
- When defined, the SimpleLink driver will include also
- the WLAN package
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_WLAN_PKG
- /*!
- \brief Defines whether to include SOCKET package in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also
- the SOCKET package
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_SOCKET_PKG
- /*!
- \brief Defines whether to include NET_APP package in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also the
- NET_APP package
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_NET_APP_PKG
- /*!
- \brief Defines whether to include NET_CFG package in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also
- the NET_CFG package
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_NET_CFG_PKG
- /*!
- \brief Defines whether to include NVMEM package in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also the
- NVMEM package
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_NVMEM_PKG
- /*!
- \brief Defines whether to include socket server side APIs
- in SimpleLink driver or not
- When defined, the SimpleLink driver will include also socket
- server side APIs
- \sa server_side
- \note
- \warning
- */
- #define SL_INC_SOCK_SERVER_SIDE_API
- /*!
- \brief Defines whether to include socket client side APIs in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also socket
- client side APIs
- \sa client_side
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_SOCK_CLIENT_SIDE_API
- /*!
- \brief Defines whether to include socket receive APIs in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also socket
- receive side APIs
- \sa recv_api
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_SOCK_RECV_API
- /*!
- \brief Defines whether to include socket send APIs in SimpleLink
- driver or not
- When defined, the SimpleLink driver will include also socket
- send side APIs
- \sa send_api
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_INC_SOCK_SEND_API
- /*!
- Close the Doxygen group.
- @}
- */
- /*!
- ******************************************************************************
- \defgroup ported_enable_device Ported on CC32XX - Device Enable/Disable
- The enable/disable API provide mechanism to enable/disable the network processor
-
- PORTING ACTION:
- - None
- @{
- ******************************************************************************
- */
- /*!
- \brief Preamble to the enabling the Network Processor.
- Placeholder to implement any pre-process operations
- before enabling networking operations.
- \sa sl_DeviceEnable
- \note belongs to \ref ported_sec
- */
- #ifdef DEBUG
- #define sl_DeviceEnablePreamble() NwpPowerOnPreamble()
- #else
- #define sl_DeviceEnablePreamble()
- #endif
- /*!
- \brief Enable the Network Processor
- \sa sl_DeviceDisable
- \note belongs to \ref ported_sec
- */
- #define sl_DeviceEnable() NwpPowerOn()
- /*!
- \brief Disable the Network Processor
- \sa sl_DeviceEnable
- \note belongs to \ref ported_sec
- */
- #define sl_DeviceDisable() NwpPowerOff()
- /*!
- Close the Doxygen group.
- @}
- */
- /*!
- ******************************************************************************
- \defgroup ported_interface Ported on CC32XX - Communication Interface
- The simple link device can work with different communication
- channels (e.g. spi/uart). Texas Instruments provides single driver
- that can work with all these types. This section bind between the
- physical communication interface channel and the SimpleLink driver
- \note Correct and efficient implementation of this driver is critical
- for the performances of the SimpleLink device on this platform.
- PORTING ACTION:
- - None
- @{
- ******************************************************************************
- */
- #define _SlFd_t Fd_t
- /*!
- \brief Opens an interface communication port to be used for communicating
- with a SimpleLink device
- Given an interface name and option flags, this function opens
- the communication port and creates a file descriptor.
- This file descriptor is used afterwards to read and write
- data from and to this specific communication channel.
- The speed, clock polarity, clock phase, chip select and all other
- specific attributes of the channel are all should be set to hardcoded
- in this function.
- \param ifName - points to the interface name/path. The interface name is an
- optional attributes that the simple link driver receives
- on opening the driver (sl_Start).
- In systems that the spi channel is not implemented as
- part of the os device drivers, this parameter could be NULL.
- \param flags - optional flags parameters for future use
- \return upon successful completion, the function shall open the channel
- and return a non-negative integer representing the file descriptor.
- Otherwise, -1 shall be returned
- \sa sl_IfClose , sl_IfRead , sl_IfWrite
- \note The prototype of the function is as follow:
- Fd_t xxx_IfOpen(char* pIfName , unsigned long flags);
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfOpen spi_Open
- /*!
- \brief Closes an opened interface communication port
- \param fd - file descriptor of opened communication channel
- \return upon successful completion, the function shall return 0.
- Otherwise, -1 shall be returned
- \sa sl_IfOpen , sl_IfRead , sl_IfWrite
- \note The prototype of the function is as follow:
- int xxx_IfClose(Fd_t Fd);
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfClose spi_Close
- /*!
- \brief Attempts to read up to len bytes from an opened communication channel
- into a buffer starting at pBuff.
- \param fd - file descriptor of an opened communication channel
- \param pBuff - pointer to the first location of a buffer that contains enough
- space for all expected data
- \param len - number of bytes to read from the communication channel
- \return upon successful completion, the function shall return the number of read bytes.
- Otherwise, 0 shall be returned
- \sa sl_IfClose , sl_IfOpen , sl_IfWrite
- \note The prototype of the function is as follow:
- int xxx_IfRead(Fd_t Fd , char* pBuff , int Len);
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfRead spi_Read
- /*!
- \brief attempts to write up to len bytes to the SPI channel
- \param fd - file descriptor of an opened communication channel
- \param pBuff - pointer to the first location of a buffer that contains
- the data to send over the communication channel
- \param len - number of bytes to write to the communication channel
- \return upon successful completion, the function shall return the number of sent bytes.
- therwise, 0 shall be returned
- \sa sl_IfClose , sl_IfOpen , sl_IfRead
- \note This function could be implemented as zero copy and return only upon successful completion
- of writing the whole buffer, but in cases that memory allocation is not too tight, the
- function could copy the data to internal buffer, return back and complete the write in
- parallel to other activities as long as the other SPI activities would be blocked until
- the entire buffer write would be completed
- The prototype of the function is as follow:
- int xxx_IfWrite(Fd_t Fd , char* pBuff , int Len);
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfWrite spi_Write
- /*!
- \brief register an interrupt handler routine for the host IRQ
- \param InterruptHdl - pointer to interrupt handler routine
- \param pValue - pointer to a memory structure that is passed
- to the interrupt handler.
- \return upon successful registration, the function shall return 0.
- Otherwise, -1 shall be returned
- \sa
- \note If there is already registered interrupt handler, the function
- should overwrite the old handler with the new one
- \note If the handler is a null pointer, the function should un-register the
- interrupt handler, and the interrupts can be disabled.
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfRegIntHdlr(InterruptHdl , pValue) NwpRegisterInterruptHandler(InterruptHdl , pValue)
- /*!
- \brief Masks the Host IRQ
- \sa sl_IfUnMaskIntHdlr
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfMaskIntHdlr() NwpMaskInterrupt()
- /*!
- \brief Unmasks the Host IRQ
- \sa sl_IfMaskIntHdlr
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_IfUnMaskIntHdlr() NwpUnMaskInterrupt()
-
- /*!
- \brief Write Handers for statistics debug on write
- \param interface handler - pointer to interrupt handler routine
- \return no return value
- \sa
- \note An optional hooks for monitoring before and after write info
- \note belongs to \ref ported_sec
- \warning
- */
- /* #define SL_START_WRITE_STAT */
- /*!
- Close the Doxygen group.
- @}
- */
- /*!
- ******************************************************************************
- \defgroup ported_os Ported on CC32XX - Operating System
- The simple link driver can run on multi-threaded environment as well
- as non-os environment (mail loop)
- This section IS NOT REQUIRED in case you are working on non-os environment.
- If you choose to work in multi-threaded environment under any operating system
- you will have to provide some basic adaptation routines to allow the driver
- to protect access to resources from different threads (locking object) and
- to allow synchronization between threads (sync objects).
- PORTING ACTION:
- -# Uncomment SL_PLATFORM_MULTI_THREADED define
- -# Bind locking object routines
- -# Bind synchronization object routines
- -# Optional - Bind spawn thread routine
- @{
- ******************************************************************************
- */
- /*
- #define SL_PLATFORM_MULTI_THREADED
- */
- #ifdef SL_PLATFORM_MULTI_THREADED
- #include "osi.h"
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define SL_OS_RET_CODE_OK ((int)OSI_OK)
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define SL_OS_WAIT_FOREVER ((OsiTime_t)OSI_WAIT_FOREVER)
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define SL_OS_NO_WAIT ((OsiTime_t)OSI_NO_WAIT)
- /*!
- \brief type definition for a time value
- \note On each porting or platform the type could be whatever is needed - integer, pointer to structure etc.
- \note belongs to \ref ported_sec
- */
- #define _SlTime_t OsiTime_t
- /*!
- \brief type definition for a sync object container
- Sync object is object used to synchronize between two threads or thread and interrupt handler.
- One thread is waiting on the object and the other thread send a signal, which then
- release the waiting thread.
- The signal must be able to be sent from interrupt context.
- This object is generally implemented by binary semaphore or events.
- \note On each porting or platform the type could be whatever is needed - integer, structure etc.
- \note belongs to \ref ported_sec
- */
- typedef OsiSyncObj_t _SlSyncObj_t;
- /*!
- \brief This function creates a sync object
- The sync object is used for synchronization between diffrent thread or ISR and
- a thread.
- \param pSyncObj - pointer to the sync object control block
- \return upon successful creation the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_SyncObjCreate(pSyncObj,pName) osi_SyncObjCreate(pSyncObj)
- /*!
- \brief This function deletes a sync object
- \param pSyncObj - pointer to the sync object control block
- \return upon successful deletion the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_SyncObjDelete(pSyncObj) osi_SyncObjDelete(pSyncObj)
- /*!
- \brief This function generates a sync signal for the object.
- All suspended threads waiting on this sync object are resumed
- \param pSyncObj - pointer to the sync object control block
- \return upon successful signaling the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note the function could be called from ISR context
- \warning
- */
- #define sl_SyncObjSignal(pSyncObj) osi_SyncObjSignal(pSyncObj)
- /*!
- \brief This function generates a sync signal for the object from Interrupt
- This is for RTOS that should signal from IRQ using a dedicated API
- \param pSyncObj - pointer to the sync object control block
- \return upon successful signaling the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note the function could be called from ISR context
- \warning
- */
- #define sl_SyncObjSignalFromIRQ(pSyncObj) osi_SyncObjSignalFromISR(pSyncObj)
- /*!
- \brief This function waits for a sync signal of the specific sync object
- \param pSyncObj - pointer to the sync object control block
- \param Timeout - numeric value specifies the maximum number of mSec to
- stay suspended while waiting for the sync signal
- Currently, the simple link driver uses only two values:
- - OSI_WAIT_FOREVER
- - OSI_NO_WAIT
- \return upon successful reception of the signal within the timeout window return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_SyncObjWait(pSyncObj,Timeout) osi_SyncObjWait(pSyncObj,Timeout)
- /*!
- \brief type definition for a locking object container
- Locking object are used to protect a resource from mutual accesses of two or more threads.
- The locking object should suppurt reentrant locks by a signal thread.
- This object is generally implemented by mutex semaphore
- \note On each porting or platform the type could be whatever is needed - integer, structure etc.
- \note belongs to \ref ported_sec
- */
- typedef OsiLockObj_t _SlLockObj_t;
- /*!
- \brief This function creates a locking object.
- The locking object is used for protecting a shared resources between different
- threads.
- \param pLockObj - pointer to the locking object control block
- \return upon successful creation the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_LockObjCreate(pLockObj,pName) osi_LockObjCreate(pLockObj)
- /*!
- \brief This function deletes a locking object.
- \param pLockObj - pointer to the locking object control block
- \return upon successful deletion the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_LockObjDelete(pLockObj) osi_LockObjDelete(pLockObj)
- /*!
- \brief This function locks a locking object.
- All other threads that call this function before this thread calls
- the osi_LockObjUnlock would be suspended
- \param pLockObj - pointer to the locking object control block
- \param Timeout - numeric value specifies the maximum number of mSec to
- stay suspended while waiting for the locking object
- Currently, the simple link driver uses only two values:
- - OSI_WAIT_FOREVER
- - OSI_NO_WAIT
- \return upon successful reception of the locking object the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_LockObjLock(pLockObj,Timeout) osi_LockObjLock(pLockObj,Timeout)
- /*!
- \brief This function unlock a locking object.
- \param pLockObj - pointer to the locking object control block
- \return upon successful unlocking the function should return 0
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_LockObjUnlock(pLockObj) osi_LockObjUnlock(pLockObj)
- #endif
- /*!
- \brief This function call the pEntry callback from a different context
- \param pEntry - pointer to the entry callback function
- \param pValue - pointer to any type of memory structure that would be
- passed to pEntry callback from the execution thread.
- \param flags - execution flags - reserved for future usage
- \return upon successful registration of the spawn the function should return 0
- (the function is not blocked till the end of the execution of the function
- and could be returned before the execution is actually completed)
- Otherwise, a negative value indicating the error code shall be returned
- \note belongs to \ref ported_sec
- \warning
- */
- //#define SL_PLATFORM_EXTERNAL_SPAWN
- #ifdef SL_PLATFORM_EXTERNAL_SPAWN
- #define sl_Spawn(pEntry,pValue,flags) osi_Spawn(pEntry,pValue,flags)
- #endif
- /*!
- Close the Doxygen group.
- @}
- */
- /*!
- ******************************************************************************
- \defgroup porting_mem_mgm Porting - Memory Management
- This section declare in which memory management model the SimpleLink driver
- will run:
- -# Static
- -# Dynamic
- This section IS NOT REQUIRED in case Static model is selected.
- The default memory model is Static
- PORTING ACTION:
- - If dynamic model is selected, define the alloc and free functions.
- @{
- *****************************************************************************
- */
- /*!
- \brief Defines whether the SimpleLink driver is working in dynamic
- memory model or not
- When defined, the SimpleLink driver use dynamic allocations
- if dynamic allocation is selected malloc and free functions
- must be retrieved
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define SL_MEMORY_MGMT_DYNAMIC 1
- #define SL_MEMORY_MGMT_STATIC 0
- #define SL_MEMORY_MGMT SL_MEMORY_MGMT_STATIC
- #ifdef SL_MEMORY_MGMT_DYNAMIC
- #ifdef SL_PLATFORM_MULTI_THREADED
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_Malloc(Size) mem_Malloc(Size)
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_Free(pMem) mem_Free(pMem)
- #else
- #include <stdlib.h>
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_Malloc(Size) malloc(Size)
- /*!
- \brief
- \sa
- \note belongs to \ref ported_sec
- \warning
- */
- #define sl_Free(pMem) free(pMem)
- #endif
- #endif
- /*!
- Close the Doxygen group.
- @}
- */
- /*!
- ******************************************************************************
- \defgroup porting_events Porting - Event Handlers
- This section includes the asynchronous event handlers routines
- PORTING ACTION:
- -Uncomment the required handler and define your routine as the value
- of this handler
- @{
- ******************************************************************************
- */
- /*!
- \brief
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define sl_GeneralEvtHdlr SimpleLinkGeneralEventHandler
- /*!
- \brief An event handler for WLAN connection or disconnection indication
- This event handles async WLAN events.
- Possible events are:
- SL_WLAN_CONNECT_EVENT - indicates WLAN is connected
- SL_WLAN_DISCONNECT_EVENT - indicates WLAN is disconnected
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define sl_WlanEvtHdlr SimpleLinkWlanEventHandler
- /*!
- \brief An event handler for IP address asynchronous event. Usually accepted after new WLAN connection.
- This event handles networking events.
- Possible events are:
- SL_NETAPP_IPV4_ACQUIRED - IP address was acquired (DHCP or Static)
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define sl_NetAppEvtHdlr SimpleLinkNetAppEventHandler
- /*!
- \brief A callback for HTTP server events.
- Possible events are:
- SL_NETAPP_HTTPGETTOKENVALUE - NWP requests to get the value of a specific token
- SL_NETAPP_HTTPPOSTTOKENVALUE - NWP post to the host a new value for a specific token
- \param pServerEvent - Contains the relevant event information (SL_NETAPP_HTTPGETTOKENVALUE or SL_NETAPP_HTTPPOSTTOKENVALUE)
- \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)
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define sl_HttpServerCallback SimpleLinkHttpServerCallback
- /*!
- \brief
- \sa
- \note belongs to \ref porting_sec
- \warning
- */
- #define sl_SockEvtHdlr SimpleLinkSockEventHandler
- #define _SL_USER_TYPES
- #define _u8 unsigned char
- #define _i8 signed char
- #define _u16 unsigned short
- #define _i16 signed short
- #define _u32 unsigned int
- #define _i32 signed int
- #define _volatile volatile
- #define _const const
- /*!
- Close the Doxygen group.
- @}
- */
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- #endif // __USER_H__
|