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 + -
显示快捷键?