mbed official / mbed-dev

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

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