/*! Time-stamp: <@(#)ATBoardModDVBATSC.h   07/05/2007 - 15:46:04   P.Hoogervorst>
*********************************************************************
*  @file   : ATBoardModDVBATSC.h
*
*  Author  : P.Hoogervorst                              Date: 07/05/2007
*
*  Purpose : Implementation of methods for class 
*
*********************************************************************
* Version History:
*
* V 0.10  07/05/2007  BN : First Revision
*
*********************************************************************
*/

#ifndef __ATBOARD_MOD_DVBATSC_H__
#define __ATBOARD_MOD_DVBATSC_H__

/**********************************************************************************************************/
// includes
#include "ATBoardModRfIf.h"

class CATBoardModDVBATSC : public CAtBoardModRfIf
{
public:
	CATBoardModDVBATSC(void);
public:
	virtual ~CATBoardModDVBATSC(void);

public:

    /*!
     * Do the one time initialize of the modulator. Is done once at startup.
     *
	 * @return BOOL  : TRUE on success, else FALSE
     */
	BOOL Init();

	/*!
     * Set the Modulator.
	 *
     * @param Inversion :			spectral inversion selection
 	 *
	 * @return BOOL  : TRUE on success, else FALSE
     */
	BOOL Set(	src_spectral_inversion_t	Inversion);

	/*!
	 * Get the modulation status of the modulator
     *
	 * @param bInSync :				TRUE: modulator core is in sync, FALSE: not in sync
	 * @param b204PacketSize :		TRUE: modulator core has detected a transport stream packet size of 204, FALSE: a transport stream packet size of 188
	 * @param bModOFlow :			TRUE: modulator core has overflowed (error), FALSE: modulator is working correctly
	 * @param bModUFlow :			TRUE: modulator core has underflowed (error), FALSE: modulator is working correctly
     *
	 * @return BOOL  : TRUE on success, else FALSE
     */
	BOOL Get(BOOL &bInSync, BOOL &b204PacketSize, BOOL &bModOFlow, BOOL &bModUFlow); 

	/*!
	* Initialize play for derived class. If the initialization of the play must be changed or expanded by a derived class,
	* The derived class should do that in this function
	*
	* @param nFileBitrate : Bitrate of the file to play 
	* @param bORemux : TRUE: enable bitrate remultiplexing, FALSE: disable bitrate remultiplexing
	* @param nOutputBitrate : Output bitrate. Only used if bORemux is enabled, then it must be equal or higher as the nFileBitrate. If bORemux is disabled, Output nOutputBitrate must be set to MAX_ASIBITRATE
	* @param OSel : Selects which output ports are enabled
	* @param OMode : Selects the output standard
	* @param OSpiMode : Selects the SPI output mode
	* @param OTsPSize : Selects the output transport packet size
	* @param bOHTP : TRUE: Hardware Generated Transport stream is enabled, FALSE: Hardware Generated Transport stream is disabled.
	* @param bOCTP : TRUE: If Hardware Generated Transport stream is enbaled, counter packets are generated, FALSE, null packets are generated.
	* @param nBurstSize : Output burst size. (Only for the serial ASI output)
	*
	* @return BOOL  : TRUE on success, else FALSE
	*/
	BOOL _InitPlay	   (u32			nFileBitrate,
						BOOL		bORemux,
						u32			nOutputBitrate,
						EIOSel		OSel,
						EIOMode		OMode,
						EIOSpiMode	OSpiMode,
						ETSPSize	OTsPSize,
						BOOL		bOHTP,
						BOOL		bOCTP,
						BYTE		nBurstSize);

};

#endif //__ATBOARD_MOD_DVBATSC_H__
