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