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

📄 stb0899_drv.h

📁 DVB-S STB0899 source code
💻 H
字号:
#ifndef STB0899_DRV_H
#define STB0899_DRV_H

#include "stb0899.h"
#include "stb0899_common.h"
#include "stb0899_dvbs2util.h"
#include "stb0899_util.h"
#include "stb0899_init.h"
#include "stb0899_tuner.h"

/****************************************************************
		COMMON STRUCTURES AND TYPEDEF
****************************************************************/		
typedef enum
{
	FE_NO_ERROR,
	FE_INVALID_HANDLE,
	FE_ALLOCATION,
	FE_BAD_PARAMETER,
	FE_ALREADY_INITIALIZED,
	FE_I2C_ERROR,
	FE_SEARCH_FAILED,
	FE_TRACKING_FAILED,
	FE_TERM_FAILED
} FE_STB0899_Error_t;
	
typedef enum
{
	FE_MOD_BPSK,
	FE_MOD_QPSK,
	FE_MOD_OQPSK,
	FE_MOD_8PSK
} FE_STB0899_Modulation_t;
	
typedef enum
{
	FE_IQ_AUTO,
	FE_IQ_NORMAL,
	FE_IQ_SWAPPED
}FE_STB0899_IQ_Inversion;

typedef enum
{
	FE_1_2 =13,
	FE_2_3 =18,	
	FE_3_4 =21,
	FE_5_6 =24,
	FE_6_7 =25,
	FE_7_8 =26
}FE_STB0899_Rate_t;
	
typedef enum
{	
	FE_PARALLEL_CLOCK,
	FE_SERIAL_MASTER_CLOCK,
	FE_SERIAL_VCODIV6_CLOCK
} FE_STB0899_Clock_t;

typedef enum
{
	FE_PARITY_ON,
	FE_PARITY_OFF
} FE_STB0899_DataParity_t;
/* The FEC mode corresponds to the DVB standard	*/
typedef enum
{	
	FE_DVBS1_STANDARD,	
	FE_DVBS2_STANDARD,
	FE_DSS_STANDARD
} FE_STB0899_CodingStandard_t;

/*Internal error definitions*/
typedef enum 
{
	FE_IERR_NO,			/*no error	*/
	FE_IERR_I2C,			/*I2C error	*/
	FE_IERR_ZERODIV,		/*division by zero*/
	FE_IERR_PARAM,			/*wrong parameters*/
	FE_IERR_UNKNOWN			/*unknown error	*/
} FE_STB0899_ErrorType_t;

typedef enum
{
	FE_LOC_NOWHERE,			/*no location	*/
	FE_LOC_SRHINIT,			/*in SearchInit	*/
	FE_LOC_SRHRUN,			/*in SearchRun	*/
	FE_LOC_SRHTERM,			/*in SearchTerm	*/
	FE_LOC_SETSR,			/*in SetSymbolRate*/
	FE_LOC_TIMTCST,			/*in TimingTimeConstant	*/
	FE_LOC_DERTCST,			/*in DerotTimeConstant*/
	FE_LOC_DATTCST,			/*in DataTimeConstant*/
	FE_LOC_CHKTIM,			/*in CheckTiming*/
	FE_LOC_SRHCAR,			/*in SearchCarrier*/
	FE_LOC_SRHDAT,			/*in SearchData	*/
	FE_LOC_CHKRNG,			/*in CheckRange	*/
	FE_LOC_SELLPF			/*in SelectLPF	*/
} FE_STB0899_Location_t;

/****************************************************************
		INIT STRUCTURES
	structure passed to the FE_STB0899_Init() function  
****************************************************************/
 typedef struct
{
	STB0899_InitParams_t *STB0899Init;  /* parameters to pass to initialize the STB0899 */
	TUNER_InitParams_t   *TunerInit;    /* parameters to pass to initialize the Tuner*/
	STCHIP_Info_t        *LnbInit;      /* parameters to pass to initialize the LNBP21*/
        FE_STB0899_CodingStandard_t Standard; 	/* standard used : DVBS1,DVBS2*/
        FE_STB0899_Clock_t 	    Clock;    	/* Clock settings */
        FE_STB0899_DataParity_t     Parity;   	/* parity of the data*/
} FE_STB0899_InitParams_t;

/****************************************************************
		SEARCH STRUCTURES
 ****************************************************************/
typedef struct
{
	u32 Frequency;		/* transponder frequency (in KHz)*/
	u32 SymbolRate; 	/* transponder symbol rate  (in bds)*/
	u32 SearchRange;	/* range of the search (in Hz) */
	FE_STB0899_Modulation_t Modulation;	/* modulation*/
	FE_STB0899_CodingStandard_t Standard;	/*Dvb dvbs2*/
	FE_STB0899_IQ_Inversion IQ_Inversion;	/* IQ spectrum search for DVBS2*/
} FE_STB0899_SearchParams_t;
	
typedef struct
{
	BOOL Locked;			/* Transponder found */
	u32 Frequency;			/* found frequency*/
	u32 SymbolRate;			/* founded symbol rate*/
	FE_STB0899_Rate_t Rate;		/* puncture rate  for DVBS1*/
	FE_DVBS2_ModCod_t ModCode;	/* found modecode only for DVBS2*/
	BOOL Pilots;			/* pilots found*/
	FE_DVBS2_FRAME FrameLength;	/* found frame length*/
} FE_STB0899_SearchResult_t;
	
/***********************************************************
		INFO STRUCTURE
***********************************************************/
typedef struct
{
	BOOL Locked;				/* Transponder locked*/
	u32 Frequency;				/* transponder frequency (in KHz)*/
	u32 SymbolRate;				/* transponder symbol rate  (in Mbds)*/
	FE_STB0899_Modulation_t Modulation;	/* modulation*/
	FE_STB0899_Rate_t Rate;			/* puncture rate for DVBS1 mode	*/
	FE_DVBS2_ModCod_t ModCode;		/* only for DVBS2*/ 
	BOOL Pilots;				/* Pilots on/off only for DVB-S2*/
	FE_DVBS2_FRAME FrameLength;		/* found frame length*/
	S32 Power;				/* Power of the RF signal (dBm)*/	
	u32 C_N;				/* Carrier to noise ratio*/
	u32 BER;				/* Bit error rate*/
	S16 SpectralInv;			/* I,Q Inversion */	
} FE_STB0899_SignalInfo_t;

typedef struct
{
	FE_STB0899_ErrorType_t Type;	 /* Error type	*/
	FE_STB0899_Location_t Location;	 /* Error location*/
} FE_STB0899_InternalError_t;

typedef struct
{	
	/*DVB Internal Params*/
	u32 Frequency;				/*Transponder frequency (KHz)*/
	FE_STB0899_SIGNALTYPE_t	SignalType;	/*Type of founded signal*/
	FE_STB0899_Rate_t PunctureRate;		/*Puncture rate found*/
	u32 SymbolRate; 			/*Symbol rate (Bds)*/
	
	/*DVBS2 Internal Params*/
	FE_DVBS2_State	DVBS2SignalType;
	u32 DVBS2SymbolRate; 			/*founded Symbol rate (Bds)*/
	FE_DVBS2_ModCod_t ModCode;		/*founded ModCod*/
	BOOL Pilots;				/*Pilots founded*/
	FE_DVBS2_FRAME FrameLength;		/* found frame length*/
} FE_STB0899_InternalResults_t;

/*Internal param structure*/
typedef struct
{
	STCHIP_Handle_t hDemod;		/*Handle to the chip*/
	TUNER_Handle_t	hTuner;		/*Handle to the tuner*/
#if 0
	STCHIP_Handle_t hLnb;		/*Handle to the chip*/
#endif
	FE_STB0899_CodingStandard_t Standard;
	S32	Quartz;			/*Quartz frequency (Hz) */
	S32	Frequency,		/*Current tuner frequency (KHz) */
		BaseFreq,		/*Start tuner frequency (KHz) */
		SubRange,		/*Current sub range (Hz) */
		TunerStep,		/*Tuner step (Hz) */
		TunerOffset,		/*Tuner offset relative to the carrier (Hz) */
		TunerBW;		/*Current bandwidth of the tuner (Hz) */ 

	/*DVBS1 Params*/
	FE_STB0899_SIGNALTYPE_t State;	/*Current state of the search algorithm */
	FE_DVBS2_State	DVBS2State;

	S32	SymbolRate,		/*Symbol rate (Bds) */
		MasterClock,		/*Master clock frequency (Hz) */
		Mclk,			/*Divider factor for masterclock (binary value) */
		SearchRange,		/*Search range (Hz) */
		RollOff;		/*Current RollOff of the filter (x100) */
		
	S16	DerotFreq,		/*Current frequency of the derotator (Hz) */
		DerotPercent,		/*Derotator step (in thousands of symbol rate) */
		DerotStep,		/*Derotator step (binary value) */
		Direction,		/*Current search direction */ 
		Tagc1,			/*Agc1 time constant (ms) */
		Tagc2,			/*Agc2 time constant (ms) */
		Ttiming,		/*Timing loop time constant (ms) */
		Tderot,			/*Derotator time constant (ms) */
		Tdata,			/*Data recovery time constant (ms) */
		SubDir;			/*Direction of the next sub range */
	
	/*DVBS2 Params*/
	S32 	DVBS2SymbolRate,	/*Symbol rate (Bds) */	
		AgcGain,		/* RF AGC Gain */
		AveFrameCoarse,
		AveFramefine,
		AgcThreshold,
		FreqRange,
		CenterFreq,
		AveFrameCoarseAcq,
		AveFramefineAcq,
		AveFrameCoarseTrq,
		AveFramefineTrq;
		
	S16	AutoReacq,
		TracklockSel,
		Zigzag,
		StepSize;
	
	FE_STB0899_IQ_Inversion SpectralInv; 
	FE_DVBS2_Mode_t mod;
	FE_DVBS2_AcqMode AcqMode;
	FE_DVBS2_RRCAlpha_t RrcAlpha;

	/*Result and error */
	FE_STB0899_InternalResults_t	Results;	/* Results of the search*/
	FE_STB0899_InternalError_t	Inl_Error;	/* Last error encountered*/
}FE_STB0899_InternalParams_t;

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

FE_STB0899_Handle_t FE_STB0899_Init(FE_STB0899_InitParams_t *pInit);

FE_STB0899_Error_t FE_STB0899_Search(FE_STB0899_Handle_t Handle, FE_STB0899_SearchParams_t * pParams, FE_STB0899_SearchResult_t * pResult);

FE_STB0899_Error_t FE_STB0899_GetSignalInfo(FE_STB0899_Handle_t Handle, FE_STB0899_SignalInfo_t * pInfo);

FE_STB0899_Error_t FE_STB0899_DiseqcSend(FE_STB0899_Handle_t Handle, u8 *Data, u32 NbData);

FE_STB0899_Error_t FE_STB0899_Set22KHZContinues(FE_STB0899_Handle_t Handle, BOOL ToneOn);

FE_STB0899_Error_t FE_STB0899_Term(FE_STB0899_Handle_t Handle);

FE_STB0899_Error_t FE_STB0899_SetMclk(FE_STB0899_Handle_t Handle, u32 Mclk, u32 ExtClk);

#endif

⌨️ 快捷键说明

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