⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 362_drv.h

📁 STV0299 Minituner driver, for ST chipset
💻 H
字号:
#ifndef H_362DRV
	#define H_362DRV
	#include "362_init.h"
	#ifdef HOST_PC
//	#include "gen_types.h"
	#include "tuner.h" 	
	#include "362_util.h"
	#include "362_echo.h" 
//	#include "RF4000Init.h"		// Contains RF4000 initial values + library function proto-types.         
	#else
	#include "stddefs.h"
	#include "dbtypes.h"
	#include "sttuner.h"

	#endif

	typedef int FE_362_Handle_t;
	
	/****************************************************************
						COMMON STRUCTURES AND TYPEDEFS
	 ****************************************************************/		
	#define AGC_LOCK_FLAG   1<<5
	#define SYR_LOCK_FLAG	1<<6
	#define TPS_LOCK_FLAG	1<<7
	#define CHANNEL_SIZE 8 // for an 8MHz channel wide OFDM channel

	/* for previous lock (during scan)*/
	#define NO_LOCK		   0
	#define LOCK_NO_OFF	   1
	#define LOCK_RI_OFF	   2
	#define LOCK_LE_OFF	   3

	/*options for current lock trial*/
	#define NINV_NOFF 0
	#define NINV_ROFF 2
	#define NINV_LOFF 4
	#define INV_NOFF 1
	#define INV_ROFF 3
	#define INV_LOFF 5
	
		
	#define PAL			1
	#define GLOBAL		1<<1
	
	#define NUM_CHANNELS 40 
	
	#define STEP  166
	
	/* channel offset constant */
	#define LEFT_OFFSET 1
	#define CENTER_OFFSET 1<<1
	#define RIGHT_OFFSET 1<<2
	#define CARRIER 	240	
	/* end channel offset constant */

	typedef enum
	{
		NOAGC=0,
		AGCOK=5,
		NOTPS=6,
		TPSOK=7,
		NOSYMBOL=8,
		BAD_CPQ=9,
		PRFOUNDOK=10,
		NOPRFOUND=11,
		LOCKOK=12,
		NOLOCK=13,
		//RANGEOK=14,
		SYMBOLOK=15,
		CPAMPOK=16,
		NOCPAMP=17
		
	} FE_362_SignalStatus_t;
	
	
	
	typedef enum
	{
	UP   =1,
	DOWN = -1
	}Zap_direction_t;
	
	
	#ifdef HOST_PC
//	typedef int STI2C_Handle_t;
	#endif
	
	


	typedef enum
	{
		FE_NO_ERROR,
	    FE_INVALID_HANDLE,
	    FE_BAD_PARAMETER,
	    FE_MISSING_PARAMETER,
	    FE_ALREADY_INITIALIZED,
	    FE_I2C_ERROR,
	    FE_SEARCH_FAILED,
	    FE_TRACKING_FAILED,
	    FE_TERM_FAILED
	} FE_362_Error_t;
	
	
	typedef enum
	{
	  	FE_MOD_QPSK,
	  	FE_MOD_16QAM,
	  	FE_MOD_64QAM
	} FE_362_Modulation_t;
	

	typedef enum 
	{
		MODE_2K,
		MODE_8K,
		MODE_4K
	}
	FE_362_Mode_t;
	
	typedef enum 
	{
		GUARD_1_32,               /* Guard interval = 1/32 */ 
		GUARD_1_16,               /* Guard interval = 1/16 */ 
		GUARD_1_8,                /* Guard interval = 1/8  */ 
		GUARD_1_4                 /* Guard interval = 1/4  */
	}
	FE_362_Guard_t;

	typedef enum
	{
		HIER_NONE,              /* Regular modulation */ 
		HIER_1,                 /* Hierarchical modulation a = 1*/
		HIER_2,                 /* Hierarchical modulation a = 2*/
		HIER_4                  /* Hierarchical modulation a = 4*/
	}
	FE_362_Hierarchy_t;


	typedef enum
	{
		INVERSION_NONE = 0,
		INVERSION      = 1,
		INVERSION_AUTO = 2,
		INVERSION_UNK  = 4
	}
	FE_362_Spectrum_t;
	
	
	typedef enum 
	{
		FORCENONE  = 0,
		FORCE_M_G		= 1
	}
	FE_362_Force_t;


	typedef enum 
	{
		CHAN_BW_6M  = 6,
		CHAN_BW_7M  = 7,
		CHAN_BW_8M  = 8
	} 
	FE_362_ChannelBW_t;

	typedef enum 
    {
        FEC_NONE = 0x00,    /* no FEC rate specified */
        FEC_ALL = 0xFF,     /* Logical OR of all FECs */
        FEC_1_2 = 1,
        FEC_2_3 = (1 << 1),
        FEC_3_4 = (1 << 2),
        FEC_4_5 = (1 << 3),
        FEC_5_6 = (1 << 4),
        FEC_6_7 = (1 << 5),
        FEC_7_8 = (1 << 6),
        FEC_8_9 = (1 << 7)
    }
    FE_362_FECRate_t;
		
	
	
	/* type of modulation (common) */
#ifdef HOST_PC
typedef enum STTUNER_Modulation_e
{
STTUNER_MOD_NONE   = 0x00,  /* Modulation unknown */ 
STTUNER_MOD_ALL    = 0x1FF, /* Logical OR of all MODs */ 
STTUNER_MOD_QPSK   = 1,
STTUNER_MOD_8PSK   = (1 << 1),
STTUNER_MOD_QAM    = (1 << 2),
STTUNER_MOD_16QAM  = (1 << 3),
STTUNER_MOD_32QAM  = (1 << 4),
STTUNER_MOD_64QAM  = (1 << 5),
STTUNER_MOD_128QAM = (1 << 6),
STTUNER_MOD_256QAM = (1 << 7),
STTUNER_MOD_BPSK   = (1 << 8)
}
STTUNER_Modulation_t;


/* mode of OFDM signal (ter) */
typedef enum STTUNER_Mode_e
{
STTUNER_MODE_2K,
STTUNER_MODE_8K,
STTUNER_MODE_4K 
}
STTUNER_Mode_t;


/* guard of OFDM signal (ter) */
typedef enum STTUNER_Guard_e
{
STTUNER_GUARD_1_32,               /* Guard interval = 1/32 */ 
STTUNER_GUARD_1_16,               /* Guard interval = 1/16 */ 
STTUNER_GUARD_1_8,                /* Guard interval = 1/8  */ 
STTUNER_GUARD_1_4                 /* Guard interval = 1/4  */
}
STTUNER_Guard_t;

/* hierarchy (ter) */

typedef enum STTUNER_Hierarchy_e
{
STTUNER_HIER_NONE,              /* Regular modulation */ 
STTUNER_HIER_1,                 /* Hierarchical modulation a = 1*/
STTUNER_HIER_2,                 /* Hierarchical modulation a = 2*/
STTUNER_HIER_4                  /* Hierarchical modulation a = 4*/
}
STTUNER_Hierarchy_t;


/* (ter & cable) */
typedef enum STTUNER_Spectrum_e
{
STTUNER_INVERSION_NONE = 0,
STTUNER_INVERSION      = 1,
STTUNER_INVERSION_AUTO = 2,
STTUNER_INVERSION_UNK  = 4
}
STTUNER_Spectrum_t;


/* (ter) */
typedef enum STTUNER_FreqOff_e
{
STTUNER_OFFSET_NONE = 0,
STTUNER_OFFSET      = 1
}
STTUNER_FreqOff_t;


/* (ter) */
typedef enum STTUNER_Force_e
{
STTUNER_FORCENONE  = 0,
STTUNER_FORCE_M_G		= 1
}
STTUNER_Force_t;


/* (ter) */
	typedef enum STTUNER_ChannelBW_e
	{
	STTUNER_CHAN_BW_6M  = 6,
	STTUNER_CHAN_BW_7M  = 7,
	STTUNER_CHAN_BW_8M  = 8
	} STTUNER_ChannelBW_t;

	typedef enum STTUNER_FECRate_e
    {
        STTUNER_FEC_NONE = 0x00,    /* no FEC rate specified */
        STTUNER_FEC_ALL = 0xFF,     /* Logical OR of all FECs */
        STTUNER_FEC_1_2 = 1,
        STTUNER_FEC_2_3 = (1 << 1),
        STTUNER_FEC_3_4 = (1 << 2),
        STTUNER_FEC_4_5 = (1 << 3),
        STTUNER_FEC_5_6 = (1 << 4),
        STTUNER_FEC_6_7 = (1 << 5),
        STTUNER_FEC_7_8 = (1 << 6),
        STTUNER_FEC_8_9 = (1 << 7)
    }
    STTUNER_FECRate_t;


#endif
	
	
	
	typedef enum
	{
		FE_TPS_1_2	=	0,
		FE_TPS_2_3	=	1,   
		FE_TPS_3_4	=	2,   
		FE_TPS_5_6	=	3,   
		FE_TPS_7_8	=	4   
	} FE_362_Rate_TPS_t;
	
	typedef enum
	{
		FE_1_2	=	0,
		FE_2_3	=	1,   
		FE_3_4	=	2,   
		FE_5_6	=	3,   
		FE_6_7	=	4,
		FE_7_8	=	5   
	} FE_362_Rate_t;

	

	
	
	typedef enum
	{
		FE_NO_FORCE =0,
		FE_FORCE_PR_1_2 = 1 ,
		FE_FORCE_PR_2_3 = 1<<1,
		FE_FORCE_PR_3_4 = 1<<2,
		FE_FORCE_PR_5_6 = 1<<3 ,
		FE_FORCE_PR_7_8 = 1<<4
	}FE_362_Force_PR_t ;
	


	typedef enum
	{
		NOT_FORCED  = 0,
		WAIT_TRL	= 1,
		WAIT_AGC	= 2,
		WAIT_SYR	= 3,
		WAIT_PPM	= 4,
		WAIT_TPS	= 5,
		MONITOR_TPS	= 6,
		RESERVED	= 7
	}FE_State_Machine_t ;
	
	
	typedef enum
	{
		NORMAL_IF_TUNER=0, 
		LONGPATH_IF_TUNER=1,
		IQ_TUNER=2 
		
	}FE_362_IF_IQ_Mode;

	typedef enum
	{								
		FE_PARALLEL_CLOCK,	
		FE_SERIAL_CLOCK
	} FE_362_Clock_t;
	
	/****************************************************************
						INIT STRUCTURES
	 ****************************************************************/


	/*
		structure passed to the FE_362_Init() function
	*/		
	typedef struct
	{
		STV0362_InitParams_t 	*hDemod;	/* stapi */
		TUNER_InitParams_t		*Tuner362Init;/*	STTUNER_TunerType_t     Tuner; */
		FE_362_Clock_t		Clock;
		U32 					Frequency;    /* Windows NT specific*/
	
	} FE_362_InitParams_t;
	
	typedef struct
	{
		FE_362_SignalStatus_t	SignalType;		/*	Type of founded signal	*/
		STTUNER_FECRate_t		PunctureRate;	/*	Puncture rate found	*/
		double Frequency;						/*	Transponder frequency (KHz)	*/
		STTUNER_Mode_t	Mode;				/*	Mode 2K or 8K	*/
		STTUNER_Guard_t	Guard;				/*	Guard interval 	*/
		STTUNER_Modulation_t 	Modulation;		/*modulation*/
		STTUNER_Hierarchy_t		hier;
		FE_362_Rate_TPS_t		HPRate;
		FE_362_Rate_TPS_t		Lprate;
		FE_362_Rate_TPS_t		pr;
		U32 SymbolRate;/* A enler apres */ 						/*	Symbol rate (Bds)	*/
	} FE_362_InternalResults_t;

	typedef struct
{
	/* hChip must be the first item in the structure !!! */
	STCHIP_Handle_t hDemod;					/*	Handle to the chip	*/
	TUNER_Handle_t hTuner;					/* MODIF AHMED */
	#ifndef HOST_PC
	STTUNER_IOREG_DeviceMap_t   *DeviceMap;     /* Handle to the Device   STAPI*/
	#endif
	FE_362_SignalStatus_t State;					/*	Current state of the search algorithm */
	
	FE_362_IF_IQ_Mode		IF_IQ_Mode;       
        
	STTUNER_Mode_t	Mode;				/*	Mode 2K or 8K	*/
	STTUNER_Guard_t	Guard;				/*	Guard interval 	*/
	U32		Frequency;					/*	Current tuner frequency (KHz) */
	U8  I2Cspeed;						/*  						*/
	FE_OFDMEchoParams_t 	Echo;
/*	STTUNER_TunerType_t		Tuner;*/		/*  Current tuner (ALPS or TMM) */ 
	STTUNER_Spectrum_t		Inv	;		/*  0 no spectrum inverted search to be perfomed*/
	STTUNER_FreqOff_t		Offset;		/*	0 no freq offset channel search to be perfomed*/	
	U8	Delta;							/*	offset of frequency*/      	
	U8  Sense;							/*  current search,spectrum not inveerted*/     
	U8  Force;							/*  force mode/guard 					 */
	U8  ChannelBW;						/*  channel width   */
	S8  EchoPos;						/*  echo position */
	U8  first_lock;						/*				*/
	U8  prev_lock_status;				/*  verbose status of the previous lock (for scan ) */
	FE_362_InternalResults_t	Results;/*  Results of the search	*/
 
}FE_362_InternalParams_t;



	/****************************************************************
	        					SEARCH STRUCTURES
	 ****************************************************************/



	/************************
		SATELLITE DELIVERY
	 ************************/


	typedef struct
	{
	U32                 Frequency;
	FE_362_IF_IQ_Mode	IF_IQ_Mode; 
	STTUNER_Mode_t      Mode;
	STTUNER_Guard_t     Guard;
	STTUNER_FreqOff_t   Offset;
	STTUNER_Force_t     Force;
	STTUNER_Spectrum_t  Inv;
	STTUNER_ChannelBW_t ChannelBW;
	S8                  EchoPos;
	}
	FE_362_SearchParams_t;


	/************************					 
		INFO STRUCTURE
	************************/
	typedef struct
	{
		U32 Frequency;
		U32 Agc_val;// Agc1 on MSB 
		
		STTUNER_Mode_t 			Mode;
		STTUNER_Guard_t 		Guard;
		STTUNER_Modulation_t 	Modulation;		/*modulation*/
		STTUNER_Hierarchy_t		hier;
		STTUNER_Spectrum_t		Sense;	//0 spectrum not inverted
		FE_362_Rate_TPS_t		HPRate;
		FE_362_Rate_TPS_t		LPRate;
		FE_362_Rate_TPS_t		pr;
		TUNER_Handle_t 			hTuner;	/* MODIF AHMED */	                         
		FE_State_Machine_t		State;
		S8 						Echo_pos;
		FE_362_SignalStatus_t	SignalStatus;
		BOOL 					Locked;				/* Transponder found  */
	} FE_362_SearchResult_t;
	
	typedef struct
	{
	U32 Frequency ;
	FE_362_SearchResult_t Result;
	} FE_362_Scan_Result_t;
	


	/****************************************************************
						API FUNCTIONS
	****************************************************************/

	FE_362_Handle_t	FE_362_Init		(FE_362_InitParams_t		*pInit);

	FE_362_Error_t	FE_362_Search	(	FE_362_Handle_t	Handle,
										FE_362_SearchParams_t	*pSearch, 
										FE_362_SearchResult_t *pResult);	
	
	FE_362_Error_t	FE_362_LookFor	(FE_362_InternalParams_t		*pParam,
									FE_362_SearchParams_t		*pParams,
									FE_362_SearchResult_t 		*pResult
									/*STTUNER_tuner_instance_t 	*TunerInstance*/);

	FE_362_Error_t	FE_362_Term(FE_362_Handle_t	Handle); 
	void FE_362_Tracking(FE_362_InternalParams_t *pParams);
	int SpeedInit(STCHIP_Handle_t hChip);
	void FE_362_GetNoiseEstimator(STCHIP_Handle_t hChip, U32 *pNoise, U32 *pBer);
	void SET_TRLNOMRATE_REGS(STCHIP_Handle_t hChip,short unsigned int value); 
	short unsigned int GET_TRLNOMRATE_VALUE(STCHIP_Handle_t hChip);  
	signed int GET_TRL_OFFSET(STCHIP_Handle_t hChip);  
	FE_362_SignalStatus_t FE_362_CheckData2(FE_362_Handle_t	Handle);
	
	#ifdef HOST_PC 
	 // dcdc debug only   //
	void FE_362_Core_Switch(STCHIP_Handle_t hChip);
	FE_362_Error_t	FE_362_TunerSet(/*TUNER_Handle_t Handle,*/FE_362_InternalParams_t* pParams);

	FE_362_SignalStatus_t FE_362_Zap(FE_362_SearchResult_t *pScanResult, Zap_direction_t direction, short int *ind_chan,FE_362_InternalParams_t* pParams);
	STCHIP_Error_t STV362_RepeaterFn(STCHIP_Handle_t hChip,BOOL State);   
	void FilterCoeffInit(STCHIP_Handle_t hChip,U16 CellsCoeffs[6][5])	;	 
	#endif

	
#endif

⌨️ 快捷键说明

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