| /* |
| * Copyright 2018 NXP |
| * All rights reserved. |
| * |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #ifndef __COMMON_TASK_H__ |
| #define __COMMON_TASK_H__ |
| |
| /*! |
| * @addtogroup CommonTask |
| * @{ |
| */ |
| |
| /******************************************************************************* |
| * Definitions |
| ******************************************************************************/ |
| |
| #if defined(OSA_USED) |
| |
| /*! @brief Definition of common task max msg queue count. */ |
| #ifndef COMMON_TASK_MAX_MSGQ_COUNT |
| #define COMMON_TASK_MAX_MSGQ_COUNT (8U) |
| #endif |
| |
| /*! @brief Definition of common task priority. */ |
| #ifndef COMMON_TASK_PRIORITY |
| #define COMMON_TASK_PRIORITY (9U) |
| #endif |
| |
| /*! @brief Definition of common task stack size. */ |
| #ifndef COMMON_TASK_STACK_SIZE |
| #define COMMON_TASK_STACK_SIZE (2000U) |
| #endif |
| |
| /*! @brief The status type of common task */ |
| typedef enum _common_task_status |
| { |
| kStatus_COMMON_TASK_Success = kStatus_Success, /*!< Success */ |
| kStatus_COMMON_TASK_Error = MAKE_STATUS(kStatusGroup_COMMON_TASK, 1), /*!< Failed */ |
| kStatus_COMMON_TASK_Busy = MAKE_STATUS(kStatusGroup_COMMON_TASK, 2), /*!< Busy */ |
| } common_task_status_t; |
| |
| /*! @brief The callback function of common task */ |
| typedef void (*common_task_message_callback_t)(void *callbackParam); |
| |
| /*! @brief The callback message struct of common task */ |
| typedef struct _common_task_message |
| { |
| common_task_message_callback_t callback; |
| void *callbackParam; |
| } common_task_message_t; |
| |
| /******************************************************************************* |
| * API |
| ******************************************************************************/ |
| |
| #if defined(__cplusplus) |
| extern "C" { |
| #endif /* _cplusplus */ |
| |
| /*! |
| * @name Common task functional operation |
| * @{ |
| */ |
| |
| /*! |
| * @brief Initializes the common task module |
| * |
| * This function is used to initialize the common task module. The module is a delegation for other modules |
| * without the self task. The common task will be created when the function is calling. |
| * The task stack size is set by #COMMON_TASK_STACK_SIZE. And the task priority is defined by #COMMON_TASK_PRIORITY. |
| * And a message queue is created with the length #COMMON_TASK_MAX_MSGQ_COUN by the function. |
| * |
| * This is an example. |
| * @code |
| * COMMON_TASK_init(); |
| * @endcode |
| * @retval kStatus_COMMON_TASK_Success The common task initialization succeed. |
| * @retval kStatus_COMMON_TASK_Error An error occurred when the common task is initialized. |
| */ |
| common_task_status_t COMMON_TASK_init(void); |
| |
| /*! |
| * @brief De-initializes the common task module |
| * |
| * This function is used to de-initialize the common task module. |
| * |
| * @retval kStatus_COMMON_TASK_Success The common task de-initialization succeed. |
| * @retval kStatus_COMMON_TASK_Error An error occurred when the common task is de-initialized. |
| */ |
| common_task_status_t COMMON_TASK_deinit(void); |
| |
| /*! |
| * @brief Posts a new message to common task |
| * |
| * This function is used to post a new message to common task. The message space cannot be released until |
| * the message is executed. |
| * |
| * @param msg Pointer to point to a memory space of #common_task_message_t allocated by the caller. |
| * @retval kStatus_COMMON_TASK_Success The common task de-initialization succeed. |
| * @retval kStatus_COMMON_TASK_Error An error occurred when post a message to the common task. |
| */ |
| common_task_status_t COMMON_TASK_post_message(common_task_message_t *msg); |
| |
| /*! @} */ |
| |
| #if defined(__cplusplus) |
| } |
| #endif |
| |
| #endif |
| |
| /*! @}*/ |
| |
| #endif |