TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Committer:
dflet
Date:
Fri Sep 11 15:38:33 2015 +0000
Revision:
1:e448e81c416f
Parent:
0:400d8e75a8d0
Removed some debud.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:400d8e75a8d0 1 /*
dflet 0:400d8e75a8d0 2 * nonos.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:400d8e75a8d0 3 *
dflet 0:400d8e75a8d0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:400d8e75a8d0 5 *
dflet 0:400d8e75a8d0 6 *
dflet 0:400d8e75a8d0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:400d8e75a8d0 8 * modification, are permitted provided that the following conditions
dflet 0:400d8e75a8d0 9 * are met:
dflet 0:400d8e75a8d0 10 *
dflet 0:400d8e75a8d0 11 * Redistributions of source code must retain the above copyright
dflet 0:400d8e75a8d0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:400d8e75a8d0 13 *
dflet 0:400d8e75a8d0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:400d8e75a8d0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:400d8e75a8d0 16 * documentation and/or other materials provided with the
dflet 0:400d8e75a8d0 17 * distribution.
dflet 0:400d8e75a8d0 18 *
dflet 0:400d8e75a8d0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:400d8e75a8d0 20 * its contributors may be used to endorse or promote products derived
dflet 0:400d8e75a8d0 21 * from this software without specific prior written permission.
dflet 0:400d8e75a8d0 22 *
dflet 0:400d8e75a8d0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:400d8e75a8d0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:400d8e75a8d0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:400d8e75a8d0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:400d8e75a8d0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:400d8e75a8d0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:400d8e75a8d0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:400d8e75a8d0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:400d8e75a8d0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:400d8e75a8d0 34 *
dflet 0:400d8e75a8d0 35 */
dflet 0:400d8e75a8d0 36
dflet 0:400d8e75a8d0 37 #ifndef NONOS_H_
dflet 0:400d8e75a8d0 38 #define NONOS_H_
dflet 0:400d8e75a8d0 39
dflet 0:400d8e75a8d0 40 #include "cc3100_simplelink.h"
dflet 0:400d8e75a8d0 41
dflet 0:400d8e75a8d0 42 /*****************************************************************************/
dflet 0:400d8e75a8d0 43 /* Macro declarations */
dflet 0:400d8e75a8d0 44 /*****************************************************************************/
dflet 0:400d8e75a8d0 45
dflet 0:400d8e75a8d0 46 #ifndef SL_PLATFORM_MULTI_THREADED
dflet 0:400d8e75a8d0 47
dflet 0:400d8e75a8d0 48 namespace mbed_cc3100 {
dflet 0:400d8e75a8d0 49
dflet 0:400d8e75a8d0 50 /* This function call the user defined function, if defined, from the sync wait loop */
dflet 0:400d8e75a8d0 51 /* The use case of this function is to allow nonos system to call a user function to put the device into sleep */
dflet 0:400d8e75a8d0 52 /* The wake up should be activated after getting an interrupt from the device to Host */
dflet 0:400d8e75a8d0 53 /* The user function must return without blocking to prevent a delay on the event handling */
dflet 0:400d8e75a8d0 54 /*
dflet 0:400d8e75a8d0 55 #define _SlSyncWaitLoopCallback UserSleepFunction
dflet 0:400d8e75a8d0 56 */
dflet 0:400d8e75a8d0 57
dflet 0:400d8e75a8d0 58 const uint8_t NONOS_WAIT_FOREVER = 0xFF;
dflet 0:400d8e75a8d0 59 const uint8_t NONOS_NO_WAIT = 0x00;
dflet 0:400d8e75a8d0 60
dflet 0:400d8e75a8d0 61 const uint8_t NONOS_RET_OK = 0;
dflet 0:400d8e75a8d0 62 const int8_t NONOS_RET_ERR = 0xFF;
dflet 0:400d8e75a8d0 63 //const uint8_t OSI_OK = 0;
dflet 0:400d8e75a8d0 64
dflet 0:400d8e75a8d0 65 const uint8_t NON_OS_SYNC_OBJ_CLEAR_VALUE = 0x11;
dflet 0:400d8e75a8d0 66 const uint8_t NON_OS_SYNC_OBJ_SIGNAL_VALUE = 0x22;
dflet 0:400d8e75a8d0 67 const uint8_t NON_OS_LOCK_OBJ_UNLOCK_VALUE = 0x33;
dflet 0:400d8e75a8d0 68 const uint8_t NON_OS_LOCK_OBJ_LOCK_VALUE = 0x44;
dflet 0:400d8e75a8d0 69
dflet 0:400d8e75a8d0 70 #define _SlTime_t _SlNonOsTime_t
dflet 0:400d8e75a8d0 71
dflet 0:400d8e75a8d0 72 #define _SlSyncObj_t _SlNonOsSemObj_t
dflet 0:400d8e75a8d0 73
dflet 0:400d8e75a8d0 74 #define _SlLockObj_t _SlNonOsSemObj_t
dflet 0:400d8e75a8d0 75
dflet 0:400d8e75a8d0 76 const uint8_t SL_OS_WAIT_FOREVER = NONOS_WAIT_FOREVER;
dflet 0:400d8e75a8d0 77
dflet 0:400d8e75a8d0 78 const uint8_t SL_OS_RET_CODE_OK = NONOS_RET_OK;
dflet 0:400d8e75a8d0 79
dflet 0:400d8e75a8d0 80 const uint8_t SL_OS_NO_WAIT = NONOS_NO_WAIT;
dflet 0:400d8e75a8d0 81
dflet 0:400d8e75a8d0 82
dflet 0:400d8e75a8d0 83 /*****************************************************************************/
dflet 0:400d8e75a8d0 84 /* Function prototypes */
dflet 0:400d8e75a8d0 85 /*****************************************************************************/
dflet 0:400d8e75a8d0 86
dflet 0:400d8e75a8d0 87 /*!
dflet 0:400d8e75a8d0 88 \brief This function creates a sync object
dflet 0:400d8e75a8d0 89
dflet 0:400d8e75a8d0 90 The sync object is used for synchronization between different thread or ISR and
dflet 0:400d8e75a8d0 91 a thread.
dflet 0:400d8e75a8d0 92
dflet 0:400d8e75a8d0 93 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 94
dflet 0:400d8e75a8d0 95 \return upon successful creation the function return 0
dflet 0:400d8e75a8d0 96 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 97 \note
dflet 0:400d8e75a8d0 98 \warning
dflet 0:400d8e75a8d0 99 */
dflet 0:400d8e75a8d0 100 #define _SlNonOsSyncObjCreate(pSyncObj) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_CLEAR_VALUE)
dflet 0:400d8e75a8d0 101
dflet 0:400d8e75a8d0 102 /*!
dflet 0:400d8e75a8d0 103 \brief This function deletes a sync object
dflet 0:400d8e75a8d0 104
dflet 0:400d8e75a8d0 105 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 106
dflet 0:400d8e75a8d0 107 \return upon successful deletion the function should return 0
dflet 0:400d8e75a8d0 108 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 109 \note
dflet 0:400d8e75a8d0 110 \warning
dflet 0:400d8e75a8d0 111 */
dflet 0:400d8e75a8d0 112 #define _SlNonOsSyncObjDelete(pSyncObj) _SlNonOsSemSet(pSyncObj,0)//
dflet 0:400d8e75a8d0 113
dflet 0:400d8e75a8d0 114 /*!
dflet 0:400d8e75a8d0 115 \brief This function generates a sync signal for the object.
dflet 0:400d8e75a8d0 116
dflet 0:400d8e75a8d0 117 All suspended threads waiting on this sync object are resumed
dflet 0:400d8e75a8d0 118
dflet 0:400d8e75a8d0 119 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 120
dflet 0:400d8e75a8d0 121 \return upon successful signaling the function should return 0
dflet 0:400d8e75a8d0 122 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 123 \note the function could be called from ISR context
dflet 0:400d8e75a8d0 124 \warning
dflet 0:400d8e75a8d0 125 */
dflet 0:400d8e75a8d0 126 #define _SlNonOsSyncObjSignal(pSyncObj) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_SIGNAL_VALUE)//
dflet 0:400d8e75a8d0 127
dflet 0:400d8e75a8d0 128 /*!
dflet 0:400d8e75a8d0 129 \brief This function waits for a sync signal of the specific sync object
dflet 0:400d8e75a8d0 130
dflet 0:400d8e75a8d0 131 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 132 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:400d8e75a8d0 133 stay suspended while waiting for the sync signal
dflet 0:400d8e75a8d0 134 Currently, the simple link driver uses only two values:
dflet 0:400d8e75a8d0 135 - NONOS_WAIT_FOREVER
dflet 0:400d8e75a8d0 136 - NONOS_NO_WAIT
dflet 0:400d8e75a8d0 137
dflet 0:400d8e75a8d0 138 \return upon successful reception of the signal within the timeout window return 0
dflet 0:400d8e75a8d0 139 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 140 \note
dflet 0:400d8e75a8d0 141 \warning
dflet 0:400d8e75a8d0 142 */
dflet 0:400d8e75a8d0 143 #define _SlNonOsSyncObjWait(pSyncObj,Timeout) _SlNonOsSemGet(pSyncObj,NON_OS_SYNC_OBJ_SIGNAL_VALUE,NON_OS_SYNC_OBJ_CLEAR_VALUE,Timeout)//
dflet 0:400d8e75a8d0 144
dflet 0:400d8e75a8d0 145 /*!
dflet 0:400d8e75a8d0 146 \brief This function clears a sync object
dflet 0:400d8e75a8d0 147
dflet 0:400d8e75a8d0 148 \param pSyncObj - pointer to the sync object control block
dflet 0:400d8e75a8d0 149
dflet 0:400d8e75a8d0 150 \return upon successful clearing the function should return 0
dflet 0:400d8e75a8d0 151 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 152 \note
dflet 0:400d8e75a8d0 153 \warning
dflet 0:400d8e75a8d0 154 */
dflet 0:400d8e75a8d0 155 #define _SlNonOsSyncObjClear(pSyncObj) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_CLEAR_VALUE)//
dflet 0:400d8e75a8d0 156
dflet 0:400d8e75a8d0 157 /*!
dflet 0:400d8e75a8d0 158 \brief This function creates a locking object.
dflet 0:400d8e75a8d0 159
dflet 0:400d8e75a8d0 160 The locking object is used for protecting a shared resources between different
dflet 0:400d8e75a8d0 161 threads.
dflet 0:400d8e75a8d0 162
dflet 0:400d8e75a8d0 163 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 164
dflet 0:400d8e75a8d0 165 \return upon successful creation the function should return 0
dflet 0:400d8e75a8d0 166 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 167 \note
dflet 0:400d8e75a8d0 168 \warning
dflet 0:400d8e75a8d0 169 */
dflet 0:400d8e75a8d0 170 #define _SlNonOsLockObjCreate(pLockObj) _SlNonOsSemSet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE)
dflet 0:400d8e75a8d0 171
dflet 0:400d8e75a8d0 172 /*!
dflet 0:400d8e75a8d0 173 \brief This function deletes a locking object.
dflet 0:400d8e75a8d0 174
dflet 0:400d8e75a8d0 175 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 176
dflet 0:400d8e75a8d0 177 \return upon successful deletion the function should return 0
dflet 0:400d8e75a8d0 178 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 179 \note
dflet 0:400d8e75a8d0 180 \warning
dflet 0:400d8e75a8d0 181 */
dflet 0:400d8e75a8d0 182 #define _SlNonOsLockObjDelete(pLockObj) _SlNonOsSemSet(pLockObj,0)//
dflet 0:400d8e75a8d0 183
dflet 0:400d8e75a8d0 184 /*!
dflet 0:400d8e75a8d0 185 \brief This function locks a locking object.
dflet 0:400d8e75a8d0 186
dflet 0:400d8e75a8d0 187 All other threads that call this function before this thread calls
dflet 0:400d8e75a8d0 188 the _SlNonOsLockObjUnlock would be suspended
dflet 0:400d8e75a8d0 189
dflet 0:400d8e75a8d0 190 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 191 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:400d8e75a8d0 192 stay suspended while waiting for the locking object
dflet 0:400d8e75a8d0 193 Currently, the simple link driver uses only two values:
dflet 0:400d8e75a8d0 194 - NONOS_WAIT_FOREVER
dflet 0:400d8e75a8d0 195 - NONOS_NO_WAIT
dflet 0:400d8e75a8d0 196
dflet 0:400d8e75a8d0 197
dflet 0:400d8e75a8d0 198 \return upon successful reception of the locking object the function should return 0
dflet 0:400d8e75a8d0 199 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 200 \note
dflet 0:400d8e75a8d0 201 \warning
dflet 0:400d8e75a8d0 202 */
dflet 0:400d8e75a8d0 203 #define _SlNonOsLockObjLock(pLockObj,Timeout) _SlNonOsSemGet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE,NON_OS_LOCK_OBJ_LOCK_VALUE,Timeout)//
dflet 0:400d8e75a8d0 204
dflet 0:400d8e75a8d0 205 /*!
dflet 0:400d8e75a8d0 206 \brief This function unlock a locking object.
dflet 0:400d8e75a8d0 207
dflet 0:400d8e75a8d0 208 \param pLockObj - pointer to the locking object control block
dflet 0:400d8e75a8d0 209
dflet 0:400d8e75a8d0 210 \return upon successful unlocking the function should return 0
dflet 0:400d8e75a8d0 211 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 212 \note
dflet 0:400d8e75a8d0 213 \warning
dflet 0:400d8e75a8d0 214 */
dflet 0:400d8e75a8d0 215 #define _SlNonOsLockObjUnlock(pLockObj) _SlNonOsSemSet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE)//
dflet 0:400d8e75a8d0 216
dflet 0:400d8e75a8d0 217 /*****************************************************************************
dflet 0:400d8e75a8d0 218
dflet 0:400d8e75a8d0 219 Overwrite SimpleLink driver OS adaptation functions
dflet 0:400d8e75a8d0 220
dflet 0:400d8e75a8d0 221
dflet 0:400d8e75a8d0 222 *****************************************************************************/
dflet 0:400d8e75a8d0 223
dflet 0:400d8e75a8d0 224 //class cc3100_nonos _nonos;
dflet 0:400d8e75a8d0 225
dflet 0:400d8e75a8d0 226 #undef sl_SyncObjCreate
dflet 0:400d8e75a8d0 227 #define sl_SyncObjCreate(pSyncObj,pName) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_CLEAR_VALUE)
dflet 0:400d8e75a8d0 228
dflet 0:400d8e75a8d0 229 #undef sl_SyncObjDelete
dflet 0:400d8e75a8d0 230 #define sl_SyncObjDelete(pSyncObj) _SlNonOsSemSet(pSyncObj,0)
dflet 0:400d8e75a8d0 231
dflet 0:400d8e75a8d0 232 #undef sl_SyncObjSignal
dflet 0:400d8e75a8d0 233 #define sl_SyncObjSignal(pSyncObj) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_SIGNAL_VALUE)
dflet 0:400d8e75a8d0 234
dflet 0:400d8e75a8d0 235 #undef sl_SyncObjSignalFromIRQ
dflet 0:400d8e75a8d0 236 #define sl_SyncObjSignalFromIRQ(pSyncObj) _SlNonOsSemSet(pSyncObj,NON_OS_SYNC_OBJ_SIGNAL_VALUE)
dflet 0:400d8e75a8d0 237
dflet 0:400d8e75a8d0 238 #undef sl_SyncObjWait
dflet 0:400d8e75a8d0 239 #define sl_SyncObjWait(pSyncObj,Timeout) _SlNonOsSemGet(pSyncObj,NON_OS_SYNC_OBJ_SIGNAL_VALUE,NON_OS_SYNC_OBJ_CLEAR_VALUE,Timeout)
dflet 0:400d8e75a8d0 240
dflet 0:400d8e75a8d0 241 #undef sl_LockObjCreate
dflet 0:400d8e75a8d0 242 #define sl_LockObjCreate(pLockObj,pName) _SlNonOsSemSet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE)
dflet 0:400d8e75a8d0 243
dflet 0:400d8e75a8d0 244 #undef sl_LockObjDelete
dflet 0:400d8e75a8d0 245 #define sl_LockObjDelete(pLockObj) _SlNonOsSemSet(pLockObj,0)
dflet 0:400d8e75a8d0 246
dflet 0:400d8e75a8d0 247 #undef sl_LockObjLock
dflet 0:400d8e75a8d0 248 #define sl_LockObjLock(pLockObj,Timeout) _SlNonOsSemGet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE,NON_OS_LOCK_OBJ_LOCK_VALUE,Timeout)
dflet 0:400d8e75a8d0 249
dflet 0:400d8e75a8d0 250 #undef sl_LockObjUnlock
dflet 0:400d8e75a8d0 251 #define sl_LockObjUnlock(pLockObj) _SlNonOsSemSet(pLockObj,NON_OS_LOCK_OBJ_UNLOCK_VALUE)
dflet 0:400d8e75a8d0 252 /*
dflet 0:400d8e75a8d0 253 #undef sl_Spawn
dflet 0:400d8e75a8d0 254 #define sl_Spawn(pEntry,pValue,flags) _nonos._SlNonOsSpawn(pEntry,pValue,flags)
dflet 0:400d8e75a8d0 255
dflet 0:400d8e75a8d0 256 #undef _SlTaskEntry
dflet 0:400d8e75a8d0 257 #define _SlTaskEntry _nonos._SlNonOsMainLoopTask
dflet 0:400d8e75a8d0 258 */
dflet 0:400d8e75a8d0 259 /*!
dflet 0:400d8e75a8d0 260 \brief type definition for the return values of this adaptation layer
dflet 0:400d8e75a8d0 261 */
dflet 0:400d8e75a8d0 262 typedef int8_t _SlNonOsRetVal_t;
dflet 0:400d8e75a8d0 263
dflet 0:400d8e75a8d0 264 /*!
dflet 0:400d8e75a8d0 265 \brief type definition for a time value
dflet 0:400d8e75a8d0 266 */
dflet 0:400d8e75a8d0 267 typedef uint8_t _SlNonOsTime_t;
dflet 0:400d8e75a8d0 268
dflet 0:400d8e75a8d0 269 /*!
dflet 0:400d8e75a8d0 270 \brief type definition for a sync object container
dflet 0:400d8e75a8d0 271
dflet 0:400d8e75a8d0 272 Sync object is object used to synchronize between two threads or thread and interrupt handler.
dflet 0:400d8e75a8d0 273 One thread is waiting on the object and the other thread send a signal, which then
dflet 0:400d8e75a8d0 274 release the waiting thread.
dflet 0:400d8e75a8d0 275 The signal must be able to be sent from interrupt context.
dflet 0:400d8e75a8d0 276 This object is generally implemented by binary semaphore or events.
dflet 0:400d8e75a8d0 277 */
dflet 0:400d8e75a8d0 278 typedef uint8_t _SlNonOsSemObj_t;
dflet 0:400d8e75a8d0 279
dflet 0:400d8e75a8d0 280 class cc3100_driver;
dflet 0:400d8e75a8d0 281
dflet 0:400d8e75a8d0 282 class cc3100_nonos
dflet 0:400d8e75a8d0 283 {
dflet 0:400d8e75a8d0 284
dflet 0:400d8e75a8d0 285 public:
dflet 0:400d8e75a8d0 286
dflet 0:400d8e75a8d0 287 cc3100_nonos(cc3100_driver &driver);
dflet 0:400d8e75a8d0 288
dflet 0:400d8e75a8d0 289 ~cc3100_nonos();
dflet 0:400d8e75a8d0 290
dflet 0:400d8e75a8d0 291 /*!
dflet 0:400d8e75a8d0 292 \brief This function call the pEntry callback from a different context
dflet 0:400d8e75a8d0 293
dflet 0:400d8e75a8d0 294 \param pEntry - pointer to the entry callback function
dflet 0:400d8e75a8d0 295
dflet 0:400d8e75a8d0 296 \param pValue - pointer to any type of memory structure that would be
dflet 0:400d8e75a8d0 297 passed to pEntry callback from the execution thread.
dflet 0:400d8e75a8d0 298
dflet 0:400d8e75a8d0 299 \param flags - execution flags - reserved for future usage
dflet 0:400d8e75a8d0 300
dflet 0:400d8e75a8d0 301 \return upon successful registration of the spawn the function return 0
dflet 0:400d8e75a8d0 302 (the function is not blocked till the end of the execution of the function
dflet 0:400d8e75a8d0 303 and could be returned before the execution is actually completed)
dflet 0:400d8e75a8d0 304 Otherwise, a negative value indicating the error code shall be returned
dflet 0:400d8e75a8d0 305 \note
dflet 0:400d8e75a8d0 306 \warning
dflet 0:400d8e75a8d0 307 */
dflet 0:400d8e75a8d0 308 _SlNonOsRetVal_t _SlNonOsSpawn(_SlSpawnEntryFunc_t pEntry , void* pValue , uint32_t flags);
dflet 0:400d8e75a8d0 309
dflet 0:400d8e75a8d0 310
dflet 0:400d8e75a8d0 311 /*!
dflet 0:400d8e75a8d0 312 \brief This function must be called from the main loop in non-os paltforms
dflet 0:400d8e75a8d0 313
dflet 0:400d8e75a8d0 314 \param None
dflet 0:400d8e75a8d0 315
dflet 0:400d8e75a8d0 316 \return 0 - No more activities
dflet 0:400d8e75a8d0 317 1 - Activity still in progress
dflet 0:400d8e75a8d0 318 \note
dflet 0:400d8e75a8d0 319 \warning
dflet 0:400d8e75a8d0 320 */
dflet 0:400d8e75a8d0 321 _SlNonOsRetVal_t _SlNonOsMainLoopTask(void);
dflet 0:400d8e75a8d0 322
dflet 0:400d8e75a8d0 323 _SlNonOsRetVal_t _SlNonOsSemGet(_SlNonOsSemObj_t* pSyncObj, _SlNonOsSemObj_t WaitValue, _SlNonOsSemObj_t SetValue, _SlNonOsTime_t Timeout);
dflet 0:400d8e75a8d0 324 _SlNonOsRetVal_t _SlNonOsSemSet(_SlNonOsSemObj_t* pSemObj , _SlNonOsSemObj_t Value);
dflet 0:400d8e75a8d0 325
dflet 0:400d8e75a8d0 326
dflet 0:400d8e75a8d0 327 #if (defined(_SlSyncWaitLoopCallback))
dflet 0:400d8e75a8d0 328 void _SlSyncWaitLoopCallback(void);
dflet 0:400d8e75a8d0 329 #endif
dflet 0:400d8e75a8d0 330
dflet 0:400d8e75a8d0 331 private:
dflet 0:400d8e75a8d0 332
dflet 0:400d8e75a8d0 333 cc3100_driver &_driver;
dflet 0:400d8e75a8d0 334
dflet 0:400d8e75a8d0 335 };//class
dflet 0:400d8e75a8d0 336
dflet 0:400d8e75a8d0 337 //extern _SlNonOsRetVal_t _SlNonOsSpawn(_SlSpawnEntryFunc_t pEntry , void* pValue , uint32_t flags);
dflet 0:400d8e75a8d0 338
dflet 0:400d8e75a8d0 339 }//namespace mbed_cc3100
dflet 0:400d8e75a8d0 340
dflet 0:400d8e75a8d0 341 #endif /* !SL_PLATFORM_MULTI_THREADED */
dflet 0:400d8e75a8d0 342
dflet 0:400d8e75a8d0 343
dflet 0:400d8e75a8d0 344
dflet 0:400d8e75a8d0 345 #endif
dflet 0:400d8e75a8d0 346