qpskfrontend.c

来自「QPSK Tuner details, for conexant chipset」· C语言 代码 · 共 561 行 · 第 1/2 页

C
561
字号
/*************************************************************************

* AllCommand.C                                                              *

* Copyright ? Shenzhen Coship Electronics Co.#,LTD.  2002.3             *

* All rights reserved.                                                  *

*                                                                       *

* Author: Zhou Cheng                                                    *

* Date:  2002/3/13                                                      *

* Compiler:					                                            *

*                                                                       *

* Description:							  							    *

* Notes:                                                                *

* Update:   2002/3/13  Zhou Cheng										*

*************************************************************************/
#include "cs_typedef.h"
#include "CSHDI_typedef.h"
//#include "stddefs.h"
#include "cs_qpsk.h"
#include "CSQpskCFG.h"
#include "cs_gpio.h" 
#include "QPSKFrontEnd.h"
#include "AllCommand.h"
#include "CS_OS.h"
#include "Stv0299drv.h"
#include "Stv0399drv.h"
#include "TDA10086Drv.h"
#include "cx24143drv.h"
#include "zl1031xdrv.h"
#include "stv0288drv.h"
#ifdef CX24116_SUPPORT
#include "cx24116.h"
#endif
#include "cs_assert.h"
#include "CT202.h"
//#include "stv0288drv.h"
//#define FE_DEBUG
#include "cx24301.h"
extern CSQPSKSignalParameterS2 g_TQPSKChannelCopy[MAX_TUNER_NUM];
extern CSQPSKSignalParameterS2 g_TQPSKChannelCopy1[MAX_TUNER_NUM];
//========================================================
//	Entry struct
//========================================================
typedef struct
{
	int m_nType;
	CSQPSK_Error_t (*m_pFunGetSignalStrength)(CSHDITunerIndex, int*);
	CSQPSK_Error_t (*m_pFunGetSignalquality)(CSHDITunerIndex, int*);
	CSQPSK_Error_t (*m_pFunCheckLockStatus)(CSHDITunerIndex, int*);
	CSQPSK_Error_t (*m_pFunGetSignalBER )(CSHDITunerIndex, DWORD*);
	CSQPSK_Error_t (*m_pFunSet22KSwitch)( CSHDITunerIndex, CSHDISwitch);
	CSQPSK_Error_t (*m_pFunSearchingSignal)( CSHDITunerIndex, CSQPSKCHANNEL *);
	CSQPSK_Error_t (*m_pFunSetStandby)( CSHDITunerIndex, int );	
	CSQPSK_Error_t (*m_pFunSetClockPolarity)( CSHDITunerIndex, T_ClockPolarity);
}T_QPSKDES;

T_QPSKDES g_QPSKDes[MAX_TUNER_NUM];
BYTE	g_bResetGPIOIndex[MAX_TUNER_NUM]={0xff,0xff};
int		g_bLNBPowerGPIOIndex[MAX_TUNER_NUM]={0xff,0xff};
int		g_b13_18VGPIOIndex[MAX_TUNER_NUM]={0xff,0xff};
int		g_b0_12VGPIOIndex[MAX_TUNER_NUM]={0xff,0xff};
int		g_nFrequencyOffset[MAX_TUNER_NUM];
int		g_nQuickExitFlag[MAX_TUNER_NUM];

#define  GPIOMAXINDEX	49 
#define  TUNERSTEP	500

static HCSHANDLE g_hQPSKSemaphore[MAX_TUNER_NUM];

extern BYTE g_bLinkICType[MAX_TUNER_NUM];
extern BOOL	g_bQPSKHasInitialized[MAX_TUNER_NUM];
extern int  (*g_pSTSChannelScan)(int  bTunerIndex, CSQPSKSignalParameter *pTranspondList, int nMaxLength, T_QPSKSateInfo stSateInfo, int *pnActLength, int nBenZhen);

extern CSQPSK_Error_t STV0288ConfigTSOutMode(CSHDITunerIndex bTunerIndex, int nTSOutMode);
extern CSQPSK_Error_t STV0288RegInit( CSHDITunerIndex bTunerIndex );	
extern int (*g_GetSTSProc)(void);
CSQPSK_Error_t CSQPSKInterInitialize( CSHDITunerIndex bTunerIndex, int nTSOutMode )
{
	char semName[2][16]={ "QPSKSem1", "QPSKSem2"};
	
	g_hQPSKSemaphore[bTunerIndex] = CSCreateSemaphore( semName[bTunerIndex], 0, 1 );
	if (g_hQPSKSemaphore[bTunerIndex] == NULL)
	{
		return CSQPSK_SYSTEM_ERROR;
	}
#ifdef CX2430x_SUPPORT
	if (1)
	{
		unsigned long a;
		int b;

		g_bLinkICType[bTunerIndex] = CX2430x;
		open_demod_instance();

		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = CX24301CheckLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = CX24301BER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = CX24301SignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = CX24301SignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = CX24301F22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = CX24301SearchLock;  //STV0288ChannelLock;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = CX24301STDBY;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= CX24301SetClockPolarity;
		g_pSTSChannelScan = STStest;
		g_GetSTSProc = CNXGetSTSPercent;
	}
	else
#endif
#ifdef CX2414X_SUPPORT
	if ( CX2414xSCheckChipID (bTunerIndex,(BYTE)nTSOutMode) == CSQPSK_SUCCESS )
	{		
		g_bLinkICType[bTunerIndex] = CX2414x;		
		CX2414xInit(bTunerIndex);
		CX2414XCheckTunerType(bTunerIndex);
		if (CX2414XGetTunerType(bTunerIndex) == CX2414X_TUNER_CX24109)
		{
			CX2414XAGCMode(bTunerIndex, 0);
		}
		else
		{
			CX2414XAGCMode(bTunerIndex, 1);
		}
           //   CSConfigTSOutMode ( bTunerIndex, nTSOutMode);
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = CX2414xCheckLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = CX2414xGetBER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = CX2414xSignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = CX2414xSignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = CX2414xF22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = CX2414xCSLock;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = CX2414xSetStandby;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= CX2414xSetClockPolarity;
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize over]: Link IC is internal demod \n");
	}
	else 
#endif

#ifdef STV0288_SUPPORT
	if (STV0288CheckChipID (bTunerIndex) == CSQPSK_SUCCESS)
	{
		g_bLinkICType[bTunerIndex] = STV_0288;
		STV0288ConfigTSOutMode(bTunerIndex, nTSOutMode);
		if (CSQPSK_SUCCESS !=STV0288RegInit(bTunerIndex ))
		{
			CSTRACE(ERROR_LEVEL,"\n[hdi][qpsk] stv0288 register init fail \n");
		}
		FTDInitlize(bTunerIndex);
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = STV0288CheckLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = STV0288BER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = STV0288SignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = STV0288SignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = STV0288F22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = STV0288SearchLock;  //STV0288ChannelLock;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = STV0288STDBY;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= STV0288SetClockPolarity;
		g_pSTSChannelScan = Stv0288STS;
		g_GetSTSProc = STV0288GetSTSPercent;
		CSTRACE( INFO_LEVEL, "[HDI][CS_QPSK]CSQPSKInterInitialize Link IC is STV0288\r\n");
	}
	else 
#endif

#ifdef ZL10313_SUPPORT
	if ( ZL1031XCheckChipID (bTunerIndex) == CSQPSK_SUCCESS )
	{	
		if(ZL1031XRegInit(bTunerIndex,nTSOutMode)!= CSQPSK_SUCCESS )
		{
			return CSQPSK_FAILURE;
		}		
		g_bLinkICType[bTunerIndex] = ZL10313;	
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus =  ZL1031XCheckLockStatus; //ZL1031XGetLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = ZL1031XGetBER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = ZL1031XSignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = ZL1031XSignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = ZL1031X_F22K_Switch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = ZL1031XLockChannel;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = ZL1031XSetStandby;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= ZL1031XSetClockPolarity;
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize over]: Link IC is zl10313 \n");
	}
	else 
#endif
#ifdef STV0299_SUPPORT
	if ( STV0299CheckChipID (bTunerIndex,(BYTE)nTSOutMode) == CSQPSK_SUCCESS )
	{		
		g_bLinkICType[bTunerIndex] = STV_0299;		
		FTDInitlize(bTunerIndex);
              CSConfigTSOutMode ( bTunerIndex, nTSOutMode);
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = STV0299CheckLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = STV0299BER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = STV0299SignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = STV0299SignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = STV0299F22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = CSLock;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = STV0299SetStandby;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= STV0299SetClockPolarity;
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize]:\nLink IC is STV0299");
	}
	else 
#endif
#ifdef STV0399_SUPPORT
	if ( STV0399CheckChipID(bTunerIndex,(BYTE)nTSOutMode) == CSQPSK_SUCCESS)
	{
		g_bLinkICType[bTunerIndex] = STV_0399;
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = STV0399GetLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = STV0399GetError;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = STV0399GetSignalquality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = STV0399GetSignalLevel;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = STV0399F22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = STV0399SearchingSignal;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = STV0399SetStandby;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= NULL;
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize]:\nLink IC is STV0399\n");
	}
       else
#endif
#ifdef TDA10086F_SUPPORT
	if ( TDA10086CheckChipID(bTunerIndex,(BYTE)nTSOutMode) == CSQPSK_SUCCESS)
	{
		g_bLinkICType[bTunerIndex] = TDA10086;
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = TDA10086GetLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = TDA10086GetSignalBER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = TDA10086GetSignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = TDA10086SignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = TDA10086F22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = TDA10086SearchingSignal;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = NULL;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= NULL;
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize]:\nLink IC is LG P001F\n");
	}
	else
#endif
#ifdef CX24116_SUPPORT
	if( PHANTOM_CheckChipID( bTunerIndex ) == CSQPSK_SUCCESS )
	{
		g_bLinkICType[bTunerIndex] = CX24116;	
		if( PHANTOM_Init ( bTunerIndex, nTSOutMode )!= CSQPSK_SUCCESS)
		{
			return CSQPSK_FAILURE;
		}
		if(  PHANTOM_DiSEqC_Init( )!=CSQPSK_SUCCESS)
		{
			return CSQPSK_FAILURE;
		}
		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = PHANTOMGetLockStatus;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = PHANTOMGetSignalBER;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = PHANTOMGetSignalQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = PHANTOMGetSignalStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = PHANTOMF22KSwitch;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = PHANTOMSearchingSignal;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = NULL;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= NULL;
		CSTRACE( ERROR_LEVEL, "[HDI][CS_QPSK][CSQPSKInterInitialize]:Link IC is CX24116\r\n");
	}
	else
#endif
#ifdef CT202A_SUPPORT
	if ( CT202ARegInit (nTSOutMode,bTunerIndex) == CSQPSK_SUCCESS )
	{	

		if(CT202ACheckchipID (bTunerIndex) != CSQPSK_SUCCESS )
		{
			CSTRACE( INFO_LEVEL, "CT202ARegInit failed!!!!!!!!!!!");
			return CSQPSK_FAILURE;
		}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?