qpskfrontend.c

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

C
561
字号
		
		g_bLinkICType[bTunerIndex] = CT202A;	

		g_QPSKDes[bTunerIndex].m_nType = 1;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus =  CT202ACheckLockStatus; 
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = CT202AGetSignalBer;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = CT202AGetQuality;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = CT202AGetStrength;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = CT202AF22KSwitch ;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = CT202ALockChannel;
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = CT202ASetStandby;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= CT202ASetClockPolarity;
		g_pSTSChannelScan = CT202STS;
		g_GetSTSProc =  CT202GetSTSPercent;
		
		CSTRACE( INFO_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize over]: Link IC is CT202A!!!!! \n\r");
	}
else
#endif

	{
		g_bLinkICType[bTunerIndex] = 0xff;
		g_QPSKDes[bTunerIndex].m_nType = 0;
		g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus = NULL;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalBER = NULL;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalquality = NULL;
		g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength = NULL;
		g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch = NULL;
		g_QPSKDes[bTunerIndex].m_pFunSearchingSignal = NULL;       
		g_QPSKDes[bTunerIndex].m_pFunSetStandby = NULL;
		g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity= NULL;
		CSTRACE( WARN_LEVEL, "\n[HDI][CS_QPSK][CSQPSKInterInitialize]:\nLink IC is Unknown\n");
		return CSQPSK_DEVICE_UNKNOWN;
	}

        FTDDiSEqCInit(bTunerIndex);
	return CSQPSK_SUCCESS;

}

CSQPSK_Error_t CSQPSKSearchingSignal  ( CSHDITunerIndex bTunerIndex, CSQPSKCHANNEL *pCSCHANNEL )
{	
	int nReturn;
        if ( g_QPSKDes[bTunerIndex].m_nType )
        {
        	//[Jul 20, 2005] Added by Jacky
        	g_nFrequencyOffset[bTunerIndex] = pCSCHANNEL->m_nFrequencyOffset;
        	nReturn = g_QPSKDes[bTunerIndex].m_pFunSearchingSignal(bTunerIndex, pCSCHANNEL);
            	if ( nReturn == CSQPSK_SUCCESS )
            	{
			g_nFrequencyOffset[bTunerIndex] = pCSCHANNEL->m_nFrequencyOffset;			
		}

		return nReturn;  
        }
        else
        {
        	//CSTRACE( WARN_LEVEL, "\nSignal Dropped here\n");
                return CSQPSK_DROPPED;
        }
}

CSQPSK_Error_t CSQPSKSetStandby( CSHDITunerIndex bTunerIndex, int nStandby )
{
	 if ( g_QPSKDes[bTunerIndex].m_nType )
	 {
            	return g_QPSKDes[bTunerIndex].m_pFunSetStandby(bTunerIndex, nStandby);
	 }
	 return CSQPSK_DROPPED;
}

CSQPSK_Error_t CSQPSKSetClockPolarity( CSHDITunerIndex bTunerIndex, T_ClockPolarity clockPol )
{
	if( bTunerIndex < 0 || bTunerIndex >= MAX_I2C_NUM)
	{
#ifdef QPSK_DEBUG
		CSTRACE( ERROR_LEVEL, "[HDIQPSK] Err bTunerIndex = %d incorrect \n", bTunerIndex);
		CSTRACE( ERROR_LEVEL, "Position:file = %s,line = %d\n", __FILE__, __LINE__);
#endif
		return CSQPSK_FAILURE;
	}
	CSASSERT( g_bQPSKHasInitialized[bTunerIndex] == TRUE);
	if ( g_QPSKDes[bTunerIndex].m_nType )
	 {
            	return g_QPSKDes[bTunerIndex].m_pFunSetClockPolarity(bTunerIndex, clockPol);
	 }
	 else
                return CSQPSK_DROPPED;
}

void CSQPSKFEQuitSearching (CSHDITunerIndex bTunerIndex, int flag)
{
	g_nQuickExitFlag[bTunerIndex] = flag;
}

CSQPSK_Error_t CSQPSKGetSignalStrength ( CSHDITunerIndex bTunerIndex, int *pnSignalStrength )
{	
        if ( g_QPSKDes[bTunerIndex].m_nType )
            	return g_QPSKDes[bTunerIndex].m_pFunGetSignalStrength(bTunerIndex, pnSignalStrength);
        else
                return CSQPSK_DROPPED;
}

int CSGetFrequencyOffset ( CSHDITunerIndex bTunerIndex )
{
	return g_nFrequencyOffset[bTunerIndex] ;
}

CSQPSK_Error_t CSQPSKGetSignalQuality ( CSHDITunerIndex bTunerIndex, int *pnSignalQuality )
{        
        if ( g_QPSKDes[bTunerIndex].m_nType )
            	return g_QPSKDes[bTunerIndex].m_pFunGetSignalquality(bTunerIndex, pnSignalQuality);
        else
                return CSQPSK_DROPPED;
}

CSQPSK_Error_t CSQPSKGetCheckLockStatus ( CSHDITunerIndex bTunerIndex, int *pnLockStatus )
{	
        if ( g_QPSKDes[bTunerIndex].m_nType )
            	return g_QPSKDes[bTunerIndex].m_pFunCheckLockStatus(bTunerIndex, pnLockStatus);
        else
                return CSQPSK_DROPPED;
}

CSQPSK_Error_t CSQPSKSignalBER (CSHDITunerIndex bTunerIndex, DWORD *pdwBer)
{
        if ( g_QPSKDes[bTunerIndex].m_nType )
            	return g_QPSKDes[bTunerIndex].m_pFunGetSignalBER(bTunerIndex,pdwBer);
        else
                return CSQPSK_DROPPED;
}

CSQPSK_Error_t CSConfigResetPin ( CSHDITunerIndex bTunerIndex, BYTE bGPIOIndex )
{
	g_bResetGPIOIndex[bTunerIndex] = bGPIOIndex;

	if ( bGPIOIndex == CSHDI_GPIO_NO_USE )
	{
		return CSQPSK_SUCCESS;
	}	
	else if ( CSGPIOOpen(g_bResetGPIOIndex[bTunerIndex], CS_GPIO_OUPUT) != CS_GPIO_SUCCESS )
	{
		return CSQPSK_GPIO_ERROR;
	}

	return CSQPSKReset(bTunerIndex);	
}

CSQPSK_Error_t CSConfigLNBPowerPin ( CSHDITunerIndex bTunerIndex, BYTE bGPIOIndex )
{
	g_bLNBPowerGPIOIndex[bTunerIndex] = bGPIOIndex;

	if ( bGPIOIndex == CSHDI_GPIO_NO_USE )
	{
		return CSQPSK_SUCCESS;
	}	
	else if ( CSGPIOOpen(g_bLNBPowerGPIOIndex[bTunerIndex], CS_GPIO_OUPUT) != CS_GPIO_SUCCESS )
	{
		return CSQPSK_GPIO_ERROR;
	}

	return CSQPSK_SUCCESS;
}

CSQPSK_Error_t CSConfig13_18VPin ( CSHDITunerIndex bTunerIndex, BYTE bGPIOIndex )
{
	g_b13_18VGPIOIndex[bTunerIndex] = bGPIOIndex;

	if ( bGPIOIndex == CSHDI_GPIO_NO_USE )
	{
		return CSQPSK_SUCCESS;
	}	
	else if ( CSGPIOOpen(g_b13_18VGPIOIndex[bTunerIndex], CS_GPIO_OUPUT) != CS_GPIO_SUCCESS )
	{
		return CSQPSK_GPIO_ERROR;
	}
	
	return CSQPSK_SUCCESS;
}

CSQPSK_Error_t CSConfig0_12VPin ( CSHDITunerIndex bTunerIndex, BYTE bGPIOIndex )
{	
	g_b0_12VGPIOIndex[bTunerIndex] = bGPIOIndex;

	if ( bGPIOIndex == CSHDI_GPIO_NO_USE )
	{
		return CSQPSK_SUCCESS;
	}
	else if ( CSGPIOOpen(g_b0_12VGPIOIndex[bTunerIndex], CS_GPIO_OUPUT) != CS_GPIO_SUCCESS )
	{
		return  CSQPSK_GPIO_ERROR;
	}
	return CSQPSK_SUCCESS;
}


void CSSetConfigASIInSelect ( CSHDITunerIndex bTunerIndex, int nASIInSel, int nASIStatusPin ) 
{
#ifdef  STV0299_SUPPORT
	CSSetConfigASIInSel(bTunerIndex,nASIInSel, nASIStatusPin) ;
#endif
	return;
}


CSQPSK_Error_t CSQPSKReset ( CSHDITunerIndex bTunerIndex )
{
	int ErrorCode = CS_GPIO_SUCCESS;

	if ( g_bResetGPIOIndex[bTunerIndex] == 0xff )
	{
		return CSQPSK_FAILURE;
	}
	
	ErrorCode |= CSGPIOWrite(g_bResetGPIOIndex[bTunerIndex], 1);
	CSSleep(50);
	ErrorCode |= CSGPIOWrite(g_bResetGPIOIndex[bTunerIndex], 0);
	CSSleep(300);
	ErrorCode |= CSGPIOWrite(g_bResetGPIOIndex[bTunerIndex], 1);
	CSSleep(50);

	if ( ErrorCode != CS_GPIO_SUCCESS )
	{
		return CSQPSK_GPIO_ERROR;
	}

	return CSQPSK_SUCCESS;
}

CSQPSK_Error_t CS22KSwitch ( CSHDITunerIndex bTunerIndex, CSHDISwitch n22KStatus )
{	
        if ( g_QPSKDes[bTunerIndex].m_nType )
        {
			//g_TQPSKChannelCopy[bTunerIndex].b22K = n22KStatus;
			g_TQPSKChannelCopy1[bTunerIndex].b22K = n22KStatus;
			return g_QPSKDes[bTunerIndex].m_pFunSet22KSwitch(bTunerIndex, n22KStatus);
        }
        else
        {
                return CSQPSK_DROPPED;  
        }
}

void CSClear( CSHDITunerIndex bTunerIndex )
{
    	int returnCode = CS_OSP_SUCCESS;

	do
	{
		returnCode = CSWaitForSemaphore(g_hQPSKSemaphore[bTunerIndex], CSHDI_TIMEOUT_IMMEDIATE );	
	} while (returnCode == CS_OSP_SUCCESS);

}
void CSQPSKStopLock( CSHDITunerIndex bTunerIndex )
{
    	int returnCode = CS_OSP_SUCCESS;

	returnCode = CSReleaseSemaphore(g_hQPSKSemaphore[bTunerIndex], 1);
}

CSQPSK_Error_t CSQPSKSleep(CSHDITunerIndex bTunerIndex,DWORD dwSleepTime)
{
	DWORD dwTimes, ii;
	int nReturn ;
	
	dwTimes = (dwSleepTime + 9) / 10;
	for(ii=0; ii<dwTimes; ii++)
	{
		nReturn = CSWaitForSemaphore(g_hQPSKSemaphore[bTunerIndex], 10 );
		if ( nReturn == CS_OSP_SUCCESS)
		{
			CSReleaseSemaphore(g_hQPSKSemaphore[bTunerIndex], 1);
			//CSTRACE( WARN_LEVEL, "[CSQPSKSleep]Singal Dropped!!!!\n");
			return CSQPSK_DROPPED;
		}
	}
	return CSQPSK_SUCCESS;
}

⌨️ 快捷键说明

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