/**
* Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved.
*
* @file ai_dvb_monitor.h
*
* @brief this file defines dvb monitor interface for app layer.
*
* The file supports the dvb monitor functions by fram work other module. At present, the function
* include dvb monitor initialize, dvb monitor finalize.
* This module dispose signal monitor, program state monitor.
*
*/

#ifndef __AI_DVB_MONITOR_H__
#define __AI_DVB_MONITOR_H__

#include "al_basictypes.h"
//#include "al_dvb_monitor.h"

#ifdef __cplusplus
	extern "C"{
#endif

/**
* @brief Define message type of dvb monitor component, usted to notify framwork.
*/
typedef enum
{
	AI_DVB_MONITOR_TUNER_LOCKED, /**< Tuner locked, signal present event*/
	AI_DVB_MONITOR_TUNER_UNLOCKED, /**< Tuner not locked, no signal event*/
	AI_DVB_MONITOR_STREAM_NO_DATA, /**< Get stream from PE, it is no data (parent lock, temp service, service not running and so on) */
	AI_DVB_MONITOR_STREAM_INVALID_DATA, /**< Get stream from PE, it is invalide video data  */
	AI_DVB_MONITOR_STREAM_UNSUPPORT_DATA, /**< Get stream from PE, it is unsupport video data  */
	AI_DVB_MONITOR_STREAM_HAS_DATA, /**< Get stream from PE, it is has data */
	AI_DVB_MONITOR_STREAM_SCRAMBLE, /**< Get stream from PE, it is scramble */
	AI_DVB_MONITOR_STREAM_NO_SCRAMBLE, /**< Get stream from PE, it is not scramble */
	AI_DVB_MONITOR_PARENTAL_LOCKED, /**< Current program is locked */
	AI_DVB_MONITOR_PARENTAL_UNLOCKED, /**< Current program is not locked */

	AI_DVB_MONITOR_MAX,
} AI_DVBMon_Message_Type_t;

/**
* @brief call back function prototype for framwork to register.
*/
typedef	al_int32 (* AI_pfDVBMonCallback)(AI_DVBMon_Message_Type_t EventType, al_uint32 u32Param);

/**
* @brief dvb monitor init function.
*
* @param pfDvbMonCallbks[input] dvb monitor notify framwork callback function.
*
* @return AL_SUCCESS if initialization is successful, AL_FAILURE otherwise.
*/
AL_Return_t AI_DVB_Monitor_Init(AI_pfDVBMonCallback pfDvbMonCallbks);

/**
* @brief dvb monitor init function.
*
* @param al_void.
*
* @return AL_SUCCESS if uninitialization is successful, AL_FAILURE otherwise.
*/
AL_Return_t AI_DVB_Monitor_Uninit(al_void);

#ifdef __cplusplus
}
#endif
#endif
