⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allcommand.c

📁 QPSK Tuner details, for conexant chipset.
💻 C
📖 第 1 页 / 共 2 页
字号:

CSQPSK_Error_t FTDCheckTuner ( CSHDITunerIndex bTunerIndex )
{
	int ii;
	int nTunerStatus=0;
	DWORD dwStep;
	int ErrorCode;
	
	FTDSetFrequency( bTunerIndex,1400000, 27500, &dwStep ) ;

	for( ii=0; ii<20; ii++)
	{
		ErrorCode = FTDGetTunerStatus (bTunerIndex, &nTunerStatus );
		//printf("nTunerStatus = %d\r\n", nTunerStatus);
		if (ErrorCode!= CSQPSK_SUCCESS)
			continue;
		
		if (  nTunerStatus== TRUE )
			return CSQPSK_SUCCESS;
	}
	CSTRACE( ERROR_LEVEL, "[HDIQPSK] Err FTDCheckTuner failed\n");
	//CSTRACE( ERROR_LEVEL, "Position:file = %s,line = %s\n", __FILE__, __LINE__);/*%s格式打印会导致死机*/
	return CSQPSK_FAILURE;
}

/* +==========================================================================+ */
/* | Function:	设置 TUNER 调谐频率											  |	*/		
/* | Input:		频率 (KHz为单位)											  |	*/
/* | Output:	无															  |	*/
/* | Return:	操作成功标志												  |	*/
/* +==========================================================================+ */
//int FTDSetFrequency( DWORD dwTuneFreq)
CSQPSK_Error_t FTDSetFrequency( CSHDITunerIndex bTunerIndex, DWORD dwTuneFreq, DWORD dwSymbolRate, DWORD *dwStep )
{
	int nResult = CSQPSK_FAILURE ;
	int nStepFreq = 500;
	

	// added by yxb -040923
	*dwStep = ((dwTuneFreq + nStepFreq/2) / nStepFreq) * nStepFreq;
//	printf("\nFrequency = %ld, nStepFreq = %d, dwStep = %d", dwTuneFreq, nStepFreq, *dwStep);

#ifdef ZL10039_SUPPORT
	if ( g_bPLLICType[bTunerIndex] ==ZL10039)
	{
		return ZL1003zSetFreq_Ex(bTunerIndex,dwTuneFreq, dwSymbolRate) ;
		//return ZL1003zSetFrequency(bTunerIndex,dwTuneFreq, dwSymbolRate) ;
	}
#endif
#ifdef IX2450_SUPPORT
	if ( g_bPLLICType[bTunerIndex] == IX2450 )
	{
//		*dwStep = 500;		
		return VZ0194SetFrequency(bTunerIndex,dwTuneFreq, dwSymbolRate) ;
	}
#endif
	
	nStepFreq = 125;
	*dwStep = ((dwTuneFreq + nStepFreq/2) / nStepFreq) * nStepFreq;
	
	//printf("\t\ndwTuneFreq is:%d\n", dwTuneFreq);
	if((dwTuneFreq > 2250000)||(dwTuneFreq<900000))
		dwTuneFreq = 2050000 ;

	if ( g_bPLLICType[bTunerIndex] == IX2360 )
	{
		#ifdef IX2360_SUPPORT
		nResult = IX2360SetFreq ( bTunerIndex,dwTuneFreq ) ;
		#endif
	}

	else if ( g_bPLLICType[bTunerIndex] == IX2273 )
	{
		#ifdef IX2273_SUPPORT
		nResult = IX2273SetFreq ( bTunerIndex,dwTuneFreq ) ;
		#endif
	}

	else if ( g_bPLLICType[bTunerIndex] == LGTUNERIC )
	{
		#ifdef LGTUNERIC_SUPPORT
		nResult = LGTunerSetFreq ( bTunerIndex,dwTuneFreq ) ;
		#endif
	}

	else if ( g_bPLLICType[bTunerIndex] == LGS002F )
	{
		#ifdef LGS002F_SUPPORT
		nResult = LGS002FSetFreq ( bTunerIndex,dwTuneFreq ) ;
		#endif
	}
	else if ( g_bPLLICType[bTunerIndex] == STB6000 )
	{
		#ifdef STB6000_SUPPORT
		nResult = STB6000SetFreq ( bTunerIndex, dwTuneFreq, dwSymbolRate ) ;
		#endif
	}
	
	// 加入其它PLL IC
	else
		nResult = CSQPSK_DEVICE_UNKNOWN;

//	if (nResult == CSQPSK_FAILURE) 
		//printf("\n Set Freq Fail ");
	return nResult ;
}
CSQPSK_Error_t CSConfigTSOutMode (CSHDITunerIndex bTunerIndex ,int nTSOutMode)
{
	#ifdef STV0299_SUPPORT
	if(g_bLinkICType[bTunerIndex] == STV_0299)
	    {
		 STV0299ConfigTSOutMode ( bTunerIndex ,nTSOutMode ) ;
		if ( g_bPLLICType[bTunerIndex] == IX2450 )
			return STV0299RegInit (bTunerIndex ,SHARP0194);
		else if( g_bPLLICType[bTunerIndex] == IX2360 )
			return STV0299RegInit(bTunerIndex ,SHARP0184);
		else if( g_bPLLICType[bTunerIndex] == IX2273)
			return STV0299RegInit(bTunerIndex ,SHARP0184);
		else if( g_bPLLICType[bTunerIndex] == LGTUNERIC)
			return STV0299RegInit(bTunerIndex ,LGF001F);
		else if( g_bPLLICType[bTunerIndex] == LGS002F)
			return STV0299RegInit(bTunerIndex ,LG_S002F);
		else if( g_bPLLICType[bTunerIndex] == STB6000)
			return STV0299RegInit(bTunerIndex ,STB6K);
		else
			return STV0299RegInit(bTunerIndex ,SHARP0184);
	    }
	else
	#endif
	{
		CSTRACE( ERROR_LEVEL, "[HDIQPSK] Err CSConfigTSOutMode failed\n");
		CSTRACE( ERROR_LEVEL, "Position:file = %s,line = %s\n", __FILE__, __LINE__);
		return CSQPSK_FAILURE;
	}
}

/* +==========================================================================+ */
/* | Function:	发送DiSEqC 命令	(完整)										  |	*/		
/* | DiSEqC		Command:													  |	*/
/* +==========================================================================+ */


CSQPSK_Error_t CSDSCSendCommand ( CSHDITunerIndex bTunerIndex, BYTE *pValue, BYTE bCmdLength )
{
        if ( g_DiSEqCDes[bTunerIndex].m_nType )
            return g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqCCommand( bTunerIndex, pValue, bCmdLength );
        else
            return CSQPSK_DROPPED;
}

CSQPSK_Error_t CSSendToneBurstCommand ( CSHDITunerIndex bTunerIndex, BYTE bToneBurstSel )
{

        if ( g_DiSEqCDes[bTunerIndex].m_nType )
            return g_DiSEqCDes[bTunerIndex].m_pFunToneBurstCommand ( bTunerIndex, bToneBurstSel );
        else
            return CSQPSK_DROPPED;
}

/* +==========================================================================+ */
/* | Function:	发送DiSEqC 命令	(完整)										  |	*/		
/* | DiSEqC		Command:													  |	*/
/* +==========================================================================+ */

CSQPSK_Error_t CSDSCSend10Command ( CSHDITunerIndex bTunerIndex, BYTE bSwitchType, BYTE bSwitchByte, BYTE bToneBurst, BYTE bRepeatTime )
{

	int nReturn;

        if ( g_DiSEqCDes[bTunerIndex].m_nType )
        {
              nReturn = g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqC10Command( bTunerIndex, bSwitchType, bSwitchByte, bToneBurst, bRepeatTime ) ;
		return nReturn;
        }
        else
              return CSQPSK_DROPPED;
}
/* +==========================================================================+ */
/* | Function:	发送DiSEqC 命令	(完整)										  |	*/		
/* | DiSEqC		Command:													  |	*/
/* +==========================================================================+ */

CSQPSK_Error_t CSDSCSend11Command ( CSHDITunerIndex bTunerIndex, BYTE bCommittedSwitchByte, BYTE bUnCommittedSwitchByte, BYTE bRepeatTime )
{

	//sfg int nReturn;
	CSQPSK_Error_t nReturn;
        if ( g_DiSEqCDes[bTunerIndex].m_nType )
        {
              nReturn =  g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqC11Command ( bTunerIndex, bCommittedSwitchByte, bUnCommittedSwitchByte, bRepeatTime ) ;
		// add by sfg
		return nReturn;
        }
        else
            return CSQPSK_DROPPED;
}

/* +==========================================================================+ */
/* | Function:	发送DiSEqC1.2 命令(3BYTE命令格式)							  |	*/		
/* | DiSEqC1.2 Command:	(E0 31 XX)											  |	*/
/* | 注意:		需根据不同的平台作适当修改(这里以ST0299为例)				  | */
/* +==========================================================================+ */

CSQPSK_Error_t CSDSC12SendCommand(CSHDITunerIndex bTunerIndex, BYTE bCommand)
{
	BYTE bValue[4];

	bValue[0] = 0xE0;
	bValue[1] = 0x31;
	bValue[2] = bCommand;

        if ( g_DiSEqCDes[bTunerIndex].m_nType )
            return g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqCCommand ( bTunerIndex, bValue, 3 );
        else
            return CSQPSK_DROPPED;
}

/* +==========================================================================+ */
/* | Function:	发送DiSEqC1.2 命令(4BYTE命令格式)							  |	*/		
/* | DiSEqC1.2 Command:	(E0 31 XX XX)										  |	*/
/* | 注意:		需根据不同的平台作适当修改(这里以ST0299为例)				  | */
/* +==========================================================================+ */
CSQPSK_Error_t CSDSC12SendData(CSHDITunerIndex bTunerIndex, BYTE bCommand, BYTE bData)
{
	BYTE bValue[4];

	bValue[0] = 0xE0;
	bValue[1] = 0x31;
	bValue[2] = bCommand;
	bValue[3] = bData;

         if ( g_DiSEqCDes[bTunerIndex].m_nType )
            return g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqCCommand ( bTunerIndex, bValue, 4 );
        else
            return CSQPSK_DROPPED;
}


CSQPSK_Error_t CSDSC12SendCmds(CSHDITunerIndex bTunerIndex, PBYTE pbCmds, int nSize)
{	
         if ( g_DiSEqCDes[bTunerIndex].m_nType )
            return g_DiSEqCDes[bTunerIndex].m_pFunSendDiSEqCCommand ( bTunerIndex, pbCmds, nSize );
        else
            return CSQPSK_DROPPED;
}


CSQPSK_Error_t CSDSCSendOptionCmd(CSHDITunerIndex bTunerIndex, BYTE OptionSwitch)
{
	if ( g_DiSEqCDes[bTunerIndex].m_nType )
		return g_DiSEqCDes[bTunerIndex].m_pFunSendOptionCommand(bTunerIndex, OptionSwitch);
	else
		return CSQPSK_DROPPED;
}


#if 0
CSQPSK_Error_t LGS002FInit( CSHDITunerIndex bTunerIndex )
{
	int ErrorCode;
	
	hLGS002FI2C[bTunerIndex] = 0;
	ErrorCode = CSI2COpen(bTunerIndex,0xC2,&hLGS002FI2C[bTunerIndex]);
	if ( ErrorCode != CSI2C_SUCCESS)
	{
		return CSQPSK_I2C_ERROR;
	}
	return CSQPSK_SUCCESS;
}

CSQPSK_Error_t LGS002FTerm(CSHDITunerIndex bTunerIndex)
{
	int ErrorCode;
	
	ErrorCode = CSI2CClose(hLGS002FI2C[bTunerIndex]);
	if ( ErrorCode != CSI2C_SUCCESS)
	{
		return CSQPSK_I2C_ERROR;
	}
	return CSQPSK_SUCCESS;
}

CSQPSK_Error_t LGS002FSetFreq( CSHDITunerIndex bTunerIndex, DWORD dwTuneFreq)
{
	BYTE pbValue[4];

	DWORD dwFrequency;

	pbValue[2] = 0x84;

	if ( dwTuneFreq < 1530000 )
		pbValue[3] = 0x10;
	else
		pbValue[3] = 0x00;
	
	dwFrequency = ( dwTuneFreq + 0 ) / 125 ; 
	
	pbValue[0] = (BYTE)( ( dwFrequency >> 8 ) & 0x7F );
	pbValue[1] = (BYTE)( dwFrequency & 0xFF );

	return ( LGS002FTunerWrtFreq ( bTunerIndex ,pbValue, 4 ) ) ;
}

CSQPSK_Error_t LGS002FGetPLLStatus ( CSHDITunerIndex bTunerIndex, int *pnPllLock )
{
	int nResult= 0 ;
	BYTE bValue;

	if ( CSI2CRequestBus(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
	{		
		STV0299EnableTunerI2C(bTunerIndex);
		nResult = CSI2CReadWithStop ( hLGS002FI2C[bTunerIndex], &bValue, 1 ) ;
		STV0299DisableTunerI2C(bTunerIndex);
		//sttbx_Print("LG S002F: 0x%x\n",bValue);
		STV0299DisableTunerI2C(bTunerIndex);
		CSI2CReleaseBus(bTunerIndex);

		if ( nResult == CSI2C_SUCCESS )
		{
			if (( bValue & 0x40 ) == 0x40 )
				*pnPllLock = 1;
			else
				*pnPllLock = 0;
			return CSQPSK_SUCCESS;
		}
	}

	return CSQPSK_I2C_ERROR;
}

CSQPSK_Error_t LGS002FTunerWrtFreq( CSHDITunerIndex bTunerIndex, BYTE *pbTune ,DWORD dwDataLen)
{
    	int nResult = CSQPSK_SUCCESS;

	if ( CSI2CRequestBus(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
	{		
		STV0299EnableTunerI2C(bTunerIndex);
		nResult = CSI2CWriteWithStop ( hLGS002FI2C[bTunerIndex], pbTune, dwDataLen ) ;
		STV0299DisableTunerI2C(bTunerIndex);
		CSI2CReleaseBus(bTunerIndex);

		if (nResult == CSI2C_SUCCESS)
		{
			return CSQPSK_SUCCESS;
		}
	}
	
	return CSQPSK_I2C_ERROR;
}

#endif

⌨️ 快捷键说明

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