/* SPDX-License-Identifier: LGPL-2.1-only OR BSD-3-Clause */
/******************************************************************************
 *
 * This file is provided under a dual license.  When you use or
 * distribute this software, you may choose to be licensed under
 * version 2.1 of the GNU Lesser General Public License
 * ("LGPLv2.1 License") or BSD License.
 *
 * LGPLv2.1 License
 *
 * Copyright(C) 2019 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of version 2.1 of the GNU Lesser General Public
 * License as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html for more
 * details.
 *
 * BSD LICENSE
 *
 * Copyright(C) 2019 MediaTek Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *  * Neither the name of the copyright holder nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *****************************************************************************/

/*-----------------------------------------------------------------------------
 * $RCSfile: evctx_slctr.h,v $
 * $Revision: #1 $
 * $Date: 2015/05/29 $
 * $Author: brianpc.huang $
 * $CCRevision: /main/DTV_X_HQ_int/4 $
 * $SWAuthor: Clear Case Administrator $
 * $MD5HEX: 4d43a6d2b67a7d98c00a94263455ea99 $
 *
 * Description:
 *         This contains Event Context library macros, definitons, structures,
 *         and API's, which can be shared with other middleware modules, but 
 *         not exported to the 3rd parties.
 *---------------------------------------------------------------------------*/

#ifndef _EVCTX_SLCTR_H_
#define _EVCTX_SLCTR_H_

/*-----------------------------------------------------------------------------
                    include files
 ----------------------------------------------------------------------------*/
#include "x_evctx.h"
#include "x_evctx_eng.h"

/*----------------------------------------------------------------------------*/
/*! @addtogroup groupMW_EVCTX
 *  @{
 */
/*----------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------
                    macros, defines, typedefs, enums
 ----------------------------------------------------------------------------*/
/*#define PS_EVCTX_ENG_MSG_Q_PREFIX      "ECE_"*/




#define _EVCTX_ERROR                    "{EVCTX} ERR: "
#define _EVCTX_API                      "{EVCTX} "
#define _EVCTX_INFO                     "{EVCTX} "

/*-----------------------------------------------------------------------------
                    functions declarations
 ----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/*! @brief	initialization the evctx
 *
 *    @param  [in] pt_evctx_thread_descr          	-pt_evctx_thread_descr References 
 *	@note	
 *
 *	@see
 *    @return		INT32
 *    @retval		EVCTXR_OK   - Success
 */
/*----------------------------------------------------------------------------*/
extern INT32 evctx_init (
                const THREAD_DESCR_T*   pt_evctx_thread_descr);

/*----------------------------------------------------------------------------*/
/*! @brief	delete thevctx
 *
 *	@note	
 *
 *	@see
 *    @return		INT32
 *    @retval		EVCTXR_OK   - Success
 */
/*----------------------------------------------------------------------------*/
extern INT32 evctx_exit (VOID);


/*----------------------------------------------------------------------------*/
/*! @brief	the initialziation status of EVCTX component
 *
 *	@note	
 *
 *	@see
 *    @return		BOOL
 *    @retval		TRUE        - The EVCTX component had been initialized.
 *         	 		FALSE       - The EVCTX component is not initialized.
 */
/*----------------------------------------------------------------------------*/
extern BOOL evctx_is_inited (VOID);

/*----------------------------------------------------------------------------*/
/*! @brief	return the handle of the message queue
 *
 *	@note	
 *
 *	@see
 *    @return		HANDLE_T
 *    @retval		return the handle of the message queue
 */
/*----------------------------------------------------------------------------*/

extern HANDLE_T evctx_get_msg_q_hdl (VOID);

/*----------------------------------------------------------------------------*/
/*! @brief	returns the current setting of debug level.
 *
 *	@note	
 *
 *	@see
 *    @return		UINT16
 *    @retval		the current setting of debug level.
 */
/*----------------------------------------------------------------------------*/

extern UINT16 evctx_get_dbg_level (VOID);

extern CHAR*  evctx_get_module_name(VOID);
/*----------------------------------------------------------------------------*/
/*! @brief	changes the setting of debug level to new one.
 *
 *    @param  [in] ui2_level     -new setting of debug level. 
 *	@note	
 *
 *	@see
 *    @return		BOOL
 *    @retval		TRUE        - Routine successful.
 *         	 		FALSE       - Routine failed.
 */
/*----------------------------------------------------------------------------*/

extern BOOL evctx_set_dbg_level (UINT16  ui2_level);

/*----------------------------------------------------------------------------*/
/*! @brief	the TS of evctx object is same or not.
 *
 *    @param  [in] pt_ts_desc     -the TS descriptor. 
 *	@note	
 *
 *	@see
 *    @return		BOOL
 *    @retval		TRUE        - same TS.
 *         	 		FALSE       - not same TS.
 */
/*----------------------------------------------------------------------------*/
extern BOOL evctx_is_same_ts (TS_DESCR_T* pt_ts_desc);

#endif /* _EVCTX_SLCTR_H_ */

/*----------------------------------------------------------------------------*/
/*! @} */                                             /* end of groupMW_EVCTX */
/*----------------------------------------------------------------------------*/

