/*! ********************************************************************************* * Copyright (c) 2013-2014, Freescale Semiconductor, Inc. * Copyright 2016-2017 NXP * All rights reserved. * * ile * * SPDX-License-Identifier: BSD-3-Clause ********************************************************************************** */ #if !defined(__FSL_OS_ABSTRACTION_FREERTOS_H__) #define __FSL_OS_ABSTRACTION_FREERTOS_H__ #if defined(__IAR_SYSTEMS_ICC__) /** * Workaround to disable MISRA C message suppress warnings for IAR compiler. */ /* http://supp.iar.com/Support/?note=24725 */ #define MISRAC_DISABLE \ _Pragma( \ "diag_suppress= \ Pm001,Pm002,Pm003,Pm004,Pm005,Pm006,Pm007,Pm008,Pm009,Pm010,Pm011,\ Pm012,Pm013,Pm014,Pm015,Pm016,Pm017,Pm018,Pm019,Pm020,Pm021,Pm022,\ Pm023,Pm024,Pm025,Pm026,Pm027,Pm028,Pm029,Pm030,Pm031,Pm032,Pm033,\ Pm034,Pm035,Pm036,Pm037,Pm038,Pm039,Pm040,Pm041,Pm042,Pm043,Pm044,\ Pm045,Pm046,Pm047,Pm048,Pm049,Pm050,Pm051,Pm052,Pm053,Pm054,Pm055,\ Pm056,Pm057,Pm058,Pm059,Pm060,Pm061,Pm062,Pm063,Pm064,Pm065,Pm066,\ Pm067,Pm068,Pm069,Pm070,Pm071,Pm072,Pm073,Pm074,Pm075,Pm076,Pm077,\ Pm078,Pm079,Pm080,Pm081,Pm082,Pm083,Pm084,Pm085,Pm086,Pm087,Pm088,\ Pm089,Pm090,Pm091,Pm092,Pm093,Pm094,Pm095,Pm096,Pm097,Pm098,Pm099,\ Pm100,Pm101,Pm102,Pm103,Pm104,Pm105,Pm106,Pm107,Pm108,Pm109,Pm110,\ Pm111,Pm112,Pm113,Pm114,Pm115,Pm116,Pm117,Pm118,Pm119,Pm120,Pm121,\ Pm122,Pm123,Pm124,Pm125,Pm126,Pm127,Pm128,Pm129,Pm130,Pm131,Pm132,\ Pm133,Pm134,Pm135,Pm136,Pm137,Pm138,Pm139,Pm140,Pm141,Pm142,Pm143,\ Pm144,Pm145,Pm146,Pm147,Pm148,Pm149,Pm150,Pm151,Pm152,Pm153,Pm154,\ Pm155") #define MISRAC_ENABLE \ _Pragma( \ "diag_default= \ Pm001,Pm002,Pm003,Pm004,Pm005,Pm006,Pm007,Pm008,Pm009,Pm010,Pm011,\ Pm012,Pm013,Pm014,Pm015,Pm016,Pm017,Pm018,Pm019,Pm020,Pm021,Pm022,\ Pm023,Pm024,Pm025,Pm026,Pm027,Pm028,Pm029,Pm030,Pm031,Pm032,Pm033,\ Pm034,Pm035,Pm036,Pm037,Pm038,Pm039,Pm040,Pm041,Pm042,Pm043,Pm044,\ Pm045,Pm046,Pm047,Pm048,Pm049,Pm050,Pm051,Pm052,Pm053,Pm054,Pm055,\ Pm056,Pm057,Pm058,Pm059,Pm060,Pm061,Pm062,Pm063,Pm064,Pm065,Pm066,\ Pm067,Pm068,Pm069,Pm070,Pm071,Pm072,Pm073,Pm074,Pm075,Pm076,Pm077,\ Pm078,Pm079,Pm080,Pm081,Pm082,Pm083,Pm084,Pm085,Pm086,Pm087,Pm088,\ Pm089,Pm090,Pm091,Pm092,Pm093,Pm094,Pm095,Pm096,Pm097,Pm098,Pm099,\ Pm100,Pm101,Pm102,Pm103,Pm104,Pm105,Pm106,Pm107,Pm108,Pm109,Pm110,\ Pm111,Pm112,Pm113,Pm114,Pm115,Pm116,Pm117,Pm118,Pm119,Pm120,Pm121,\ Pm122,Pm123,Pm124,Pm125,Pm126,Pm127,Pm128,Pm129,Pm130,Pm131,Pm132,\ Pm133,Pm134,Pm135,Pm136,Pm137,Pm138,Pm139,Pm140,Pm141,Pm142,Pm143,\ Pm144,Pm145,Pm146,Pm147,Pm148,Pm149,Pm150,Pm151,Pm152,Pm153,Pm154,\ Pm155") #else /* Empty MISRA C macros for other toolchains. */ #define MISRAC_DISABLE #define MISRAC_ENABLE #endif MISRAC_DISABLE #include "FreeRTOS.h" #include "semphr.h" #include "event_groups.h" MISRAC_ENABLE /*! * @addtogroup os_abstraction_free_rtos * @{ */ /******************************************************************************* * Declarations ******************************************************************************/ /*! @brief Type for a task handler, returned by the OSA_TaskCreate function. */ typedef TaskHandle_t task_handler_t; /*! @brief Type for a task stack.*/ typedef portSTACK_TYPE task_stack_t; /*! @brief Type for task parameter */ typedef void *task_param_t; /*! @brief Type for an event flags object.*/ typedef EventBits_t event_flags_t; /*! @brief Constant to pass as timeout value in order to wait indefinitely. */ #define OSA_WAIT_FOREVER 0xFFFFFFFFU /*! @brief OSA's time range in millisecond, OSA time wraps if exceeds this value. */ #define FSL_OSA_TIME_RANGE 0xFFFFFFFFU /*! @brief The default interrupt handler installed in vector table. */ #define OSA_DEFAULT_INT_HANDLER ((osa_int_handler_t)(&DefaultISR)) extern void DefaultISR(void); /*! * @name Thread management * @{ */ /*! * @brief To provide unified task piority for upper layer, OSA layer makes conversion. */ #define PRIORITY_OSA_TO_RTOS(osa_prio) ((UBaseType_t)configMAX_PRIORITIES - (osa_prio)-2U) #define PRIORITY_RTOS_TO_OSA(rtos_prio) ((UBaseType_t)configMAX_PRIORITIES - (rtos_prio)-2U) /* @}*/ /*! * @name Message queues * @{ */ /*! * @brief This macro statically reserves the memory required for the queue. * * @param name Identifier for the memory region. * @param number Number of elements in the queue. * @param size Size of every elements in words. */ #define MSG_QUEUE_DECLARE(name, number, size) msg_queue_t *name = NULL /* @}*/ /*! @}*/ /*! @}*/ /*! @}*/ #endif /* __FSL_OS_ABSTRACTION_FREERTOS_H__ */