📄 allcommand.c
字号:
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 + -