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