blob: 3350b1f14800421c39b06da49d6d8f683ab76387 [file] [log] [blame]
/*
* 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