The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_KW41Z/TOOLCHAIN_ARM_STD/fsl_os_abstraction.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 172:65be27845400 | 1 | /*! |
AnnaBridge | 172:65be27845400 | 2 | * Copyright (c) 2015, Freescale Semiconductor, Inc. |
AnnaBridge | 172:65be27845400 | 3 | * Copyright 2016-2017 NXP |
AnnaBridge | 172:65be27845400 | 4 | * |
AnnaBridge | 172:65be27845400 | 5 | * \file |
AnnaBridge | 172:65be27845400 | 6 | * |
AnnaBridge | 172:65be27845400 | 7 | * Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 172:65be27845400 | 8 | * are permitted provided that the following conditions are met: |
AnnaBridge | 172:65be27845400 | 9 | * |
AnnaBridge | 172:65be27845400 | 10 | * o Redistributions of source code must retain the above copyright notice, this list |
AnnaBridge | 172:65be27845400 | 11 | * of conditions and the following disclaimer. |
AnnaBridge | 172:65be27845400 | 12 | * |
AnnaBridge | 172:65be27845400 | 13 | * o Redistributions in binary form must reproduce the above copyright notice, this |
AnnaBridge | 172:65be27845400 | 14 | * list of conditions and the following disclaimer in the documentation and/or |
AnnaBridge | 172:65be27845400 | 15 | * other materials provided with the distribution. |
AnnaBridge | 172:65be27845400 | 16 | * |
AnnaBridge | 172:65be27845400 | 17 | * o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
AnnaBridge | 172:65be27845400 | 18 | * contributors may be used to endorse or promote products derived from this |
AnnaBridge | 172:65be27845400 | 19 | * software without specific prior written permission. |
AnnaBridge | 172:65be27845400 | 20 | * |
AnnaBridge | 172:65be27845400 | 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
AnnaBridge | 172:65be27845400 | 22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
AnnaBridge | 172:65be27845400 | 23 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
AnnaBridge | 172:65be27845400 | 24 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
AnnaBridge | 172:65be27845400 | 25 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
AnnaBridge | 172:65be27845400 | 26 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
AnnaBridge | 172:65be27845400 | 27 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
AnnaBridge | 172:65be27845400 | 28 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
AnnaBridge | 172:65be27845400 | 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
AnnaBridge | 172:65be27845400 | 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
AnnaBridge | 172:65be27845400 | 31 | */ |
AnnaBridge | 172:65be27845400 | 32 | |
AnnaBridge | 172:65be27845400 | 33 | |
AnnaBridge | 172:65be27845400 | 34 | #ifndef _FSL_OS_ABSTRACTION_H_ |
AnnaBridge | 172:65be27845400 | 35 | #define _FSL_OS_ABSTRACTION_H_ |
AnnaBridge | 172:65be27845400 | 36 | |
AnnaBridge | 172:65be27845400 | 37 | #include "EmbeddedTypes.h" |
AnnaBridge | 172:65be27845400 | 38 | #include "fsl_os_abstraction_config.h" |
AnnaBridge | 172:65be27845400 | 39 | |
AnnaBridge | 172:65be27845400 | 40 | #ifdef __cplusplus |
AnnaBridge | 172:65be27845400 | 41 | extern "C" |
AnnaBridge | 172:65be27845400 | 42 | { |
AnnaBridge | 172:65be27845400 | 43 | #endif |
AnnaBridge | 172:65be27845400 | 44 | |
AnnaBridge | 172:65be27845400 | 45 | |
AnnaBridge | 172:65be27845400 | 46 | /*! ********************************************************************************* |
AnnaBridge | 172:65be27845400 | 47 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 48 | * Public type definitions |
AnnaBridge | 172:65be27845400 | 49 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 50 | ********************************************************************************** */ |
AnnaBridge | 172:65be27845400 | 51 | /*! @brief Type for the Task Priority*/ |
AnnaBridge | 172:65be27845400 | 52 | typedef uint16_t osaTaskPriority_t; |
AnnaBridge | 172:65be27845400 | 53 | /*! @brief Type for the timer definition*/ |
AnnaBridge | 172:65be27845400 | 54 | typedef enum { |
AnnaBridge | 172:65be27845400 | 55 | osaTimer_Once = 0, /*!< one-shot timer*/ |
AnnaBridge | 172:65be27845400 | 56 | osaTimer_Periodic = 1 /*!< repeating timer*/ |
AnnaBridge | 172:65be27845400 | 57 | } osaTimer_t; |
AnnaBridge | 172:65be27845400 | 58 | /*! @brief Type for a task handler, returned by the OSA_TaskCreate function. */ |
AnnaBridge | 172:65be27845400 | 59 | typedef void* osaTaskId_t; |
AnnaBridge | 172:65be27845400 | 60 | /*! @brief Type for the parameter to be passed to the task at its creation */ |
AnnaBridge | 172:65be27845400 | 61 | typedef void* osaTaskParam_t; |
AnnaBridge | 172:65be27845400 | 62 | /*! @brief Type for task pointer. Task prototype declaration */ |
AnnaBridge | 172:65be27845400 | 63 | typedef void (*osaTaskPtr_t) (osaTaskParam_t task_param); |
AnnaBridge | 172:65be27845400 | 64 | /*! @brief Type for the semaphore handler, returned by the OSA_SemaphoreCreate function. */ |
AnnaBridge | 172:65be27845400 | 65 | typedef void* osaSemaphoreId_t; |
AnnaBridge | 172:65be27845400 | 66 | /*! @brief Type for the mutex handler, returned by the OSA_MutexCreate function. */ |
AnnaBridge | 172:65be27845400 | 67 | typedef void* osaMutexId_t; |
AnnaBridge | 172:65be27845400 | 68 | /*! @brief Type for the event handler, returned by the OSA_EventCreate function. */ |
AnnaBridge | 172:65be27845400 | 69 | typedef void* osaEventId_t; |
AnnaBridge | 172:65be27845400 | 70 | /*! @brief Type for an event flags group, bit 32 is reserved. */ |
AnnaBridge | 172:65be27845400 | 71 | typedef uint32_t osaEventFlags_t; |
AnnaBridge | 172:65be27845400 | 72 | /*! @brief Message definition. */ |
AnnaBridge | 172:65be27845400 | 73 | typedef void* osaMsg_t; |
AnnaBridge | 172:65be27845400 | 74 | /*! @brief Type for the message queue handler, returned by the OSA_MsgQCreate function. */ |
AnnaBridge | 172:65be27845400 | 75 | typedef void* osaMsgQId_t; |
AnnaBridge | 172:65be27845400 | 76 | /*! @brief Type for the Timer handler, returned by the OSA_TimerCreate function. */ |
AnnaBridge | 172:65be27845400 | 77 | typedef void *osaTimerId_t; |
AnnaBridge | 172:65be27845400 | 78 | /*! @brief Type for the Timer callback function pointer. */ |
AnnaBridge | 172:65be27845400 | 79 | typedef void (*osaTimerFctPtr_t) (void const *argument); |
AnnaBridge | 172:65be27845400 | 80 | /*! @brief Thread Definition structure contains startup information of a thread.*/ |
AnnaBridge | 172:65be27845400 | 81 | typedef struct osaThreadDef_tag { |
AnnaBridge | 172:65be27845400 | 82 | osaTaskPtr_t pthread; /*!< start address of thread function*/ |
AnnaBridge | 172:65be27845400 | 83 | uint32_t tpriority; /*!< initial thread priority*/ |
AnnaBridge | 172:65be27845400 | 84 | uint32_t instances; /*!< maximum number of instances of that thread function*/ |
AnnaBridge | 172:65be27845400 | 85 | uint32_t stacksize; /*!< stack size requirements in bytes; 0 is default stack size*/ |
AnnaBridge | 172:65be27845400 | 86 | uint32_t *tstack; |
AnnaBridge | 172:65be27845400 | 87 | void *tlink; |
AnnaBridge | 172:65be27845400 | 88 | uint8_t *tname; |
AnnaBridge | 172:65be27845400 | 89 | bool_t useFloat; |
AnnaBridge | 172:65be27845400 | 90 | } osaThreadDef_t; |
AnnaBridge | 172:65be27845400 | 91 | /*! @brief Thread Link Definition structure .*/ |
AnnaBridge | 172:65be27845400 | 92 | typedef struct osaThreadLink_tag{ |
AnnaBridge | 172:65be27845400 | 93 | uint8_t link[12]; |
AnnaBridge | 172:65be27845400 | 94 | osaTaskId_t osThreadId; |
AnnaBridge | 172:65be27845400 | 95 | osaThreadDef_t *osThreadDefHandle; |
AnnaBridge | 172:65be27845400 | 96 | uint32_t *osThreadStackHandle; |
AnnaBridge | 172:65be27845400 | 97 | }osaThreadLink_t, *osaThreadLinkHandle_t; |
AnnaBridge | 172:65be27845400 | 98 | |
AnnaBridge | 172:65be27845400 | 99 | /*! @Timer Definition structure contains timer parameters.*/ |
AnnaBridge | 172:65be27845400 | 100 | typedef struct osaTimerDef_tag { |
AnnaBridge | 172:65be27845400 | 101 | osaTimerFctPtr_t pfCallback; /* < start address of a timer function */ |
AnnaBridge | 172:65be27845400 | 102 | void *argument; |
AnnaBridge | 172:65be27845400 | 103 | } osaTimerDef_t; |
AnnaBridge | 172:65be27845400 | 104 | /*! @brief Defines the return status of OSA's functions */ |
AnnaBridge | 172:65be27845400 | 105 | typedef enum osaStatus_tag |
AnnaBridge | 172:65be27845400 | 106 | { |
AnnaBridge | 172:65be27845400 | 107 | osaStatus_Success = 0U, /*!< Success */ |
AnnaBridge | 172:65be27845400 | 108 | osaStatus_Error = 1U, /*!< Failed */ |
AnnaBridge | 172:65be27845400 | 109 | osaStatus_Timeout = 2U, /*!< Timeout occurs while waiting */ |
AnnaBridge | 172:65be27845400 | 110 | osaStatus_Idle = 3U /*!< Used for bare metal only, the wait object is not ready |
AnnaBridge | 172:65be27845400 | 111 | and timeout still not occur */ |
AnnaBridge | 172:65be27845400 | 112 | }osaStatus_t; |
AnnaBridge | 172:65be27845400 | 113 | |
AnnaBridge | 172:65be27845400 | 114 | |
AnnaBridge | 172:65be27845400 | 115 | /*! ********************************************************************************* |
AnnaBridge | 172:65be27845400 | 116 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 117 | * Public macros |
AnnaBridge | 172:65be27845400 | 118 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 119 | ********************************************************************************** */ |
AnnaBridge | 172:65be27845400 | 120 | #if defined (FSL_RTOS_MQX) |
AnnaBridge | 172:65be27845400 | 121 | #define USE_RTOS 1 |
AnnaBridge | 172:65be27845400 | 122 | #elif defined (FSL_RTOS_FREE_RTOS) |
AnnaBridge | 172:65be27845400 | 123 | #define USE_RTOS 1 |
AnnaBridge | 172:65be27845400 | 124 | #elif defined (FSL_RTOS_UCOSII) |
AnnaBridge | 172:65be27845400 | 125 | #define USE_RTOS 1 |
AnnaBridge | 172:65be27845400 | 126 | #elif defined (FSL_RTOS_UCOSIII) |
AnnaBridge | 172:65be27845400 | 127 | #define USE_RTOS 1 |
AnnaBridge | 172:65be27845400 | 128 | #else |
AnnaBridge | 172:65be27845400 | 129 | #define USE_RTOS 0 |
AnnaBridge | 172:65be27845400 | 130 | #endif |
AnnaBridge | 172:65be27845400 | 131 | |
AnnaBridge | 172:65be27845400 | 132 | #define OSA_PRIORITY_IDLE (6) |
AnnaBridge | 172:65be27845400 | 133 | #define OSA_PRIORITY_LOW (5) |
AnnaBridge | 172:65be27845400 | 134 | #define OSA_PRIORITY_BELOW_NORMAL (4) |
AnnaBridge | 172:65be27845400 | 135 | #define OSA_PRIORITY_NORMAL (3) |
AnnaBridge | 172:65be27845400 | 136 | #define OSA_PRIORITY_ABOVE_NORMAL (2) |
AnnaBridge | 172:65be27845400 | 137 | #define OSA_PRIORITY_HIGH (1) |
AnnaBridge | 172:65be27845400 | 138 | #define OSA_PRIORITY_REAL_TIME (0) |
AnnaBridge | 172:65be27845400 | 139 | #define OSA_TASK_PRIORITY_MAX (0) |
AnnaBridge | 172:65be27845400 | 140 | #define OSA_TASK_PRIORITY_MIN (15) |
AnnaBridge | 172:65be27845400 | 141 | #define SIZE_IN_UINT32_UNITS(size) (((size) + sizeof(uint32_t) - 1) / sizeof(uint32_t)) |
AnnaBridge | 172:65be27845400 | 142 | |
AnnaBridge | 172:65be27845400 | 143 | /*! @brief Constant to pass as timeout value in order to wait indefinitely. */ |
AnnaBridge | 172:65be27845400 | 144 | #define osaWaitForever_c ((uint32_t)(-1)) |
AnnaBridge | 172:65be27845400 | 145 | #define osaEventFlagsAll_c ((osaEventFlags_t)(0x00FFFFFF)) |
AnnaBridge | 172:65be27845400 | 146 | #define osThreadStackArray(name) osThread_##name##_stack |
AnnaBridge | 172:65be27845400 | 147 | #define osThreadStackDef(name, stacksize, instances) \ |
AnnaBridge | 172:65be27845400 | 148 | uint32_t osThreadStackArray(name)[SIZE_IN_UINT32_UNITS(stacksize)*(instances)]; |
AnnaBridge | 172:65be27845400 | 149 | |
AnnaBridge | 172:65be27845400 | 150 | /* ==== Thread Management ==== */ |
AnnaBridge | 172:65be27845400 | 151 | |
AnnaBridge | 172:65be27845400 | 152 | /* Create a Thread Definition with function, priority, and stack requirements. |
AnnaBridge | 172:65be27845400 | 153 | * \param name name of the thread function. |
AnnaBridge | 172:65be27845400 | 154 | * \param priority initial priority of the thread function. |
AnnaBridge | 172:65be27845400 | 155 | * \param instances number of possible thread instances. |
AnnaBridge | 172:65be27845400 | 156 | * \param stackSz stack size (in bytes) requirements for the thread function. |
AnnaBridge | 172:65be27845400 | 157 | * \param useFloat |
AnnaBridge | 172:65be27845400 | 158 | */ |
AnnaBridge | 172:65be27845400 | 159 | #if defined(FSL_RTOS_MQX) |
AnnaBridge | 172:65be27845400 | 160 | #define OSA_TASK_DEFINE(name, priority, instances, stackSz, useFloat) \ |
AnnaBridge | 172:65be27845400 | 161 | osaThreadLink_t osThreadLink_##name[instances] = {0}; \ |
AnnaBridge | 172:65be27845400 | 162 | osThreadStackDef(name, stackSz, instances) \ |
AnnaBridge | 172:65be27845400 | 163 | osaThreadDef_t os_thread_def_##name = { (name), \ |
AnnaBridge | 172:65be27845400 | 164 | (priority), \ |
AnnaBridge | 172:65be27845400 | 165 | (instances), \ |
AnnaBridge | 172:65be27845400 | 166 | (stackSz), \ |
AnnaBridge | 172:65be27845400 | 167 | osThreadStackArray(name), \ |
AnnaBridge | 172:65be27845400 | 168 | osThreadLink_##name, \ |
AnnaBridge | 172:65be27845400 | 169 | (uint8_t*) #name,\ |
AnnaBridge | 172:65be27845400 | 170 | (useFloat)} |
AnnaBridge | 172:65be27845400 | 171 | #elif defined (FSL_RTOS_UCOSII) |
AnnaBridge | 172:65be27845400 | 172 | #if gTaskMultipleInstancesManagement_c |
AnnaBridge | 172:65be27845400 | 173 | #define OSA_TASK_DEFINE(name, priority, instances, stackSz, useFloat) \ |
AnnaBridge | 172:65be27845400 | 174 | osaThreadLink_t osThreadLink_##name[instances] = {0}; \ |
AnnaBridge | 172:65be27845400 | 175 | osThreadStackDef(name, stackSz, instances) \ |
AnnaBridge | 172:65be27845400 | 176 | osaThreadDef_t os_thread_def_##name = { (name), \ |
AnnaBridge | 172:65be27845400 | 177 | (priority), \ |
AnnaBridge | 172:65be27845400 | 178 | (instances), \ |
AnnaBridge | 172:65be27845400 | 179 | (stackSz), \ |
AnnaBridge | 172:65be27845400 | 180 | osThreadStackArray(name), \ |
AnnaBridge | 172:65be27845400 | 181 | osThreadLink_##name, \ |
AnnaBridge | 172:65be27845400 | 182 | (uint8_t*) #name,\ |
AnnaBridge | 172:65be27845400 | 183 | (useFloat)} |
AnnaBridge | 172:65be27845400 | 184 | #else |
AnnaBridge | 172:65be27845400 | 185 | #define OSA_TASK_DEFINE(name, priority, instances, stackSz, useFloat) \ |
AnnaBridge | 172:65be27845400 | 186 | osThreadStackDef(name, stackSz, instances) \ |
AnnaBridge | 172:65be27845400 | 187 | osaThreadDef_t os_thread_def_##name = { (name), \ |
AnnaBridge | 172:65be27845400 | 188 | (priority), \ |
AnnaBridge | 172:65be27845400 | 189 | (instances), \ |
AnnaBridge | 172:65be27845400 | 190 | (stackSz), \ |
AnnaBridge | 172:65be27845400 | 191 | osThreadStackArray(name), \ |
AnnaBridge | 172:65be27845400 | 192 | NULL, \ |
AnnaBridge | 172:65be27845400 | 193 | (uint8_t*) #name,\ |
AnnaBridge | 172:65be27845400 | 194 | (useFloat)} |
AnnaBridge | 172:65be27845400 | 195 | #endif |
AnnaBridge | 172:65be27845400 | 196 | #else |
AnnaBridge | 172:65be27845400 | 197 | #define OSA_TASK_DEFINE(name, priority, instances, stackSz, useFloat) \ |
AnnaBridge | 172:65be27845400 | 198 | osaThreadDef_t os_thread_def_##name = { (name), \ |
AnnaBridge | 172:65be27845400 | 199 | (priority), \ |
AnnaBridge | 172:65be27845400 | 200 | (instances), \ |
AnnaBridge | 172:65be27845400 | 201 | (stackSz), \ |
AnnaBridge | 172:65be27845400 | 202 | NULL, \ |
AnnaBridge | 172:65be27845400 | 203 | NULL, \ |
AnnaBridge | 172:65be27845400 | 204 | (uint8_t*) #name,\ |
AnnaBridge | 172:65be27845400 | 205 | (useFloat)} |
AnnaBridge | 172:65be27845400 | 206 | #endif |
AnnaBridge | 172:65be27845400 | 207 | /* Access a Thread defintion. |
AnnaBridge | 172:65be27845400 | 208 | * \param name name of the thread definition object. |
AnnaBridge | 172:65be27845400 | 209 | */ |
AnnaBridge | 172:65be27845400 | 210 | #define OSA_TASK(name) \ |
AnnaBridge | 172:65be27845400 | 211 | &os_thread_def_##name |
AnnaBridge | 172:65be27845400 | 212 | |
AnnaBridge | 172:65be27845400 | 213 | #define OSA_TASK_PROTO(name) \ |
AnnaBridge | 172:65be27845400 | 214 | extern osaThreadDef_t os_thread_def_##name |
AnnaBridge | 172:65be27845400 | 215 | /* ==== Timer Management ==== |
AnnaBridge | 172:65be27845400 | 216 | * Define a Timer object. |
AnnaBridge | 172:65be27845400 | 217 | * \param name name of the timer object. |
AnnaBridge | 172:65be27845400 | 218 | * \param function name of the timer call back function. |
AnnaBridge | 172:65be27845400 | 219 | */ |
AnnaBridge | 172:65be27845400 | 220 | |
AnnaBridge | 172:65be27845400 | 221 | #define OSA_TIMER_DEF(name, function) \ |
AnnaBridge | 172:65be27845400 | 222 | osaTimerDef_t os_timer_def_##name = \ |
AnnaBridge | 172:65be27845400 | 223 | { (function), NULL } |
AnnaBridge | 172:65be27845400 | 224 | |
AnnaBridge | 172:65be27845400 | 225 | /* Access a Timer definition. |
AnnaBridge | 172:65be27845400 | 226 | * \param name name of the timer object. |
AnnaBridge | 172:65be27845400 | 227 | */ |
AnnaBridge | 172:65be27845400 | 228 | #define OSA_TIMER(name) \ |
AnnaBridge | 172:65be27845400 | 229 | &os_timer_def_##name |
AnnaBridge | 172:65be27845400 | 230 | |
AnnaBridge | 172:65be27845400 | 231 | |
AnnaBridge | 172:65be27845400 | 232 | /***************************************************************************** |
AnnaBridge | 172:65be27845400 | 233 | ****************************************************************************** |
AnnaBridge | 172:65be27845400 | 234 | * Public memory declarations |
AnnaBridge | 172:65be27845400 | 235 | ****************************************************************************** |
AnnaBridge | 172:65be27845400 | 236 | *****************************************************************************/ |
AnnaBridge | 172:65be27845400 | 237 | extern const uint8_t gUseRtos_c; |
AnnaBridge | 172:65be27845400 | 238 | |
AnnaBridge | 172:65be27845400 | 239 | |
AnnaBridge | 172:65be27845400 | 240 | /*! ********************************************************************************* |
AnnaBridge | 172:65be27845400 | 241 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 242 | * Public functions |
AnnaBridge | 172:65be27845400 | 243 | ************************************************************************************* |
AnnaBridge | 172:65be27845400 | 244 | ********************************************************************************** */ |
AnnaBridge | 172:65be27845400 | 245 | /*! |
AnnaBridge | 172:65be27845400 | 246 | * @name Task management |
AnnaBridge | 172:65be27845400 | 247 | * @{ |
AnnaBridge | 172:65be27845400 | 248 | */ |
AnnaBridge | 172:65be27845400 | 249 | |
AnnaBridge | 172:65be27845400 | 250 | /*! |
AnnaBridge | 172:65be27845400 | 251 | * @brief Creates a task. |
AnnaBridge | 172:65be27845400 | 252 | * |
AnnaBridge | 172:65be27845400 | 253 | * This function is used to create task based on the resources defined |
AnnaBridge | 172:65be27845400 | 254 | * by the macro OSA_TASK_DEFINE. |
AnnaBridge | 172:65be27845400 | 255 | * |
AnnaBridge | 172:65be27845400 | 256 | * @param thread_def pointer to the osaThreadDef_t structure which defines the task. |
AnnaBridge | 172:65be27845400 | 257 | * @param task_param Pointer to be passed to the task when it is created. |
AnnaBridge | 172:65be27845400 | 258 | * |
AnnaBridge | 172:65be27845400 | 259 | * @retval taskId The task is successfully created. |
AnnaBridge | 172:65be27845400 | 260 | * @retval NULL The task can not be created.. |
AnnaBridge | 172:65be27845400 | 261 | * |
AnnaBridge | 172:65be27845400 | 262 | * Example: |
AnnaBridge | 172:65be27845400 | 263 | @code |
AnnaBridge | 172:65be27845400 | 264 | osaTaskId_t taskId; |
AnnaBridge | 172:65be27845400 | 265 | OSA_TASK_DEFINE( Job1, OSA_PRIORITY_HIGH, 1, 800, 0);; |
AnnaBridge | 172:65be27845400 | 266 | taskId = OSA__TaskCreate(OSA__TASK(Job1), (osaTaskParam_t)NULL); |
AnnaBridge | 172:65be27845400 | 267 | @endcode |
AnnaBridge | 172:65be27845400 | 268 | */ |
AnnaBridge | 172:65be27845400 | 269 | osaTaskId_t OSA_TaskCreate(osaThreadDef_t *thread_def, osaTaskParam_t task_param); |
AnnaBridge | 172:65be27845400 | 270 | |
AnnaBridge | 172:65be27845400 | 271 | /*! |
AnnaBridge | 172:65be27845400 | 272 | * @brief Gets the handler of active task. |
AnnaBridge | 172:65be27845400 | 273 | * |
AnnaBridge | 172:65be27845400 | 274 | * @return Handler to current active task. |
AnnaBridge | 172:65be27845400 | 275 | */ |
AnnaBridge | 172:65be27845400 | 276 | osaTaskId_t OSA_TaskGetId(void); |
AnnaBridge | 172:65be27845400 | 277 | |
AnnaBridge | 172:65be27845400 | 278 | /*! |
AnnaBridge | 172:65be27845400 | 279 | * @brief Puts the active task to the end of scheduler's queue. |
AnnaBridge | 172:65be27845400 | 280 | * |
AnnaBridge | 172:65be27845400 | 281 | * When a task calls this function, it gives up the CPU and puts itself to the |
AnnaBridge | 172:65be27845400 | 282 | * end of a task ready list. |
AnnaBridge | 172:65be27845400 | 283 | * |
AnnaBridge | 172:65be27845400 | 284 | * @retval osaStatus_Success The function is called successfully. |
AnnaBridge | 172:65be27845400 | 285 | * @retval osaStatus_Error Error occurs with this function. |
AnnaBridge | 172:65be27845400 | 286 | */ |
AnnaBridge | 172:65be27845400 | 287 | osaStatus_t OSA_TaskYield(void); |
AnnaBridge | 172:65be27845400 | 288 | |
AnnaBridge | 172:65be27845400 | 289 | /*! |
AnnaBridge | 172:65be27845400 | 290 | * @brief Gets the priority of a task. |
AnnaBridge | 172:65be27845400 | 291 | * |
AnnaBridge | 172:65be27845400 | 292 | * @param taskId The handler of the task whose priority is received. |
AnnaBridge | 172:65be27845400 | 293 | * |
AnnaBridge | 172:65be27845400 | 294 | * @return Task's priority. |
AnnaBridge | 172:65be27845400 | 295 | */ |
AnnaBridge | 172:65be27845400 | 296 | osaTaskPriority_t OSA_TaskGetPriority(osaTaskId_t taskId); |
AnnaBridge | 172:65be27845400 | 297 | |
AnnaBridge | 172:65be27845400 | 298 | /*! |
AnnaBridge | 172:65be27845400 | 299 | * @brief Sets the priority of a task. |
AnnaBridge | 172:65be27845400 | 300 | * |
AnnaBridge | 172:65be27845400 | 301 | * @param taskId The handler of the task whose priority is set. |
AnnaBridge | 172:65be27845400 | 302 | * @param taskPriority The priority to set. |
AnnaBridge | 172:65be27845400 | 303 | * |
AnnaBridge | 172:65be27845400 | 304 | * @retval osaStatus_Success Task's priority is set successfully. |
AnnaBridge | 172:65be27845400 | 305 | * @retval osaStatus_Error Task's priority can not be set. |
AnnaBridge | 172:65be27845400 | 306 | */ |
AnnaBridge | 172:65be27845400 | 307 | osaStatus_t OSA_TaskSetPriority(osaTaskId_t taskId, osaTaskPriority_t taskPriority); |
AnnaBridge | 172:65be27845400 | 308 | /*! |
AnnaBridge | 172:65be27845400 | 309 | * @brief Destroys a previously created task. |
AnnaBridge | 172:65be27845400 | 310 | * |
AnnaBridge | 172:65be27845400 | 311 | * @param taskId The handler of the task to destroy. Returned by the OSA_TaskCreate function. |
AnnaBridge | 172:65be27845400 | 312 | * |
AnnaBridge | 172:65be27845400 | 313 | * @retval osaStatus_Success The task was successfully destroyed. |
AnnaBridge | 172:65be27845400 | 314 | * @retval osaStatus_Error Task destruction failed or invalid parameter. |
AnnaBridge | 172:65be27845400 | 315 | */ |
AnnaBridge | 172:65be27845400 | 316 | osaStatus_t OSA_TaskDestroy(osaTaskId_t taskId); |
AnnaBridge | 172:65be27845400 | 317 | |
AnnaBridge | 172:65be27845400 | 318 | /*! |
AnnaBridge | 172:65be27845400 | 319 | * @brief Creates a semaphore with a given value. |
AnnaBridge | 172:65be27845400 | 320 | * |
AnnaBridge | 172:65be27845400 | 321 | * This function creates a semaphore and sets the value to the parameter |
AnnaBridge | 172:65be27845400 | 322 | * initValue. |
AnnaBridge | 172:65be27845400 | 323 | * |
AnnaBridge | 172:65be27845400 | 324 | * @param initValue Initial value the semaphore will be set to. |
AnnaBridge | 172:65be27845400 | 325 | * |
AnnaBridge | 172:65be27845400 | 326 | * @retval handler to the new semaphore if the semaphore is created successfully. |
AnnaBridge | 172:65be27845400 | 327 | * @retval NULL if the semaphore can not be created. |
AnnaBridge | 172:65be27845400 | 328 | * |
AnnaBridge | 172:65be27845400 | 329 | * |
AnnaBridge | 172:65be27845400 | 330 | */ |
AnnaBridge | 172:65be27845400 | 331 | osaSemaphoreId_t OSA_SemaphoreCreate(uint32_t initValue); |
AnnaBridge | 172:65be27845400 | 332 | |
AnnaBridge | 172:65be27845400 | 333 | /*! |
AnnaBridge | 172:65be27845400 | 334 | * @brief Destroys a previously created semaphore. |
AnnaBridge | 172:65be27845400 | 335 | * |
AnnaBridge | 172:65be27845400 | 336 | * @param semId Pointer to the semaphore to destroy. |
AnnaBridge | 172:65be27845400 | 337 | * |
AnnaBridge | 172:65be27845400 | 338 | * @retval osaStatus_Success The semaphore is successfully destroyed. |
AnnaBridge | 172:65be27845400 | 339 | * @retval osaStatus_Error The semaphore can not be destroyed. |
AnnaBridge | 172:65be27845400 | 340 | */ |
AnnaBridge | 172:65be27845400 | 341 | osaStatus_t OSA_SemaphoreDestroy(osaSemaphoreId_t semId); |
AnnaBridge | 172:65be27845400 | 342 | |
AnnaBridge | 172:65be27845400 | 343 | /*! |
AnnaBridge | 172:65be27845400 | 344 | * @brief Pending a semaphore with timeout. |
AnnaBridge | 172:65be27845400 | 345 | * |
AnnaBridge | 172:65be27845400 | 346 | * This function checks the semaphore's counting value. If it is positive, |
AnnaBridge | 172:65be27845400 | 347 | * decreases it and returns osaStatus_Success. Otherwise, a timeout is used |
AnnaBridge | 172:65be27845400 | 348 | * to wait. |
AnnaBridge | 172:65be27845400 | 349 | * |
AnnaBridge | 172:65be27845400 | 350 | * @param semId Pointer to the semaphore. |
AnnaBridge | 172:65be27845400 | 351 | * @param millisec The maximum number of milliseconds to wait if semaphore is not |
AnnaBridge | 172:65be27845400 | 352 | * positive. Pass osaWaitForever_c to wait indefinitely, pass 0 |
AnnaBridge | 172:65be27845400 | 353 | * will return osaStatus_Timeout immediately. |
AnnaBridge | 172:65be27845400 | 354 | * |
AnnaBridge | 172:65be27845400 | 355 | * @retval osaStatus_Success The semaphore is received. |
AnnaBridge | 172:65be27845400 | 356 | * @retval osaStatus_Timeout The semaphore is not received within the specified 'timeout'. |
AnnaBridge | 172:65be27845400 | 357 | * @retval osaStatus_Error An incorrect parameter was passed. |
AnnaBridge | 172:65be27845400 | 358 | */ |
AnnaBridge | 172:65be27845400 | 359 | osaStatus_t OSA_SemaphoreWait(osaSemaphoreId_t semId, uint32_t millisec); |
AnnaBridge | 172:65be27845400 | 360 | |
AnnaBridge | 172:65be27845400 | 361 | /*! |
AnnaBridge | 172:65be27845400 | 362 | * @brief Signals for someone waiting on the semaphore to wake up. |
AnnaBridge | 172:65be27845400 | 363 | * |
AnnaBridge | 172:65be27845400 | 364 | * Wakes up one task that is waiting on the semaphore. If no task is waiting, increases |
AnnaBridge | 172:65be27845400 | 365 | * the semaphore's counting value. |
AnnaBridge | 172:65be27845400 | 366 | * |
AnnaBridge | 172:65be27845400 | 367 | * @param semId Pointer to the semaphore to signal. |
AnnaBridge | 172:65be27845400 | 368 | * |
AnnaBridge | 172:65be27845400 | 369 | * @retval osaStatus_Success The semaphore is successfully signaled. |
AnnaBridge | 172:65be27845400 | 370 | * @retval osaStatus_Error The object can not be signaled or invalid parameter. |
AnnaBridge | 172:65be27845400 | 371 | * |
AnnaBridge | 172:65be27845400 | 372 | */ |
AnnaBridge | 172:65be27845400 | 373 | osaStatus_t OSA_SemaphorePost(osaSemaphoreId_t semId); |
AnnaBridge | 172:65be27845400 | 374 | |
AnnaBridge | 172:65be27845400 | 375 | /*! |
AnnaBridge | 172:65be27845400 | 376 | * @brief Create an unlocked mutex. |
AnnaBridge | 172:65be27845400 | 377 | * |
AnnaBridge | 172:65be27845400 | 378 | * This function creates a non-recursive mutex and sets it to unlocked status. |
AnnaBridge | 172:65be27845400 | 379 | * |
AnnaBridge | 172:65be27845400 | 380 | * @param none. |
AnnaBridge | 172:65be27845400 | 381 | * |
AnnaBridge | 172:65be27845400 | 382 | * @retval handler to the new mutex if the mutex is created successfully. |
AnnaBridge | 172:65be27845400 | 383 | * @retval NULL if the mutex can not be created. |
AnnaBridge | 172:65be27845400 | 384 | */ |
AnnaBridge | 172:65be27845400 | 385 | osaMutexId_t OSA_MutexCreate(void); |
AnnaBridge | 172:65be27845400 | 386 | |
AnnaBridge | 172:65be27845400 | 387 | /*! |
AnnaBridge | 172:65be27845400 | 388 | * @brief Waits for a mutex and locks it. |
AnnaBridge | 172:65be27845400 | 389 | * |
AnnaBridge | 172:65be27845400 | 390 | * This function checks the mutex's status. If it is unlocked, locks it and returns the |
AnnaBridge | 172:65be27845400 | 391 | * osaStatus_Success. Otherwise, waits for a timeout in milliseconds to lock. |
AnnaBridge | 172:65be27845400 | 392 | * |
AnnaBridge | 172:65be27845400 | 393 | * @param mutexId Pointer to the Mutex. |
AnnaBridge | 172:65be27845400 | 394 | * @param millisec The maximum number of milliseconds to wait for the mutex. |
AnnaBridge | 172:65be27845400 | 395 | * If the mutex is locked, Pass the value osaWaitForever_c will |
AnnaBridge | 172:65be27845400 | 396 | * wait indefinitely, pass 0 will return osaStatus_Timeout |
AnnaBridge | 172:65be27845400 | 397 | * immediately. |
AnnaBridge | 172:65be27845400 | 398 | * |
AnnaBridge | 172:65be27845400 | 399 | * @retval osaStatus_Success The mutex is locked successfully. |
AnnaBridge | 172:65be27845400 | 400 | * @retval osaStatus_Timeout Timeout occurred. |
AnnaBridge | 172:65be27845400 | 401 | * @retval osaStatus_Error Incorrect parameter was passed. |
AnnaBridge | 172:65be27845400 | 402 | * |
AnnaBridge | 172:65be27845400 | 403 | * @note This is non-recursive mutex, a task can not try to lock the mutex it has locked. |
AnnaBridge | 172:65be27845400 | 404 | */ |
AnnaBridge | 172:65be27845400 | 405 | osaStatus_t OSA_MutexLock(osaMutexId_t mutexId, uint32_t millisec); |
AnnaBridge | 172:65be27845400 | 406 | |
AnnaBridge | 172:65be27845400 | 407 | /*! |
AnnaBridge | 172:65be27845400 | 408 | * @brief Unlocks a previously locked mutex. |
AnnaBridge | 172:65be27845400 | 409 | * |
AnnaBridge | 172:65be27845400 | 410 | * @param mutexId Pointer to the Mutex. |
AnnaBridge | 172:65be27845400 | 411 | * |
AnnaBridge | 172:65be27845400 | 412 | * @retval osaStatus_Success The mutex is successfully unlocked. |
AnnaBridge | 172:65be27845400 | 413 | * @retval osaStatus_Error The mutex can not be unlocked or invalid parameter. |
AnnaBridge | 172:65be27845400 | 414 | */ |
AnnaBridge | 172:65be27845400 | 415 | osaStatus_t OSA_MutexUnlock(osaMutexId_t mutexId); |
AnnaBridge | 172:65be27845400 | 416 | |
AnnaBridge | 172:65be27845400 | 417 | /*! |
AnnaBridge | 172:65be27845400 | 418 | * @brief Destroys a previously created mutex. |
AnnaBridge | 172:65be27845400 | 419 | * |
AnnaBridge | 172:65be27845400 | 420 | * @param mutexId Pointer to the Mutex. |
AnnaBridge | 172:65be27845400 | 421 | * |
AnnaBridge | 172:65be27845400 | 422 | * @retval osaStatus_Success The mutex is successfully destroyed. |
AnnaBridge | 172:65be27845400 | 423 | * @retval osaStatus_Error The mutex can not be destroyed. |
AnnaBridge | 172:65be27845400 | 424 | * |
AnnaBridge | 172:65be27845400 | 425 | */ |
AnnaBridge | 172:65be27845400 | 426 | osaStatus_t OSA_MutexDestroy(osaMutexId_t mutexId); |
AnnaBridge | 172:65be27845400 | 427 | |
AnnaBridge | 172:65be27845400 | 428 | /*! |
AnnaBridge | 172:65be27845400 | 429 | * @brief Initializes an event object with all flags cleared. |
AnnaBridge | 172:65be27845400 | 430 | * |
AnnaBridge | 172:65be27845400 | 431 | * This function creates an event object and set its clear mode. If autoClear |
AnnaBridge | 172:65be27845400 | 432 | * is TRUE, when a task gets the event flags, these flags will be |
AnnaBridge | 172:65be27845400 | 433 | * cleared automatically. Otherwise these flags must |
AnnaBridge | 172:65be27845400 | 434 | * be cleared manually. |
AnnaBridge | 172:65be27845400 | 435 | * |
AnnaBridge | 172:65be27845400 | 436 | * @param autoClear TRUE The event is auto-clear. |
AnnaBridge | 172:65be27845400 | 437 | * FALSE The event manual-clear |
AnnaBridge | 172:65be27845400 | 438 | * @retval handler to the new event if the event is created successfully. |
AnnaBridge | 172:65be27845400 | 439 | * @retval NULL if the event can not be created. |
AnnaBridge | 172:65be27845400 | 440 | */ |
AnnaBridge | 172:65be27845400 | 441 | osaEventId_t OSA_EventCreate(bool_t autoClear); |
AnnaBridge | 172:65be27845400 | 442 | |
AnnaBridge | 172:65be27845400 | 443 | /*! |
AnnaBridge | 172:65be27845400 | 444 | * @brief Sets one or more event flags. |
AnnaBridge | 172:65be27845400 | 445 | * |
AnnaBridge | 172:65be27845400 | 446 | * Sets specified flags of an event object. |
AnnaBridge | 172:65be27845400 | 447 | * |
AnnaBridge | 172:65be27845400 | 448 | * @param eventId Pointer to the event. |
AnnaBridge | 172:65be27845400 | 449 | * @param flagsToSet Flags to be set. |
AnnaBridge | 172:65be27845400 | 450 | * |
AnnaBridge | 172:65be27845400 | 451 | * @retval osaStatus_Success The flags were successfully set. |
AnnaBridge | 172:65be27845400 | 452 | * @retval osaStatus_Error An incorrect parameter was passed. |
AnnaBridge | 172:65be27845400 | 453 | */ |
AnnaBridge | 172:65be27845400 | 454 | osaStatus_t OSA_EventSet(osaEventId_t eventId, osaEventFlags_t flagsToSet); |
AnnaBridge | 172:65be27845400 | 455 | |
AnnaBridge | 172:65be27845400 | 456 | /*! |
AnnaBridge | 172:65be27845400 | 457 | * @brief Clears one or more flags. |
AnnaBridge | 172:65be27845400 | 458 | * |
AnnaBridge | 172:65be27845400 | 459 | * Clears specified flags of an event object. |
AnnaBridge | 172:65be27845400 | 460 | * |
AnnaBridge | 172:65be27845400 | 461 | * @param eventId Pointer to the event. |
AnnaBridge | 172:65be27845400 | 462 | * @param flagsToClear Flags to be clear. |
AnnaBridge | 172:65be27845400 | 463 | * |
AnnaBridge | 172:65be27845400 | 464 | * @retval osaStatus_Success The flags were successfully cleared. |
AnnaBridge | 172:65be27845400 | 465 | * @retval osaStatus_Error An incorrect parameter was passed. |
AnnaBridge | 172:65be27845400 | 466 | */ |
AnnaBridge | 172:65be27845400 | 467 | osaStatus_t OSA_EventClear(osaEventId_t eventId, osaEventFlags_t flagsToClear); |
AnnaBridge | 172:65be27845400 | 468 | |
AnnaBridge | 172:65be27845400 | 469 | /*! |
AnnaBridge | 172:65be27845400 | 470 | * @brief Waits for specified event flags to be set. |
AnnaBridge | 172:65be27845400 | 471 | * |
AnnaBridge | 172:65be27845400 | 472 | * This function waits for a combination of flags to be set in an event object. |
AnnaBridge | 172:65be27845400 | 473 | * Applications can wait for any/all bits to be set. Also this function could |
AnnaBridge | 172:65be27845400 | 474 | * obtain the flags who wakeup the waiting task. |
AnnaBridge | 172:65be27845400 | 475 | * |
AnnaBridge | 172:65be27845400 | 476 | * @param eventId Pointer to the event. |
AnnaBridge | 172:65be27845400 | 477 | * @param flagsToWait Flags that to wait. |
AnnaBridge | 172:65be27845400 | 478 | * @param waitAll Wait all flags or any flag to be set. |
AnnaBridge | 172:65be27845400 | 479 | * @param millisec The maximum number of milliseconds to wait for the event. |
AnnaBridge | 172:65be27845400 | 480 | * If the wait condition is not met, pass osaWaitForever_c will |
AnnaBridge | 172:65be27845400 | 481 | * wait indefinitely, pass 0 will return osaStatus_Timeout |
AnnaBridge | 172:65be27845400 | 482 | * immediately. |
AnnaBridge | 172:65be27845400 | 483 | * @param setFlags Flags that wakeup the waiting task are obtained by this parameter. |
AnnaBridge | 172:65be27845400 | 484 | * |
AnnaBridge | 172:65be27845400 | 485 | * @retval osaStatus_Success The wait condition met and function returns successfully. |
AnnaBridge | 172:65be27845400 | 486 | * @retval osaStatus_Timeout Has not met wait condition within timeout. |
AnnaBridge | 172:65be27845400 | 487 | * @retval osaStatus_Error An incorrect parameter was passed. |
AnnaBridge | 172:65be27845400 | 488 | |
AnnaBridge | 172:65be27845400 | 489 | * |
AnnaBridge | 172:65be27845400 | 490 | * @note Please pay attention to the flags bit width, FreeRTOS uses the most |
AnnaBridge | 172:65be27845400 | 491 | * significant 8 bis as control bits, so do not wait these bits while using |
AnnaBridge | 172:65be27845400 | 492 | * FreeRTOS. |
AnnaBridge | 172:65be27845400 | 493 | * |
AnnaBridge | 172:65be27845400 | 494 | */ |
AnnaBridge | 172:65be27845400 | 495 | osaStatus_t OSA_EventWait(osaEventId_t eventId, osaEventFlags_t flagsToWait, bool_t waitAll, uint32_t millisec, osaEventFlags_t *pSetFlags); |
AnnaBridge | 172:65be27845400 | 496 | |
AnnaBridge | 172:65be27845400 | 497 | /*! |
AnnaBridge | 172:65be27845400 | 498 | * @brief Destroys a previously created event object. |
AnnaBridge | 172:65be27845400 | 499 | * |
AnnaBridge | 172:65be27845400 | 500 | * @param eventId Pointer to the event. |
AnnaBridge | 172:65be27845400 | 501 | * |
AnnaBridge | 172:65be27845400 | 502 | * @retval osaStatus_Success The event is successfully destroyed. |
AnnaBridge | 172:65be27845400 | 503 | * @retval osaStatus_Error Event destruction failed. |
AnnaBridge | 172:65be27845400 | 504 | */ |
AnnaBridge | 172:65be27845400 | 505 | osaStatus_t OSA_EventDestroy(osaEventId_t eventId); |
AnnaBridge | 172:65be27845400 | 506 | |
AnnaBridge | 172:65be27845400 | 507 | /*! |
AnnaBridge | 172:65be27845400 | 508 | * @brief Initializes a message queue. |
AnnaBridge | 172:65be27845400 | 509 | * |
AnnaBridge | 172:65be27845400 | 510 | * This function allocates memory for and initializes a message queue. Message queue elements are hardcoded as void*. |
AnnaBridge | 172:65be27845400 | 511 | * |
AnnaBridge | 172:65be27845400 | 512 | * @param msgNo :number of messages the message queue should accommodate. |
AnnaBridge | 172:65be27845400 | 513 | * This parameter should not exceed osNumberOfMessages defined in OSAbstractionConfig.h. |
AnnaBridge | 172:65be27845400 | 514 | * |
AnnaBridge | 172:65be27845400 | 515 | * @return: Handler to access the queue for put and get operations. If message queue |
AnnaBridge | 172:65be27845400 | 516 | * creation failed, return NULL. |
AnnaBridge | 172:65be27845400 | 517 | */ |
AnnaBridge | 172:65be27845400 | 518 | osaMsgQId_t OSA_MsgQCreate(uint32_t msgNo); |
AnnaBridge | 172:65be27845400 | 519 | |
AnnaBridge | 172:65be27845400 | 520 | /*! |
AnnaBridge | 172:65be27845400 | 521 | * @brief Puts a message at the end of the queue. |
AnnaBridge | 172:65be27845400 | 522 | * |
AnnaBridge | 172:65be27845400 | 523 | * This function puts a message to the end of the message queue. If the queue |
AnnaBridge | 172:65be27845400 | 524 | * is full, this function returns the osaStatus_Error; |
AnnaBridge | 172:65be27845400 | 525 | * |
AnnaBridge | 172:65be27845400 | 526 | * @param msgQId pointer to queue returned by the OSA_MsgQCreate function. |
AnnaBridge | 172:65be27845400 | 527 | * @param pMessage Pointer to the message to be put into the queue. |
AnnaBridge | 172:65be27845400 | 528 | * |
AnnaBridge | 172:65be27845400 | 529 | * @retval osaStatus_Success Message successfully put into the queue. |
AnnaBridge | 172:65be27845400 | 530 | * @retval osaStatus_Error The queue was full or an invalid parameter was passed. |
AnnaBridge | 172:65be27845400 | 531 | */ |
AnnaBridge | 172:65be27845400 | 532 | osaStatus_t OSA_MsgQPut(osaMsgQId_t msgQId, osaMsg_t pMessage); |
AnnaBridge | 172:65be27845400 | 533 | |
AnnaBridge | 172:65be27845400 | 534 | /*! |
AnnaBridge | 172:65be27845400 | 535 | * @brief Reads and remove a message at the head of the queue. |
AnnaBridge | 172:65be27845400 | 536 | * |
AnnaBridge | 172:65be27845400 | 537 | * This function gets a message from the head of the message queue. If the |
AnnaBridge | 172:65be27845400 | 538 | * queue is empty, timeout is used to wait. |
AnnaBridge | 172:65be27845400 | 539 | * |
AnnaBridge | 172:65be27845400 | 540 | * @param msgQId Queue handler returned by the OSA_MsgQCreate function. |
AnnaBridge | 172:65be27845400 | 541 | * @param pMessage Pointer to a memory to save the message. |
AnnaBridge | 172:65be27845400 | 542 | * @param millisec The number of milliseconds to wait for a message. If the |
AnnaBridge | 172:65be27845400 | 543 | * queue is empty, pass osaWaitForever_c will wait indefinitely, |
AnnaBridge | 172:65be27845400 | 544 | * pass 0 will return osaStatus_Timeout immediately. |
AnnaBridge | 172:65be27845400 | 545 | * |
AnnaBridge | 172:65be27845400 | 546 | * @retval osaStatus_Success Message successfully obtained from the queue. |
AnnaBridge | 172:65be27845400 | 547 | * @retval osaStatus_Timeout The queue remains empty after timeout. |
AnnaBridge | 172:65be27845400 | 548 | * @retval osaStatus_Error Invalid parameter. |
AnnaBridge | 172:65be27845400 | 549 | */ |
AnnaBridge | 172:65be27845400 | 550 | osaStatus_t OSA_MsgQGet(osaMsgQId_t msgQId, osaMsg_t pMessage, uint32_t millisec); |
AnnaBridge | 172:65be27845400 | 551 | |
AnnaBridge | 172:65be27845400 | 552 | /*! |
AnnaBridge | 172:65be27845400 | 553 | * @brief Destroys a previously created queue. |
AnnaBridge | 172:65be27845400 | 554 | * |
AnnaBridge | 172:65be27845400 | 555 | * @param msgQId queue handler returned by the OSA_MsgQCreate function. |
AnnaBridge | 172:65be27845400 | 556 | * |
AnnaBridge | 172:65be27845400 | 557 | * @retval osaStatus_Success The queue was successfully destroyed. |
AnnaBridge | 172:65be27845400 | 558 | * @retval osaStatus_Error Message queue destruction failed. |
AnnaBridge | 172:65be27845400 | 559 | */ |
AnnaBridge | 172:65be27845400 | 560 | osaStatus_t OSA_MsgQDestroy(osaMsgQId_t msgQId); |
AnnaBridge | 172:65be27845400 | 561 | |
AnnaBridge | 172:65be27845400 | 562 | /*! |
AnnaBridge | 172:65be27845400 | 563 | * @brief Enable all interrupts. |
AnnaBridge | 172:65be27845400 | 564 | */ |
AnnaBridge | 172:65be27845400 | 565 | void OSA_InterruptEnable(void); |
AnnaBridge | 172:65be27845400 | 566 | |
AnnaBridge | 172:65be27845400 | 567 | /*! |
AnnaBridge | 172:65be27845400 | 568 | * @brief Disable all interrupts. |
AnnaBridge | 172:65be27845400 | 569 | */ |
AnnaBridge | 172:65be27845400 | 570 | void OSA_InterruptDisable(void); |
AnnaBridge | 172:65be27845400 | 571 | |
AnnaBridge | 172:65be27845400 | 572 | /*! |
AnnaBridge | 172:65be27845400 | 573 | * @brief Enable all interrupts using PRIMASK. |
AnnaBridge | 172:65be27845400 | 574 | */ |
AnnaBridge | 172:65be27845400 | 575 | void OSA_EnableIRQGlobal(void); |
AnnaBridge | 172:65be27845400 | 576 | |
AnnaBridge | 172:65be27845400 | 577 | /*! |
AnnaBridge | 172:65be27845400 | 578 | * @brief Disable all interrupts using PRIMASK. |
AnnaBridge | 172:65be27845400 | 579 | */ |
AnnaBridge | 172:65be27845400 | 580 | void OSA_DisableIRQGlobal(void); |
AnnaBridge | 172:65be27845400 | 581 | |
AnnaBridge | 172:65be27845400 | 582 | /*! |
AnnaBridge | 172:65be27845400 | 583 | * @brief Delays execution for a number of milliseconds. |
AnnaBridge | 172:65be27845400 | 584 | * |
AnnaBridge | 172:65be27845400 | 585 | * @param millisec The time in milliseconds to wait. |
AnnaBridge | 172:65be27845400 | 586 | */ |
AnnaBridge | 172:65be27845400 | 587 | void OSA_TimeDelay(uint32_t millisec); |
AnnaBridge | 172:65be27845400 | 588 | |
AnnaBridge | 172:65be27845400 | 589 | /*! |
AnnaBridge | 172:65be27845400 | 590 | * @brief This function gets current time in milliseconds. |
AnnaBridge | 172:65be27845400 | 591 | * |
AnnaBridge | 172:65be27845400 | 592 | * @retval current time in milliseconds |
AnnaBridge | 172:65be27845400 | 593 | */ |
AnnaBridge | 172:65be27845400 | 594 | uint32_t OSA_TimeGetMsec(void); |
AnnaBridge | 172:65be27845400 | 595 | |
AnnaBridge | 172:65be27845400 | 596 | /*! |
AnnaBridge | 172:65be27845400 | 597 | * @brief Installs the interrupt handler. |
AnnaBridge | 172:65be27845400 | 598 | * |
AnnaBridge | 172:65be27845400 | 599 | * @param IRQNumber IRQ number of the interrupt. |
AnnaBridge | 172:65be27845400 | 600 | * @param handler The interrupt handler to install. |
AnnaBridge | 172:65be27845400 | 601 | */ |
AnnaBridge | 172:65be27845400 | 602 | void OSA_InstallIntHandler(uint32_t IRQNumber, void (*handler)(void)); |
AnnaBridge | 172:65be27845400 | 603 | |
AnnaBridge | 172:65be27845400 | 604 | #ifdef __cplusplus |
AnnaBridge | 172:65be27845400 | 605 | } |
AnnaBridge | 172:65be27845400 | 606 | #endif |
AnnaBridge | 172:65be27845400 | 607 | |
AnnaBridge | 172:65be27845400 | 608 | #endif |