ct221.h

来自「DVB软件,基于CT216软件的开发源程序.」· C头文件 代码 · 共 228 行

H
228
字号
#ifndef _CT221_H //-----------------
#define _CT221_H

//#include "nim_config.h"
//#include "ct221_reg.h"
#include "tunerAPI.h"

#define IIC_MEM

#define DevID 		0xF0

#define EMPTY_VAL   0xEE

#define FFT_SIZE		8192

#define FREQ_OFFSET_140	140

/*********************************
 *Information parameter
 *********************************/
typedef enum
{
    TYPE_NORMAL = 0,
    TYPE_SCAN    
} TYPE; 
 
typedef enum
{
    BW6M = 0,
    BW7M,
    BW8M
} BW;

typedef enum
{
    QPSK = 0,
    QAM_16,
    QAM_64
} MOD_TYPE;

typedef enum
{
    FFT_2K = 0,
    FFT_8K
} FFT;

typedef enum
{
    OVER32 = 0,     // 1/32
    OVER16,         // 1/16
    OVER8,          // 1/8
    OVER4           // 1/4
} GI;

typedef enum
{
    HPMODE = 0,
    LPMODE
} HPLP;             // High Priority or Low Priority

typedef enum
{
    CR_1over2 = 0,  // 1/2
    CR_2over3,      // 2/3
    CR_3over4,      // 3/4
    CR_5over6,      // 5/6
    CR_7over8,      // 7/8
    CR_none         // none, NXT doesn't have this one
} CR;               // Code Rate

typedef enum
{
    HIER_NONE = 0,
    HIER_ALPHA_1,
    HIER_ALPHA_2,
    HIER_ALPHA_4
} TPS_HIER;         // TPS Hierarchy and Alpha value

typedef enum _emMAINPLL
{
	QPLL_56_25M = 0,
	//QPLL_55_50M,
	//QPLL_49_95M,
	//QPLL_49_50M,
	QPLL_49_17M,	
} emMAINPLL;

typedef enum
{
	FFT_2KMODE = 2048,
	FFT_8KMODE = 8192,
} enFFTMODE;

typedef struct
{
    unsigned int      freq;
    MOD_TYPE    mod;                
    FFT         fft;                
    GI          gi;                 
    HPLP        hplp;               
    CR          hpcr;               
    CR          lpcr;               
    TPS_HIER    TpsHier;            
    BW          bw;
} SYS_INFO,  *PSYS_INFO;

typedef	struct TPS_tag {
    u8 GI[10];
    u8 Mode[10];
    u8 HP_rate[10];
    u8 LP_rate[10];
    u8 Constellation[10];
    u8 Hierarchy[10];
    u8   Select;
} tpsInfo_t;

typedef	struct SYS_info_tag {
	double totalPower, noisePower, signalPower, snr_ratio;
	double preV, postV;
	double toffset, foffset;
	double ber, period, error;
	//long int ;
    int errCnt,packErrCnt;
	int sd_Pack, sd_Man;
	float sd_Exp;
	int ce_msel, ce_fsel;
    int gpinfo1, gpinfo2, gpinfo3,posjudge;	//long int ;
	int CCI_loc1, CCI_loc2;
	int ICFO_max1, ICFO_max2;
	bool8 TPS_Valid;
	int cost_value;
	int INRC_Cnt_total, INRC_Cnt0, INRC_Cnt1;
	float DAGC_gain;
	float per;	
} SYS_info_t;

typedef enum
{
    EN_CT221_STATE_ERROR,
    EN_CT221_STATE_RESET,
	EN_CT221_STATE_READY
}EN_CT221_STATE;


/* New Functions */
bool8 CT221_SetSDA(void);
bool8 CT221_Lock_Status(void);
bool8 CT221_Read_ICFO(void);
void CT221_GetSysInfo(SYS_INFO *pSys);
u32 CT221_Get_PER(void);
u32 CT221_Get_BER(void);
u32 CT221_Get_SNR(void);
u8 CT221_Get_SignalStrength(void);
u8 CT221_sd_gain_estimator(void);

/* CT221 Init & Reset */
bool8 CT221_soft_reset(void);
bool8 CT221_Initial(void);

/* Demod Read / Write */
void CT221_ProgramBW(u8 bw);
void CT221_SetType(TYPE enType);
void CT221_SetPriority(bool8 b8Init, HPLP enMode);
HPLP CT221_GetPriority(void);

/* Tuner Read / Write */
bool8 CT221_AcquireChannel(u32 dwInputFreqKHz, u8 ucBandWidthMHz);
bool8 CT221_Program_Tuner(u32 RfFreq, u8 ucBandWidthMHz);

/* IIC Read / Write */
bool8 CT221_SetPage(u8 page);
bool8 RegRead(u8 deviceId, u8 address, u8 *buffer, u8 bytenum);
bool8 RegWrite(u8 deviceId, u8 address, u8 *buffer, u8 bytenum);
bool8 CT221_ReadRegValue(u8 address, u8 *buffer);
bool8 CT221_Tunner_Repeater(u8 u8OnOff);

/* Testing & Monitor IIC Read / Write */
void CT221_Monitor_Switch(u8 u8Val);
void CT221_Monitor(void);
void CT221_hotkey_info(void);								// ct221
bool8 CT221_dump_allReg(void);								// d221
bool8 CT221_ReadReg(u8 address);							// r221 0x01
bool8 CT221_WriteReg(u8 address, u8 value);					// w221 0x01 0x02 
void display_info(void);									// i221
//bool8 CT221_soft_reset(void);								// s221
//bool8 CT221_Program_Tuner(u32 RfFreq, u8 ucBandWidthMHz);	// t221 533000 6
bool8 CT221_INR_Compensation(bool8 reset);
bool8 CT221_SW_INR(void);
void CT221_ADC_Clock_Test(u8 i);
u8 CT221_Get_SD_Event(void);
s32 CT221_Get_FreqOffset(u16 FFT_Mode);
TYPE CT221_GetType(void);
void CT221_AGC_Target(bool8 b8reset);
void CT221_Reset_Tuner(u8 val);
void CT221_display_snr(void);
bool8 CT221_Get_Resync(void);
bool8 CT221_Get_SD_TRK(void);
void  CT221_Set_CCI_Value(void);
bool8 CT221_Set_CCI_First(u32 u32OffSetFreq);
bool8 CT221_Set_CCI_Detection(void);
/*--> Add by H100 SFChen */
bool8 CT221_Get_CCI_Detection(void);
bool8 CT221_ResetSDA(void);
bool8 CT221_Get_SD_TRK_Status(void);
bool8 CT221_TPS_Lock_Status(void);
bool8 CT221_Go(void);

EN_CT221_STATE CT221_GetState(void);
/*--> Add by H100 SFChen */

void CT221_SetClock(bool8 inverse);
bool8 CT221_SetMAINQPLL(emMAINPLL emQPLL);
bool8 CT221_SetLOFREQ(void);
bool8 CT221_CheckLOFreq(void);
s16 CT221_LO_Freq_Conv(enFFTMODE enfft_size, u8 u8BandWidth);
u8 CT221_AGCLevel(void);
void CT221_Monitor_CPE(void);

bool8 CT221_SetGI_FFT_Mode(GI emGI, FFT emFFTmode);
bool8 CT221_AdjustFreqOffSet(u32 RfFreq, u32 *u32NewRfFreq, GI *emGI, FFT *emFFTmode);
bool8 CT221_Reset_DAGCtarget(bool8 b8reset);
void  CT221_InitValueByTuner(EN_TunerType enTunerType);
void CT221_InitValueByCountry(EN_TUNER_Country enCountry);
void CT221_InitValueByAISL(EN_TUNER_AISL enSetting);

void CT221_SetASpecturmInv(bool8 b8Enable);	//set auto specturm inverse enable or disable
#endif //_CT221_H

⌨️ 快捷键说明

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