/****************************************************************************** *_Copyright (c) 2009 Digital Stream Technology Inc. All Rights Reserved. * * Module: dstdd * * Description * * @author * @version $Revision: 1.1 $ * ******************************************************************************/ #include #include #include #include "dsthalcommon.h" #include "dsthalfe.h" #include "dstddfe.h" #include "dstddsys.h" #include "dstddcap.h" #include "S5H1409.h" #ifdef DMALLOC #include #endif /****************************************************************************** * Global variable declaration ******************************************************************************/ int gddFeDbgLvl = 2; /****************************************************************************** * Imported variable declaration ******************************************************************************/ extern DST_FE sDSTFE_Tuner[TUNER_MAX-1]; /****************************************************************************** * Imported function declaration ******************************************************************************/ /****************************************************************************** * Local definitions ******************************************************************************/ #define USE_S5H_DEMOD 0 // S5H14xx Demodulator »ç¿ë ¿©ºÎ. /****************************************************************************** * Local typedefs ******************************************************************************/ /****************************************************************************** * Local variables declaration ******************************************************************************/ /****************************************************************************** * Local function prototypes ******************************************************************************/ DHL_RESULT DD_FE_Init( TunerType Tuner, P_DST_FE pDSTFETuner ) { DHL_RESULT dhlResult = DHL_OK; if ( Tuner == TUNER_FAT ) { #if USE_S5H_DEMOD // // Call the demodulator/tuner initialization API here. // if ( S5H_Initialize() ) return DHL_FAIL; #endif } else { DHL_DbgPrintf( 0, DDDBG_FE, "Not Implemented!\n"); dhlResult = DHL_FAIL; } return dhlResult; } DHL_RESULT DD_FE_SetChannelFAT( P_DST_FE pDSTFETuner, DS_U32 Frequency, TunerDemod *Demod ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD int Result; Result = S5H_Stop(); if ( Result ) { dhlResult = DHL_FAIL; goto done; } Result = S5H_SetFrequency( Frequency ); if ( Result ) { dhlResult = DHL_FAIL; goto done; } Result = S5H_Start( (TunerDemod)*Demod, (*Demod == DEMOD_NTSC), 0 /*Cable - Doesn't matter*/ ); if ( Result ) { dhlResult = DHL_FAIL; goto done; } done: #endif return dhlResult; } DHL_RESULT DD_FE_SetChannelFDC( P_DST_FE pDSTFETuner, DS_U32 Frequency, TunerDemod *Demod ) { DHL_RESULT dhlResult = DHL_OK; DHL_DbgPrintf( 0, DDDBG_FE, "NOT IMPLEMENTED!\n"); dhlResult = DHL_FAIL; return dhlResult; } DHL_RESULT DD_FE_Stop( P_DST_FE pDSTFETuner ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD DHL_CHECK( S5H_Stop() == 0, dhlResult, DHL_FAIL_CORE_DRIVER ); done: #endif return dhlResult; } DHL_RESULT DD_FE_Close( P_DST_FE pDSTFETuner ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetLockStatus( P_DST_FE pDSTFETuner, DS_BOOL *pLockStatus ) { DHL_RESULT dhlResult = DHL_OK; int err = 0; int lockStatus; if ( pDSTFETuner->bCurDemod == DEMOD_NTSC ) *pLockStatus = 0; #if USE_S5H_DEMOD else err = S5H_GetLockStatus( &lockStatus ); #endif lockStatus = DS_TRUE; if ( err != 0 ) dhlResult = DHL_FAIL; if ( lockStatus ) *pLockStatus = 1; else *pLockStatus = 0; return dhlResult; } DHL_RESULT DD_FE_GetSNR( P_DST_FE pDSTFETuner, float *pSNR ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD int err = 0; err = S5H_GetSNR( pSNR ); if ( err != 0 ) dhlResult = DHL_FAIL; #endif return dhlResult; } DHL_RESULT DD_FE_GetTrellisSNR( P_DST_FE pDSTFETuner, double *pTrellisSNR ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetSignalStrength( P_DST_FE pDSTFETuner, DS_U32 *pSQI ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD if ( S5H_GetSignalStrength( (int *)pSQI ) != 0 ) dhlResult = DHL_FAIL; #endif return dhlResult; } DHL_RESULT DD_FE_GetRSError( P_DST_FE pDSTFETuner, DS_U32 *pRSErrorCnt, float *pRSErrorRate ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD if ( S5H_GetErrCount( pRSErrorCnt ) != 0 ) dhlResult = DHL_FAIL; #endif return dhlResult; } DHL_RESULT DD_FE_GetBERT( P_DST_FE pDSTFETuner, DS_U32 *pErrorCnt, float *pErrorRate ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_BERTStart( P_DST_FE pDSTFETuner, FEBertRm HdrRm, FEBertSource Source, FEBertPNInv PNInv, FEBertPNSeq PNSeq) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_BERTStop( P_DST_FE pDSTFETuner ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetModFormat( P_DST_FE pDSTFETuner, TunerDemod *pModFormat ) { DHL_RESULT dhlResult = DHL_OK; //DHL_CHECK( S5H_GetModFormat( pModFormat ) == 0, dhlResult, DHL_FAIL ); *pModFormat = DEMOD_ISDBT; //done: return dhlResult; } DHL_RESULT DD_FE_SetFDCConfig( P_DST_FE pDSTFETuner, DS_U32 RFFreq, FdcSymbolRate_t SymbolRate, FdcSignalPolarity_t ClockPol, FdcSignalPolarity_t DataPol, FdcSignalPolarity_t DecoderMode, DS_U32 RefDivider ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_CheckAlive( P_DST_FE pDSTFETuner ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_SetGPIOC( P_DST_FE pDSTFETuner, int mask, int value ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetGPIOC( P_DST_FE pDSTFETuner, int mask, int *value ) { DHL_RESULT dhlResult = DHL_OK; *value = 0; return (dhlResult); } DHL_RESULT DD_FE_SetFrequency( P_DST_FE pDSTFETuner, DS_U32 Frequency, TunerDemod Demod, int isUpdate ) { DHL_RESULT dhlResult = DHL_OK; TunerDemod dmd = Demod; #if USE_S5H_DEMOD int ret = -1; #endif if ( !isUpdate ) { #if USE_S5H_DEMOD if ( Demod == DEMOD_NTSC ) ret = S5H_SetFrequencyNTSC( Frequency ); else ret = S5H_SetFrequency( Frequency ); DHL_CHECK( ret >= 0, dhlResult, DHL_FAIL ); #endif } else dhlResult = DD_FE_SetChannelFAT( pDSTFETuner, Frequency, &dmd ); #if USE_S5H_DEMOD done: #endif return dhlResult; } DS_U32 DD_FE_GetFrequency(P_DST_FE pDSTFETuner) { #if USE_S5H_DEMOD return S5H_GetFrequency(); #endif return 213000; } DHL_RESULT DD_FE_SetAudioMode( FEAudioMode_t audioMode, FEAudioStandard_t audioStandard ) { DHL_RESULT dhlResult = DHL_OK; switch(audioMode) { case FE_AUDIO_STEREO: break; case FE_AUDIO_SAP: case FE_AUDIO_MONO_SAP: break; case FE_AUDIO_MONO: default: break; } #if USE_S5H_DEMOD DHL_CHECK( S5H_SetAudioMode( audioMode ) == 0, dhlResult, DHL_FAIL ); DHL_CHECK( S5H_SetAudioStandard( audioStandard) == 0, dhlResult, DHL_FAIL ); done: #endif return dhlResult; } DHL_RESULT DD_FE_GetAudioMode( FEAudioMode_t *audioMode, FEAudioStandard_t *audioStandard ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetTDA9885Reg( P_DST_FE pDSTFETuner, DS_U8 *pStatus ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetAFCReg( P_DST_FE pDSTFETuner, DS_U8 *pStatus ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_SetInput( P_DST_FE pDSTFETuner, int Cable ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DS_U32 DD_FE_GetVersion() { DS_U32 FEVersion = 0; return FEVersion; } DHL_RESULT DD_FE_AnalogGetLockStatus( P_DST_FE pDSTFETuner, DS_BOOL *pLockStatus ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_AnalogGetLockStatusEx( P_DST_FE pDSTFETuner, DS_BOOL *pLockStatus ) { DHL_RESULT dhlResult = DHL_OK; return dhlResult; } DHL_RESULT DD_FE_GetSignalPower( P_DST_FE pDSTFETuner, DS_U32 *pPower ) { DHL_RESULT dhlResult = DHL_OK; #if USE_S5H_DEMOD if ( S5H_GetSignalPower( (int *)pPower ) != 0 ) dhlResult = DHL_FAIL; #endif return (dhlResult); }