/**
* Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved.
*
* @file
*
* @brief this file defines dvb monitor interface for app layer.
*
* The file supports the dvb monitor functions by used for app layer. At present, the function
* include dvb monitor start, dvb monitor stop, dvb monitor running state.
* This module dispose signal monitor, program state monitor.
*
*/

#ifndef __AL_DVB_MONITOR_H__
#define __AL_DVB_MONITOR_H__

#include "al_basictypes.h"

#ifdef __cplusplus
	extern "C"{
#endif

/**
* @brief Define dvb monitor state type.
*/
typedef enum
{
	AL_DVB_MONITOR_STATE_MONITOR, /**< Get monitor state, al_true: monitor running, al_false: monitor not running, other: invalid state*/
	AL_DVB_MONITOR_STATE_SIGNAL, /**< Get signal state, al_false: no signale, al_true: good signal, , other: invalid state*/

	AL_DVB_MONITOR_STATE_MAX,
} AL_DVBMon_State_Type_t;

/**
* @brief Define dvb monitor value type.
*/
typedef enum
{
	AL_DVB_MONITOR_VALUE_FALSE = al_false,
	AL_DVB_MONITOR_VALUE_TRUE = al_true,

	AL_DVB_MONITOR_VALUE_INVAILED = 2,
} AL_DVBMon_Value_Type_t;


/**
* @brief dvb monitor start function.
*
* Active dvb monitor task, start to monitor signal state and program state change.
*
* @param al_void.
*
* @return AL_SUCCESS dvb monitor state is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_DVB_Monitor_Start(al_void);

/**
* @brief dvb monitor stop function.
*
*  Stop dvb monitor task, stop to monitor signal state and program state.
*
* @param bExit[input] used to mark hang up dvb monitor task or exit dvb monitor.
*
* @return AL_SUCCESS dvb monitor stop is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_DVB_Monitor_Stop(al_bool bExit);

/**
* @brief get dvb monitor running state function.
*
* Get dvb monitor current state.
*
* @param eStateType[input] state type.
*
* @param pbDVBMonState[output] dvb monitor running state value.
*
* @return AL_SUCCESS get dvb monitor state is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_DVB_Monitor_GetState(AL_DVBMon_State_Type_t eStateType, al_uint8 *pbDVBMonState);

/**
* @brief set dvb monitor signal state function.
*
* Set dvb monitor signal state, because driver has received stream has data or vip finish but dvb monitor has not check signal avaible.
*
* @param eStateType[input] state type.
*
* @param pbDVBMonState[output] dvb monitor running state value.
*
* @return AL_SUCCESS get dvb monitor state is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_DVB_Monitor_SetState(AL_DVBMon_State_Type_t eStateType, al_uint8 *pbDVBMonState);


#ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
al_void AL_DVB_Monitor_SetForceMotor(al_uint8 bForceMotor);
#endif

#ifdef __cplusplus
}
#endif
#endif


