lgs002fdrv.c

来自「QPSK Tuner details, for conexant chipset」· C语言 代码 · 共 110 行

C
110
字号
#include "CSHDI_typedef.h"
#include "cs_qpsk.h"
#include "cs_i2c.h"
#include "LGS002Fdrv.h"

static HCSHANDLE hLGS002FI2C[MAX_TUNER_NUM];
#define REMOVE_COMPILER_WARING_MSG
#ifdef REMOVE_COMPILER_WARING_MSG // sfg for complier
extern CSQPSK_Error_t STV0299EnableTunerI2C ( CSHDITunerIndex bTunerIndex );
extern CSQPSK_Error_t STV0299EnableTunerI2C ( CSHDITunerIndex bTunerIndex );
#endif
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_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
	{		
		STV0299EnableTunerI2C(bTunerIndex);
		nResult = CSI2CReadWithStop ( hLGS002FI2C[bTunerIndex], &bValue, 1 ) ;
		#ifndef REMOVE_COMPILER_WARING_MSG // sfg for complier
		STV0299DisableTunerI2C(bTunerIndex);
		//sttbx_Print("LG S002F: 0x%x\n",bValue);
		 STV0299DisableTunerI2C(bTunerIndex);
		#endif
		CSI2CReleaseBus_inner(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_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
	{		
		STV0299EnableTunerI2C(bTunerIndex);
		nResult = CSI2CWriteWithStop ( hLGS002FI2C[bTunerIndex], pbTune, dwDataLen ) ;
		#ifndef REMOVE_COMPILER_WARING_MSG // sfg for complier
		STV0299DisableTunerI2C(bTunerIndex);
		#endif
		CSI2CReleaseBus_inner(bTunerIndex);

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


⌨️ 快捷键说明

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