cx24301.c
来自「QPSK Tuner details, for conexant chipset」· C语言 代码 · 共 191 行
C
191 行
#include "cx24301.h"
#include "CS_assert.h"
#include "CS_typedef.h"
extern int Tuner_Lock_Test(unsigned long dwFreq, unsigned long dwSym, unsigned char ucFEC);
extern void AddFunCheckLockStatus ( int bTunerIndex, int *pnLockStatus );
CSQPSK_Error_t CX24301CheckLockStatus ( CSHDITunerIndex bTunerIndex, int *pnLockStatus )
{
AddFunCheckLockStatus(bTunerIndex, pnLockStatus);
return CSHDI_SUCCESS;
}
CSQPSK_Error_t CX24301BER(CSHDITunerIndex bTunerIndex, DWORD *pdwBer)
{
AddBER(bTunerIndex, pdwBer);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SignalQuality(CSHDITunerIndex bTunerIndex, int *pnSignalQuality )
{
AddFunSignalQuality(bTunerIndex, pnSignalQuality);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SignalStrength ( CSHDITunerIndex bTunerIndex, int *pnSignalStrength )
{
AddFunSignalStrength(bTunerIndex, pnSignalStrength);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301F22KSwitch ( CSHDITunerIndex bTunerIndex, CSHDISwitch nF22KCtrl )
{
CSTRACE(ERROR_LEVEL, "[CX24301F22KSwitch](index, n22kstatus) = (%d, %d)\r\n", bTunerIndex, nF22KCtrl);
AddFunF22KSwitch(bTunerIndex, nF22KCtrl);
return CSQPSK_SUCCESS;
}
#define WATI_TIME 200
#define WAIT_EVERY_TIMES 50
static int g_nFlag = 0;
CSQPSK_Error_t CX24301SearchLock ( CSHDITunerIndex bTunerIndex, CSQPSKCHANNEL *pCSCHANNEL )
{
int i;
int nStatus = 0;
unsigned long dwFreqStep;
int j;
unsigned long dwCurrentFreq;
int nTmp;
int nReturn;
int offset;
unsigned char ucFEC;
int nCurOffset;
if ( (pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate < 1000) ||
(pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate > 50000) ||
(pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency < 900000) ||
(pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency > 2250000) )
{
Add_TUNER_CX24108_set_freq(bTunerIndex,900*1000);
return CSQPSK_FAILURE;
}
offset = pCSCHANNEL->m_nFrequencyOffset;
//MyPrint("CX24301SearchLock: offset=%d, FEC:%d\n", offset, pCSCHANNEL->m_bFECRates);
if ((offset > 5000) || (offset < -5000))
{
offset = 0;
}
dwFreqStep = 1000;
#if 1
if (pCSCHANNEL->m_bFECRates != FEC_AUTO)
{
nReturn = Tuner_Lock_Test(pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency, pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate, FEC_AUTO);
if (nReturn == TRUE)
{
USPPrint(3, "[HDIQPSK]connected\r\n");
return CSQPSK_SUCCESS;
}
else
{
//USPPrint(3, "[HDIQPSK]lost (freq, sym) = (%d, %d)\r\n", dwCurrentFreq, pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate);
}
}
for ( j=0; j<=((1500 / dwFreqStep)*2 + 1); j++ )
{
nTmp = ((dwFreqStep * j) / 2);
if ((j%2) != 0)
{
nTmp += 1000;
nTmp *= -1;
}
dwCurrentFreq = pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency + nTmp;
//dwCurrentFreq = pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency;
nReturn = Tuner_Lock_Test(dwCurrentFreq, pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate,pCSCHANNEL->m_bFECRates);
if (nReturn == TRUE)
{
USPPrint(3, "[HDIQPSK]connected\r\n");
return CSQPSK_SUCCESS;
}
else
{
//USPPrint(3, "[HDIQPSK]lost (freq, sym) = (%d, %d)\r\n", dwCurrentFreq, pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate);
}
}
#else
ucFEC = pCSCHANNEL->m_bFECRates;
START:
nReturn = Tuner_Lock_Test(pCSCHANNEL->m_CHANNEL.m_dwChannelFrequency - offset, pCSCHANNEL->m_CHANNEL.m_DMD.m_dwChannelSymbolRate, ucFEC);
//hamaro_get_freq_offset(0, &nCurOffset);
if (nReturn == TRUE)
{
//MyPrint("[HDIQPSK]connected\r\n");
hamaro_get_freq_offset(0, &nCurOffset);
pCSCHANNEL->m_nFrequencyOffset += nCurOffset /1000;
//MyPrint("Signal Locked: pCSCHANNEL->m_nFrequencyOffset=%d\n", pCSCHANNEL->m_nFrequencyOffset);
return CSQPSK_SUCCESS;
}
else if (ucFEC != FEC_AUTO)
{
ucFEC = FEC_AUTO;
goto START;
}
#endif
//MyPrint("lost\r\n");
return CSQPSK_FAILURE;
}
CSQPSK_Error_t CX24301STDBY (CSHDITunerIndex bTunerIndex, int bPDownFlag )
{
AddFunSetStandby(bTunerIndex, bPDownFlag);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SetClockPolarity( CSHDITunerIndex bTunerIndex, T_ClockPolarity clockPol )
{
AddFunSetClockPolarity(bTunerIndex, clockPol);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX2430113_18VSwitch( CSHDITunerIndex bTunerIndex, Channel_Polarisation nSwitchStatus )
{
AddFunSetLNBDC(bTunerIndex, nSwitchStatus);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301Set_LNBPower ( CSHDITunerIndex bTunerIndex, UCHAR bGPIOValue )
{
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SendDiSEqC10Command(CSHDITunerIndex bTunerIndex, BYTE bSwitchType, BYTE bCommittedByte, BYTE bToneBurstSel, BYTE bRepeat)
{
AddFunSendDiSEqC10Command(bTunerIndex, bSwitchType, bCommittedByte, bToneBurstSel, bRepeat);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SendDiSEqC11Command (CSHDITunerIndex bTunerIndex, BYTE bCommittedByte, BYTE bUnCommittedByte, BYTE bRepeat)
{
AddFunSendDiSEqC11Command(bTunerIndex, bCommittedByte, bUnCommittedByte, bRepeat);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301SendDiSEqCCommand (CSHDITunerIndex bTunerIndex, PBYTE pbValue, int nCommandNum)
{
AddFunSendDiSEqCCommand(bTunerIndex, pbValue, nCommandNum);
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t CX24301ToneBurstCommandOnly (CSHDITunerIndex bTunerIndex, BYTE bToneBurstSel)
{
AddFunToneBurstCommandOnly(bTunerIndex, bToneBurstSel);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?