/*
 * @file hv_vos_EventGroup.h
 * @brief Header file of eventgroup.
 *
 * @verbatim
 * ==============================================================================
 *                        ##### How to use #####
 * ==============================================================================
 * (+) Use ()
 *
 * @endverbatim
 * @author HiView SoC Software Team
 * @version 1.0.0
 * @date 2023-03-01
 */


#ifndef _HV_VOS_EVENT_GROUP_H
#define _HV_VOS_EVENT_GROUP_H

#include "hv_vos_Types.h"

VOS_EXTERN_C_BEGIN


/** @brief task forward declaration */
typedef struct _HV_VOS_EVENT_GROUP_S  HV_VOS_EVENT_GROUP_S;

HV_VOS_EVENT_GROUP_S* Hv_Vos_EventGroupInit();

UINT32 Hv_Vos_EventGroupWaitBits(HV_VOS_EVENT_GROUP_S *self, UINT32 uiBitsToWait);

UINT32 Hv_Vos_EventGroupTimedWaitBits(HV_VOS_EVENT_GROUP_S *self, UINT32 uiBitsToWait, UINT32 waitMs);

UINT32 Hv_Vos_EventGroupSetBits(HV_VOS_EVENT_GROUP_S *self, UINT32 uiBitsToSet);

BOOL Hv_Vos_EventGroupSetBitsFromISR(HV_VOS_EVENT_GROUP_S *self, UINT32 uiBitsToSet);


VOS_EXTERN_C_END


#endif
