Update revision to use TI's mqtt and Freertos.

Dependencies:   mbed client server

Fork of cc3100_Test_mqtt_CM3 by David Fletcher

Committer:
dflet
Date:
Thu Sep 03 14:02:37 2015 +0000
Revision:
3:a8c249046181
Parent:
0:dbe5e7db3c45
SPI Mode change 1 to 0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:dbe5e7db3c45 1 //*****************************************************************************
dflet 0:dbe5e7db3c45 2 // osi.h
dflet 0:dbe5e7db3c45 3 //
dflet 0:dbe5e7db3c45 4 // MACRO and Function prototypes for TI-RTOS and Free-RTOS API calls
dflet 0:dbe5e7db3c45 5 //
dflet 0:dbe5e7db3c45 6 // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:dbe5e7db3c45 7 //
dflet 0:dbe5e7db3c45 8 //
dflet 0:dbe5e7db3c45 9 // Redistribution and use in source and binary forms, with or without
dflet 0:dbe5e7db3c45 10 // modification, are permitted provided that the following conditions
dflet 0:dbe5e7db3c45 11 // are met:
dflet 0:dbe5e7db3c45 12 //
dflet 0:dbe5e7db3c45 13 // Redistributions of source code must retain the above copyright
dflet 0:dbe5e7db3c45 14 // notice, this list zof conditions and the following disclaimer.
dflet 0:dbe5e7db3c45 15 //
dflet 0:dbe5e7db3c45 16 // Redistributions in binary form must reproduce the above copyright
dflet 0:dbe5e7db3c45 17 // notice, this list of conditions and the following disclaimer in the
dflet 0:dbe5e7db3c45 18 // documentation and/or other materials provided with the
dflet 0:dbe5e7db3c45 19 // distribution.
dflet 0:dbe5e7db3c45 20 //
dflet 0:dbe5e7db3c45 21 // Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:dbe5e7db3c45 22 // its contributors may be used to endorse or promote products derived
dflet 0:dbe5e7db3c45 23 // from this software without specific prior written permission.
dflet 0:dbe5e7db3c45 24 //
dflet 0:dbe5e7db3c45 25 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:dbe5e7db3c45 26 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:dbe5e7db3c45 27 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:dbe5e7db3c45 28 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:dbe5e7db3c45 29 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:dbe5e7db3c45 30 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:dbe5e7db3c45 31 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:dbe5e7db3c45 32 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:dbe5e7db3c45 33 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:dbe5e7db3c45 34 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:dbe5e7db3c45 35 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:dbe5e7db3c45 36 //
dflet 0:dbe5e7db3c45 37 //*****************************************************************************
dflet 0:dbe5e7db3c45 38
dflet 0:dbe5e7db3c45 39 #ifndef __OSI_H__
dflet 0:dbe5e7db3c45 40 #define __OSI_H__
dflet 0:dbe5e7db3c45 41
dflet 0:dbe5e7db3c45 42 #ifdef __cplusplus
dflet 0:dbe5e7db3c45 43 extern "C" {
dflet 0:dbe5e7db3c45 44 #endif
dflet 0:dbe5e7db3c45 45
dflet 0:dbe5e7db3c45 46 #include "portable.h"
dflet 0:dbe5e7db3c45 47
dflet 0:dbe5e7db3c45 48 #define OSI_WAIT_FOREVER (0xFFFFFFFF)
dflet 0:dbe5e7db3c45 49
dflet 0:dbe5e7db3c45 50 #define OSI_NO_WAIT (0)
dflet 0:dbe5e7db3c45 51
dflet 0:dbe5e7db3c45 52 typedef int OsiReturnVal_e;
dflet 0:dbe5e7db3c45 53
dflet 0:dbe5e7db3c45 54 #define OSI_OK (0)
dflet 0:dbe5e7db3c45 55 #define OSI_FAILURE (-1)
dflet 0:dbe5e7db3c45 56 #define OSI_OPERATION_FAILED (-2)
dflet 0:dbe5e7db3c45 57 #define OSI_ABORTED (-3)
dflet 0:dbe5e7db3c45 58 #define OSI_INVALID_PARAMS (-4)
dflet 0:dbe5e7db3c45 59 #define OSI_MEMORY_ALLOCATION_FAILURE (-5)
dflet 0:dbe5e7db3c45 60 #define OSI_TIMEOUT (-6)
dflet 0:dbe5e7db3c45 61 #define OSI_EVENTS_IN_USE (-7)
dflet 0:dbe5e7db3c45 62 #define OSI_EVENT_OPEARTION_FAILURE (-8)
dflet 0:dbe5e7db3c45 63
dflet 0:dbe5e7db3c45 64 /*typedef enum
dflet 0:dbe5e7db3c45 65 {
dflet 0:dbe5e7db3c45 66 OSI_OK = 0,
dflet 0:dbe5e7db3c45 67 OSI_FAILURE = -1,
dflet 0:dbe5e7db3c45 68 OSI_OPERATION_FAILED = -2,
dflet 0:dbe5e7db3c45 69 OSI_ABORTED = -3,
dflet 0:dbe5e7db3c45 70 OSI_INVALID_PARAMS = -4,
dflet 0:dbe5e7db3c45 71 OSI_MEMORY_ALLOCATION_FAILURE = -5,
dflet 0:dbe5e7db3c45 72 OSI_TIMEOUT = -6,
dflet 0:dbe5e7db3c45 73 OSI_EVENTS_IN_USE = -7,
dflet 0:dbe5e7db3c45 74 OSI_EVENT_OPEARTION_FAILURE = -8
dflet 0:dbe5e7db3c45 75 }OsiReturnVal_e;*/
dflet 0:dbe5e7db3c45 76
dflet 0:dbe5e7db3c45 77
dflet 0:dbe5e7db3c45 78 //#define ENTER_CRITICAL_SECTION osi_EnterCritical()
dflet 0:dbe5e7db3c45 79 //#define EXIT_CRITICAL_SECTION osi_ExitCritical()
dflet 0:dbe5e7db3c45 80
dflet 0:dbe5e7db3c45 81 typedef void* OsiMsgQ_t;
dflet 0:dbe5e7db3c45 82
dflet 0:dbe5e7db3c45 83 /*!
dflet 0:dbe5e7db3c45 84 \brief type definition for a time value
dflet 0:dbe5e7db3c45 85
dflet 0:dbe5e7db3c45 86 \note On each porting or platform the type could be whatever is needed - integer, pointer to structure etc.
dflet 0:dbe5e7db3c45 87 */
dflet 0:dbe5e7db3c45 88 typedef uint32_t OsiTime_t;
dflet 0:dbe5e7db3c45 89 //typedef unsigned long OsiTime_t;
dflet 0:dbe5e7db3c45 90 /*!
dflet 0:dbe5e7db3c45 91 \brief type definition for a sync object container
dflet 0:dbe5e7db3c45 92
dflet 0:dbe5e7db3c45 93 Sync object is object used to synchronize between two threads or thread and interrupt handler.
dflet 0:dbe5e7db3c45 94 One thread is waiting on the object and the other thread send a signal, which then
dflet 0:dbe5e7db3c45 95 release the waiting thread.
dflet 0:dbe5e7db3c45 96 The signal must be able to be sent from interrupt context.
dflet 0:dbe5e7db3c45 97 This object is generally implemented by binary semaphore or events.
dflet 0:dbe5e7db3c45 98
dflet 0:dbe5e7db3c45 99 \note On each porting or platform the type could be whatever is needed - integer, structure etc.
dflet 0:dbe5e7db3c45 100 */
dflet 0:dbe5e7db3c45 101 //typedef unsigned int OsiSyncObj_t;
dflet 0:dbe5e7db3c45 102 typedef void * OsiSyncObj_t;
dflet 0:dbe5e7db3c45 103
dflet 0:dbe5e7db3c45 104 /*!
dflet 0:dbe5e7db3c45 105 \brief type definition for a locking object container
dflet 0:dbe5e7db3c45 106
dflet 0:dbe5e7db3c45 107 Locking object are used to protect a resource from mutual accesses of two or more threads.
dflet 0:dbe5e7db3c45 108 The locking object should support re-entrant locks by a signal thread.
dflet 0:dbe5e7db3c45 109 This object is generally implemented by mutex semaphore
dflet 0:dbe5e7db3c45 110
dflet 0:dbe5e7db3c45 111 \note On each porting or platform the type could be whatever is needed - integer, structure etc.
dflet 0:dbe5e7db3c45 112 */
dflet 0:dbe5e7db3c45 113 //typedef unsigned int OsiLockObj_t;
dflet 0:dbe5e7db3c45 114 typedef void * OsiLockObj_t;
dflet 0:dbe5e7db3c45 115
dflet 0:dbe5e7db3c45 116 /*!
dflet 0:dbe5e7db3c45 117 \brief type definition for a spawn entry callback
dflet 0:dbe5e7db3c45 118
dflet 0:dbe5e7db3c45 119 the spawn mechanism enable to run a function on different context.
dflet 0:dbe5e7db3c45 120 This mechanism allow to transfer the execution context from interrupt context to thread context
dflet 0:dbe5e7db3c45 121 or changing the context from an unknown user thread to general context.
dflet 0:dbe5e7db3c45 122 The implementation of the spawn mechanism depends on the user's system requirements and could varies
dflet 0:dbe5e7db3c45 123 from implementation of serialized execution using single thread to creating thread per call
dflet 0:dbe5e7db3c45 124
dflet 0:dbe5e7db3c45 125 \note The stack size of the execution thread must be at least of TBD bytes!
dflet 0:dbe5e7db3c45 126 */
dflet 0:dbe5e7db3c45 127 typedef void (*P_OSI_SPAWN_ENTRY)(void* pValue);
dflet 0:dbe5e7db3c45 128
dflet 0:dbe5e7db3c45 129 typedef void (*P_OSI_EVENT_HANDLER)(void* pValue);
dflet 0:dbe5e7db3c45 130
dflet 0:dbe5e7db3c45 131 typedef void (*P_OSI_TASK_ENTRY)(void* pValue);
dflet 0:dbe5e7db3c45 132
dflet 0:dbe5e7db3c45 133 typedef void (*P_OSI_INTR_ENTRY)(void);
dflet 0:dbe5e7db3c45 134
dflet 0:dbe5e7db3c45 135 typedef void* OsiTaskHandle;
dflet 0:dbe5e7db3c45 136
dflet 0:dbe5e7db3c45 137 /*!
dflet 0:dbe5e7db3c45 138 \brief This function registers an interrupt in NVIC table
dflet 0:dbe5e7db3c45 139
dflet 0:dbe5e7db3c45 140 The sync object is used for synchronization between different thread or ISR and
dflet 0:dbe5e7db3c45 141 a thread.
dflet 0:dbe5e7db3c45 142
dflet 0:dbe5e7db3c45 143 \param iIntrNum - Interrupt number to register
dflet 0:dbe5e7db3c45 144 \param pEntry - Pointer to the interrupt handler
dflet 0:dbe5e7db3c45 145
dflet 0:dbe5e7db3c45 146 \return upon successful creation the function should return 0
dflet 0:dbe5e7db3c45 147 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 148 \note
dflet 0:dbe5e7db3c45 149 \warning
dflet 0:dbe5e7db3c45 150 */
dflet 0:dbe5e7db3c45 151 OsiReturnVal_e osi_InterruptRegister(int iIntrNum,P_OSI_INTR_ENTRY pEntry,unsigned char ucPriority);
dflet 0:dbe5e7db3c45 152
dflet 0:dbe5e7db3c45 153 /*!
dflet 0:dbe5e7db3c45 154 \brief This function De-registers an interrupt in NVIC table
dflet 0:dbe5e7db3c45 155
dflet 0:dbe5e7db3c45 156 \param iIntrNum - Interrupt number to register
dflet 0:dbe5e7db3c45 157 \param pEntry - Pointer to the interrupt handler
dflet 0:dbe5e7db3c45 158
dflet 0:dbe5e7db3c45 159 \return upon successful creation the function should return Positive number
dflet 0:dbe5e7db3c45 160 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 161 \note
dflet 0:dbe5e7db3c45 162 \warning
dflet 0:dbe5e7db3c45 163 */
dflet 0:dbe5e7db3c45 164 void osi_InterruptDeRegister(int iIntrNum);
dflet 0:dbe5e7db3c45 165
dflet 0:dbe5e7db3c45 166
dflet 0:dbe5e7db3c45 167 /*!
dflet 0:dbe5e7db3c45 168 \brief This function creates a sync object
dflet 0:dbe5e7db3c45 169
dflet 0:dbe5e7db3c45 170 The sync object is used for synchronization between different thread or ISR and
dflet 0:dbe5e7db3c45 171 a thread.
dflet 0:dbe5e7db3c45 172
dflet 0:dbe5e7db3c45 173 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 174
dflet 0:dbe5e7db3c45 175 \return upon successful creation the function should return 0
dflet 0:dbe5e7db3c45 176 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 177 \note
dflet 0:dbe5e7db3c45 178 \warning
dflet 0:dbe5e7db3c45 179 */
dflet 0:dbe5e7db3c45 180 OsiReturnVal_e osi_SyncObjCreate(OsiSyncObj_t* pSyncObj);
dflet 0:dbe5e7db3c45 181
dflet 0:dbe5e7db3c45 182
dflet 0:dbe5e7db3c45 183 /*!
dflet 0:dbe5e7db3c45 184 \brief This function deletes a sync object
dflet 0:dbe5e7db3c45 185
dflet 0:dbe5e7db3c45 186 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 187
dflet 0:dbe5e7db3c45 188 \return upon successful deletion the function should return 0
dflet 0:dbe5e7db3c45 189 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 190 \note
dflet 0:dbe5e7db3c45 191 \warning
dflet 0:dbe5e7db3c45 192 */
dflet 0:dbe5e7db3c45 193 OsiReturnVal_e osi_SyncObjDelete(OsiSyncObj_t* pSyncObj);
dflet 0:dbe5e7db3c45 194
dflet 0:dbe5e7db3c45 195 /*!
dflet 0:dbe5e7db3c45 196 \brief This function generates a sync signal for the object.
dflet 0:dbe5e7db3c45 197
dflet 0:dbe5e7db3c45 198 All suspended threads waiting on this sync object are resumed
dflet 0:dbe5e7db3c45 199
dflet 0:dbe5e7db3c45 200 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 201
dflet 0:dbe5e7db3c45 202 \return upon successful signalling the function should return 0
dflet 0:dbe5e7db3c45 203 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 204 \note the function could be called from ISR context
dflet 0:dbe5e7db3c45 205 \warning
dflet 0:dbe5e7db3c45 206 */
dflet 0:dbe5e7db3c45 207 OsiReturnVal_e osi_SyncObjSignal(OsiSyncObj_t* pSyncObj);
dflet 0:dbe5e7db3c45 208
dflet 0:dbe5e7db3c45 209 /*!
dflet 0:dbe5e7db3c45 210 \brief This function generates a sync signal for the object.
dflet 0:dbe5e7db3c45 211 from ISR context.
dflet 0:dbe5e7db3c45 212
dflet 0:dbe5e7db3c45 213 All suspended threads waiting on this sync object are resumed
dflet 0:dbe5e7db3c45 214
dflet 0:dbe5e7db3c45 215 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 216
dflet 0:dbe5e7db3c45 217 \return upon successful signalling the function should return 0
dflet 0:dbe5e7db3c45 218 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 219 \note the function is called from ISR context
dflet 0:dbe5e7db3c45 220 \warning
dflet 0:dbe5e7db3c45 221 */
dflet 0:dbe5e7db3c45 222 OsiReturnVal_e osi_SyncObjSignalFromISR(OsiSyncObj_t* pSyncObj);
dflet 0:dbe5e7db3c45 223
dflet 0:dbe5e7db3c45 224 /*!
dflet 0:dbe5e7db3c45 225 \brief This function waits for a sync signal of the specific sync object
dflet 0:dbe5e7db3c45 226
dflet 0:dbe5e7db3c45 227 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 228 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:dbe5e7db3c45 229 stay suspended while waiting for the sync signal
dflet 0:dbe5e7db3c45 230 Currently, the simple link driver uses only two values:
dflet 0:dbe5e7db3c45 231 - OSI_WAIT_FOREVER
dflet 0:dbe5e7db3c45 232 - OSI_NO_WAIT
dflet 0:dbe5e7db3c45 233
dflet 0:dbe5e7db3c45 234 \return upon successful reception of the signal within the timeout window return 0
dflet 0:dbe5e7db3c45 235 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 236 \note
dflet 0:dbe5e7db3c45 237 \warning
dflet 0:dbe5e7db3c45 238 */
dflet 0:dbe5e7db3c45 239 OsiReturnVal_e osi_SyncObjWait(OsiSyncObj_t* pSyncObj , OsiTime_t Timeout);
dflet 0:dbe5e7db3c45 240
dflet 0:dbe5e7db3c45 241 /*!
dflet 0:dbe5e7db3c45 242 \brief This function clears a sync object
dflet 0:dbe5e7db3c45 243
dflet 0:dbe5e7db3c45 244 \param pSyncObj - pointer to the sync object control block
dflet 0:dbe5e7db3c45 245
dflet 0:dbe5e7db3c45 246 \return upon successful clearing the function should return 0
dflet 0:dbe5e7db3c45 247 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 248 \note
dflet 0:dbe5e7db3c45 249 \warning
dflet 0:dbe5e7db3c45 250 */
dflet 0:dbe5e7db3c45 251 OsiReturnVal_e osi_SyncObjClear(OsiSyncObj_t* pSyncObj);
dflet 0:dbe5e7db3c45 252
dflet 0:dbe5e7db3c45 253 /*!
dflet 0:dbe5e7db3c45 254 \brief This function creates a locking object.
dflet 0:dbe5e7db3c45 255
dflet 0:dbe5e7db3c45 256 The locking object is used for protecting a shared resources between different
dflet 0:dbe5e7db3c45 257 threads.
dflet 0:dbe5e7db3c45 258
dflet 0:dbe5e7db3c45 259 \param pLockObj - pointer to the locking object control block
dflet 0:dbe5e7db3c45 260
dflet 0:dbe5e7db3c45 261 \return upon successful creation the function should return 0
dflet 0:dbe5e7db3c45 262 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 263 \note
dflet 0:dbe5e7db3c45 264 \warning
dflet 0:dbe5e7db3c45 265 */
dflet 0:dbe5e7db3c45 266 OsiReturnVal_e osi_LockObjCreate(OsiLockObj_t* pLockObj);
dflet 0:dbe5e7db3c45 267
dflet 0:dbe5e7db3c45 268 /*!
dflet 0:dbe5e7db3c45 269 \brief This function deletes a locking object.
dflet 0:dbe5e7db3c45 270
dflet 0:dbe5e7db3c45 271 \param pLockObj - pointer to the locking object control block
dflet 0:dbe5e7db3c45 272
dflet 0:dbe5e7db3c45 273 \return upon successful deletion the function should return 0
dflet 0:dbe5e7db3c45 274 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 275 \note
dflet 0:dbe5e7db3c45 276 \warning
dflet 0:dbe5e7db3c45 277 */
dflet 0:dbe5e7db3c45 278 OsiReturnVal_e osi_LockObjDelete(OsiLockObj_t* pLockObj);
dflet 0:dbe5e7db3c45 279
dflet 0:dbe5e7db3c45 280 /*!
dflet 0:dbe5e7db3c45 281 \brief This function locks a locking object.
dflet 0:dbe5e7db3c45 282
dflet 0:dbe5e7db3c45 283 All other threads that call this function before this thread calls
dflet 0:dbe5e7db3c45 284 the osi_LockObjUnlock would be suspended
dflet 0:dbe5e7db3c45 285
dflet 0:dbe5e7db3c45 286 \param pLockObj - pointer to the locking object control block
dflet 0:dbe5e7db3c45 287 \param Timeout - numeric value specifies the maximum number of mSec to
dflet 0:dbe5e7db3c45 288 stay suspended while waiting for the locking object
dflet 0:dbe5e7db3c45 289 Currently, the simple link driver uses only two values:
dflet 0:dbe5e7db3c45 290 - OSI_WAIT_FOREVER
dflet 0:dbe5e7db3c45 291 - OSI_NO_WAIT
dflet 0:dbe5e7db3c45 292
dflet 0:dbe5e7db3c45 293
dflet 0:dbe5e7db3c45 294 \return upon successful reception of the locking object the function should return 0
dflet 0:dbe5e7db3c45 295 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 296 \note
dflet 0:dbe5e7db3c45 297 \warning
dflet 0:dbe5e7db3c45 298 */
dflet 0:dbe5e7db3c45 299 OsiReturnVal_e osi_LockObjLock(OsiLockObj_t* pLockObj , OsiTime_t Timeout);
dflet 0:dbe5e7db3c45 300
dflet 0:dbe5e7db3c45 301 /*!
dflet 0:dbe5e7db3c45 302 \brief This function unlock a locking object.
dflet 0:dbe5e7db3c45 303
dflet 0:dbe5e7db3c45 304 \param pLockObj - pointer to the locking object control block
dflet 0:dbe5e7db3c45 305
dflet 0:dbe5e7db3c45 306 \return upon successful unlocking the function should return 0
dflet 0:dbe5e7db3c45 307 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 308 \note
dflet 0:dbe5e7db3c45 309 \warning
dflet 0:dbe5e7db3c45 310 */
dflet 0:dbe5e7db3c45 311 OsiReturnVal_e osi_LockObjUnlock(OsiLockObj_t* pLockObj);
dflet 0:dbe5e7db3c45 312
dflet 0:dbe5e7db3c45 313
dflet 0:dbe5e7db3c45 314 /*!
dflet 0:dbe5e7db3c45 315 \brief This function call the pEntry callback from a different context
dflet 0:dbe5e7db3c45 316
dflet 0:dbe5e7db3c45 317 \param pEntry - pointer to the entry callback function
dflet 0:dbe5e7db3c45 318
dflet 0:dbe5e7db3c45 319 \param pValue - pointer to any type of memory structure that would be
dflet 0:dbe5e7db3c45 320 passed to pEntry callback from the execution thread.
dflet 0:dbe5e7db3c45 321
dflet 0:dbe5e7db3c45 322 \param flags - execution flags - reserved for future usage
dflet 0:dbe5e7db3c45 323
dflet 0:dbe5e7db3c45 324 \return upon successful registration of the spawn the function should return 0
dflet 0:dbe5e7db3c45 325 (the function is not blocked till the end of the execution of the function
dflet 0:dbe5e7db3c45 326 and could be returned before the execution is actually completed)
dflet 0:dbe5e7db3c45 327 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 328 \note
dflet 0:dbe5e7db3c45 329 \warning
dflet 0:dbe5e7db3c45 330 */
dflet 0:dbe5e7db3c45 331 /*!
dflet 0:dbe5e7db3c45 332 \brief This function creates a Task.
dflet 0:dbe5e7db3c45 333
dflet 0:dbe5e7db3c45 334 Creates a new Task and add it to the last of tasks that are ready to run
dflet 0:dbe5e7db3c45 335
dflet 0:dbe5e7db3c45 336 \param pEntry - pointer to the Task Function
dflet 0:dbe5e7db3c45 337 \param pcName - Task Name String
dflet 0:dbe5e7db3c45 338 \param usStackDepth - Stack Size Stack Size in 32-bit long words
dflet 0:dbe5e7db3c45 339 \param pvParameters - pointer to structure to be passed to the Task Function
dflet 0:dbe5e7db3c45 340 \param uxPriority - Task Priority
dflet 0:dbe5e7db3c45 341
dflet 0:dbe5e7db3c45 342 \return upon successful unlocking the function should return 0
dflet 0:dbe5e7db3c45 343 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 344 \note
dflet 0:dbe5e7db3c45 345 \warning
dflet 0:dbe5e7db3c45 346 */
dflet 0:dbe5e7db3c45 347 OsiReturnVal_e osi_TaskCreate(P_OSI_TASK_ENTRY pEntry,const signed char * const pcName,unsigned short usStackDepth,void *pvParameters,uint32_t uxPriority,OsiTaskHandle *pTaskHandle);
dflet 0:dbe5e7db3c45 348
dflet 0:dbe5e7db3c45 349 /*!
dflet 0:dbe5e7db3c45 350 \brief This function Deletes a Task.
dflet 0:dbe5e7db3c45 351
dflet 0:dbe5e7db3c45 352 Deletes a Task and remove it from list of running task
dflet 0:dbe5e7db3c45 353
dflet 0:dbe5e7db3c45 354 \param pTaskHandle - Task Handle
dflet 0:dbe5e7db3c45 355
dflet 0:dbe5e7db3c45 356 \note
dflet 0:dbe5e7db3c45 357 \warning
dflet 0:dbe5e7db3c45 358 */
dflet 0:dbe5e7db3c45 359 void osi_TaskDelete(OsiTaskHandle* pTaskHandle);
dflet 0:dbe5e7db3c45 360
dflet 0:dbe5e7db3c45 361 /*!
dflet 0:dbe5e7db3c45 362 \brief This function call the pEntry callback from a different context
dflet 0:dbe5e7db3c45 363
dflet 0:dbe5e7db3c45 364 \param pEntry - pointer to the entry callback function
dflet 0:dbe5e7db3c45 365
dflet 0:dbe5e7db3c45 366 \param pValue - pointer to any type of memory structure that would be
dflet 0:dbe5e7db3c45 367 passed to pEntry callback from the execution thread.
dflet 0:dbe5e7db3c45 368
dflet 0:dbe5e7db3c45 369 \param flags - execution flags - reserved for future usage
dflet 0:dbe5e7db3c45 370
dflet 0:dbe5e7db3c45 371 \return upon successful registration of the spawn the function should return 0
dflet 0:dbe5e7db3c45 372 (the function is not blocked till the end of the execution of the function
dflet 0:dbe5e7db3c45 373 and could be returned before the execution is actually completed)
dflet 0:dbe5e7db3c45 374 Otherwise, a negative value indicating the error code shall be returned
dflet 0:dbe5e7db3c45 375 \note
dflet 0:dbe5e7db3c45 376 \warning
dflet 0:dbe5e7db3c45 377 */
dflet 0:dbe5e7db3c45 378 OsiReturnVal_e osi_Spawn(P_OSI_SPAWN_ENTRY pEntry , void* pValue , uint32_t flags);
dflet 0:dbe5e7db3c45 379
dflet 0:dbe5e7db3c45 380
dflet 0:dbe5e7db3c45 381 /*******************************************************************************
dflet 0:dbe5e7db3c45 382
dflet 0:dbe5e7db3c45 383 This function creates a message queue that is typically used for inter thread
dflet 0:dbe5e7db3c45 384 communication.
dflet 0:dbe5e7db3c45 385
dflet 0:dbe5e7db3c45 386 Parameters:
dflet 0:dbe5e7db3c45 387
dflet 0:dbe5e7db3c45 388 pMsgQ - pointer to the message queue control block
dflet 0:dbe5e7db3c45 389 pMsgQName - pointer to the name of the message queue
dflet 0:dbe5e7db3c45 390 MsgSize - the size of the message.
dflet 0:dbe5e7db3c45 391
dflet 0:dbe5e7db3c45 392 NOTICE: THE MESSGAE SIZE MUST BE SMALLER THAN 16
dflet 0:dbe5e7db3c45 393
dflet 0:dbe5e7db3c45 394 MaxMsgs - maximum number of messages.
dflet 0:dbe5e7db3c45 395
dflet 0:dbe5e7db3c45 396 Please note that this function allocates the entire memory required
dflet 0:dbe5e7db3c45 397 for the maximum number of messages (MsgSize * MaxMsgs).
dflet 0:dbe5e7db3c45 398
dflet 0:dbe5e7db3c45 399 ********************************************************************************/
dflet 0:dbe5e7db3c45 400 OsiReturnVal_e osi_MsgQCreate(OsiMsgQ_t* pMsgQ ,
dflet 0:dbe5e7db3c45 401 char* pMsgQName,
dflet 0:dbe5e7db3c45 402 uint32_t MsgSize,
dflet 0:dbe5e7db3c45 403 uint32_t MaxMsgs);
dflet 0:dbe5e7db3c45 404
dflet 0:dbe5e7db3c45 405 /*******************************************************************************
dflet 0:dbe5e7db3c45 406
dflet 0:dbe5e7db3c45 407 This function deletes a specific message queue.
dflet 0:dbe5e7db3c45 408 All threads suspended waiting for a message from this queue are resumed with
dflet 0:dbe5e7db3c45 409 an error return value.
dflet 0:dbe5e7db3c45 410
dflet 0:dbe5e7db3c45 411 Parameters:
dflet 0:dbe5e7db3c45 412
dflet 0:dbe5e7db3c45 413 pMsgQ - pointer to the message queue control block
dflet 0:dbe5e7db3c45 414
dflet 0:dbe5e7db3c45 415 ********************************************************************************/
dflet 0:dbe5e7db3c45 416 OsiReturnVal_e osi_MsgQDelete(OsiMsgQ_t* pMsgQ);
dflet 0:dbe5e7db3c45 417
dflet 0:dbe5e7db3c45 418
dflet 0:dbe5e7db3c45 419 /*******************************************************************************
dflet 0:dbe5e7db3c45 420
dflet 0:dbe5e7db3c45 421 This function writes a message to a specific message queue.
dflet 0:dbe5e7db3c45 422
dflet 0:dbe5e7db3c45 423 Notice that the message is copied to the queue from the memory area specified
dflet 0:dbe5e7db3c45 424 by pMsg pointer.
dflet 0:dbe5e7db3c45 425
dflet 0:dbe5e7db3c45 426 --------------------------------------------------------------------------------
dflet 0:dbe5e7db3c45 427 THIS FUNCTION COULD BE CALLED FROM ISR AS LONG AS THE TIMEOUT PARAMETER IS
dflet 0:dbe5e7db3c45 428 SET TO "OSI_NO_WAIT"
dflet 0:dbe5e7db3c45 429 --------------------------------------------------------------------------------
dflet 0:dbe5e7db3c45 430
dflet 0:dbe5e7db3c45 431 Parameters:
dflet 0:dbe5e7db3c45 432
dflet 0:dbe5e7db3c45 433 pMsgQ - pointer to the message queue control block
dflet 0:dbe5e7db3c45 434 pMsg - pointer to the message
dflet 0:dbe5e7db3c45 435 Timeout - numeric value specifies the maximum number of mSec to stay
dflet 0:dbe5e7db3c45 436 suspended while waiting for available space for the message
dflet 0:dbe5e7db3c45 437
dflet 0:dbe5e7db3c45 438 ********************************************************************************/
dflet 0:dbe5e7db3c45 439 OsiReturnVal_e osi_MsgQWrite(OsiMsgQ_t* pMsgQ, void* pMsg , OsiTime_t Timeout);
dflet 0:dbe5e7db3c45 440
dflet 0:dbe5e7db3c45 441
dflet 0:dbe5e7db3c45 442 /*******************************************************************************
dflet 0:dbe5e7db3c45 443
dflet 0:dbe5e7db3c45 444 This function retrieves a message from the specified message queue. The
dflet 0:dbe5e7db3c45 445 retrieved message is copied from the queue into the memory area specified by
dflet 0:dbe5e7db3c45 446 the pMsg pointer
dflet 0:dbe5e7db3c45 447
dflet 0:dbe5e7db3c45 448 Parameters:
dflet 0:dbe5e7db3c45 449
dflet 0:dbe5e7db3c45 450 pMsgQ - pointer to the message queue control block
dflet 0:dbe5e7db3c45 451 pMsg - pointer that specify the location where to copy the message
dflet 0:dbe5e7db3c45 452 Timeout - numeric value specifies the maximum number of mSec to stay
dflet 0:dbe5e7db3c45 453 suspended while waiting for a message to be available
dflet 0:dbe5e7db3c45 454
dflet 0:dbe5e7db3c45 455 ********************************************************************************/
dflet 0:dbe5e7db3c45 456 OsiReturnVal_e osi_MsgQRead(OsiMsgQ_t* pMsgQ, void* pMsg , OsiTime_t Timeout);
dflet 0:dbe5e7db3c45 457
dflet 0:dbe5e7db3c45 458 /*!
dflet 0:dbe5e7db3c45 459 \brief This function starts the OS Scheduler
dflet 0:dbe5e7db3c45 460 \param - void
dflet 0:dbe5e7db3c45 461 \return - void
dflet 0:dbe5e7db3c45 462 \note
dflet 0:dbe5e7db3c45 463 \warning
dflet 0:dbe5e7db3c45 464 */
dflet 0:dbe5e7db3c45 465 void osi_start();
dflet 0:dbe5e7db3c45 466
dflet 0:dbe5e7db3c45 467 /*!
dflet 0:dbe5e7db3c45 468 \brief Allocates Memory on Heap
dflet 0:dbe5e7db3c45 469 \param Size - Size of the Buffer to be allocated
dflet 0:dbe5e7db3c45 470 \sa
dflet 0:dbe5e7db3c45 471 \note
dflet 0:dbe5e7db3c45 472 \warning
dflet 0:dbe5e7db3c45 473 */
dflet 0:dbe5e7db3c45 474 void * mem_Malloc(uint32_t Size);
dflet 0:dbe5e7db3c45 475
dflet 0:dbe5e7db3c45 476
dflet 0:dbe5e7db3c45 477 /*!
dflet 0:dbe5e7db3c45 478 \brief Deallocates Memory
dflet 0:dbe5e7db3c45 479 \param pMem - Pointer to the Buffer to be freed
dflet 0:dbe5e7db3c45 480 \return void
dflet 0:dbe5e7db3c45 481 \sa
dflet 0:dbe5e7db3c45 482 \note
dflet 0:dbe5e7db3c45 483 \warning
dflet 0:dbe5e7db3c45 484 */
dflet 0:dbe5e7db3c45 485 void mem_Free(void *pMem);
dflet 0:dbe5e7db3c45 486
dflet 0:dbe5e7db3c45 487
dflet 0:dbe5e7db3c45 488 /*!
dflet 0:dbe5e7db3c45 489 \brief Set Memory
dflet 0:dbe5e7db3c45 490 \param pBuf - Pointer to the Buffer
dflet 0:dbe5e7db3c45 491 \param Val - Value to be set
dflet 0:dbe5e7db3c45 492 \param Size - Size of the memory to be set
dflet 0:dbe5e7db3c45 493 \sa
dflet 0:dbe5e7db3c45 494 \note
dflet 0:dbe5e7db3c45 495 \warning
dflet 0:dbe5e7db3c45 496 */
dflet 0:dbe5e7db3c45 497 void mem_set(void *pBuf,int Val,size_t Size);
dflet 0:dbe5e7db3c45 498
dflet 0:dbe5e7db3c45 499 /*!
dflet 0:dbe5e7db3c45 500 \brief Copy Memory
dflet 0:dbe5e7db3c45 501 \param pDst - Pointer to the Destination Buffer
dflet 0:dbe5e7db3c45 502 \param pSrc - Pointer to the Source Buffer
dflet 0:dbe5e7db3c45 503 \param Size - Size of the memory to be copied
dflet 0:dbe5e7db3c45 504 \return void
dflet 0:dbe5e7db3c45 505 \note
dflet 0:dbe5e7db3c45 506 \warning
dflet 0:dbe5e7db3c45 507 */
dflet 0:dbe5e7db3c45 508 void mem_copy(void *pDst, void *pSrc,size_t Size);
dflet 0:dbe5e7db3c45 509
dflet 0:dbe5e7db3c45 510 /*!
dflet 0:dbe5e7db3c45 511 \brief Enter Critical Section
dflet 0:dbe5e7db3c45 512 \sa
dflet 0:dbe5e7db3c45 513 \note
dflet 0:dbe5e7db3c45 514 \warning
dflet 0:dbe5e7db3c45 515 */
dflet 0:dbe5e7db3c45 516 uint32_t osi_EnterCritical(void);
dflet 0:dbe5e7db3c45 517
dflet 0:dbe5e7db3c45 518 /*!
dflet 0:dbe5e7db3c45 519 \brief Exit Critical Section
dflet 0:dbe5e7db3c45 520 \sa
dflet 0:dbe5e7db3c45 521 \note
dflet 0:dbe5e7db3c45 522 \warning
dflet 0:dbe5e7db3c45 523 */
dflet 0:dbe5e7db3c45 524 void osi_ExitCritical(uint32_t ulKey);
dflet 0:dbe5e7db3c45 525
dflet 0:dbe5e7db3c45 526 /*!
dflet 0:dbe5e7db3c45 527 \brief This function used to save the os context before sleep
dflet 0:dbe5e7db3c45 528 \param void
dflet 0:dbe5e7db3c45 529 \return void
dflet 0:dbe5e7db3c45 530 \note
dflet 0:dbe5e7db3c45 531 \warning
dflet 0:dbe5e7db3c45 532 */
dflet 0:dbe5e7db3c45 533 void osi_ContextSave();
dflet 0:dbe5e7db3c45 534 /*!
dflet 0:dbe5e7db3c45 535 \brief This function used to retrieve the context after sleep
dflet 0:dbe5e7db3c45 536 \param void
dflet 0:dbe5e7db3c45 537 \return void
dflet 0:dbe5e7db3c45 538 \note
dflet 0:dbe5e7db3c45 539 \warning
dflet 0:dbe5e7db3c45 540 */
dflet 0:dbe5e7db3c45 541 void osi_ContextRestore();
dflet 0:dbe5e7db3c45 542
dflet 0:dbe5e7db3c45 543 /*!
dflet 0:dbe5e7db3c45 544 \brief This function used to suspend the task for the specified number of milli secs
dflet 0:dbe5e7db3c45 545 \param MilliSecs - Time in millisecs to suspend the task
dflet 0:dbe5e7db3c45 546 \return void
dflet 0:dbe5e7db3c45 547 \note
dflet 0:dbe5e7db3c45 548 \warning
dflet 0:dbe5e7db3c45 549 */
dflet 0:dbe5e7db3c45 550 void osi_Sleep(unsigned int MilliSecs);
dflet 0:dbe5e7db3c45 551
dflet 0:dbe5e7db3c45 552 /*!
dflet 0:dbe5e7db3c45 553 \brief This function used to disable the tasks
dflet 0:dbe5e7db3c45 554 \param - void
dflet 0:dbe5e7db3c45 555 \return - Key with the suspended tasks
dflet 0:dbe5e7db3c45 556 \note
dflet 0:dbe5e7db3c45 557 \warning
dflet 0:dbe5e7db3c45 558 */
dflet 0:dbe5e7db3c45 559 uint32_t osi_TaskDisable(void);
dflet 0:dbe5e7db3c45 560
dflet 0:dbe5e7db3c45 561 /*!
dflet 0:dbe5e7db3c45 562 \brief This function used to enable all tasks
dflet 0:dbe5e7db3c45 563 \param unsigned long
dflet 0:dbe5e7db3c45 564 \return - void
dflet 0:dbe5e7db3c45 565 \note
dflet 0:dbe5e7db3c45 566 \warning
dflet 0:dbe5e7db3c45 567 */
dflet 0:dbe5e7db3c45 568 void osi_TaskEnable(uint32_t);
dflet 0:dbe5e7db3c45 569 /*!
dflet 0:dbe5e7db3c45 570 \brief structure definition for simple link spawn message
dflet 0:dbe5e7db3c45 571
dflet 0:dbe5e7db3c45 572 \note On each porting or platform the type could be whatever is needed - integer, pointer to structure etc.
dflet 0:dbe5e7db3c45 573 */
dflet 0:dbe5e7db3c45 574
dflet 0:dbe5e7db3c45 575 typedef struct
dflet 0:dbe5e7db3c45 576 {
dflet 0:dbe5e7db3c45 577 P_OSI_SPAWN_ENTRY pEntry;
dflet 0:dbe5e7db3c45 578 void* pValue;
dflet 0:dbe5e7db3c45 579 }tSimpleLinkSpawnMsg;
dflet 0:dbe5e7db3c45 580
dflet 0:dbe5e7db3c45 581 /* The queue used to send message to simple link spawn task. */
dflet 0:dbe5e7db3c45 582 extern void* xSimpleLinkSpawnQueue;
dflet 0:dbe5e7db3c45 583
dflet 0:dbe5e7db3c45 584 /* API for SL Task*/
dflet 0:dbe5e7db3c45 585 OsiReturnVal_e VStartSimpleLinkSpawnTask(unsigned portBASE_TYPE uxPriority);
dflet 0:dbe5e7db3c45 586 void VDeleteSimpleLinkSpawnTask( void );
dflet 0:dbe5e7db3c45 587
dflet 0:dbe5e7db3c45 588
dflet 0:dbe5e7db3c45 589
dflet 0:dbe5e7db3c45 590 #ifdef __cplusplus
dflet 0:dbe5e7db3c45 591 }
dflet 0:dbe5e7db3c45 592 #endif // __cplusplus
dflet 0:dbe5e7db3c45 593
dflet 0:dbe5e7db3c45 594 #endif
dflet 0:dbe5e7db3c45 595