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

📄 d0299.h

📁 st7710的tuner标准驱动
💻 H
字号:
/* ----------------------------------------------------------------------------
File Name: d0299.h

Description: 

    stv0299 demod driver.

Copyright (C) 1999-2001 STMicroelectronics

History:

   date: 19-June-2001
version: 3.1.0
 author: GJP from work by LW
comment: 
    
Reference:

---------------------------------------------------------------------------- */

/* define to prevent recursive inclusion */
#ifndef __STTUNER_SAT_D0299_H
#define __STTUNER_SAT_D0299_H

#ifdef __cplusplus
extern "C"
{
#endif                          /* __cplusplus */


/* includes ---------------------------------------------------------------- */

/* Standard definitions */
#include "stddefs.h"

/* internal types */
#include "dbtypes.h"    /* types of satellite driver database */


/* defines ----------------------------------------------------------------- */

/* STV0299 common definitions */
#define DEF0299_SCAN 	0
#define DEF0299_CHANNEL	1

/**/
#define DEF0299_STV0199_4MHZ 1

/**/
#define DEF0299_NBPARAM      50
#define	DEF0299_NBREG		 65
#define DEF0299_NBFIELD		113
/**/
#define	DEF0299_SET			0
#define	DEF0299_GET			1
#define	DEF0299_NOCHANGE    0
#define	DEF0299_END			0
#define	DEF0299_ON		    1
#define	DEF0299_OFF			0

#define DEF0299_UNSIGNED 	0
#define DEF0299_SIGNED		1

/* MACRO definitions */
#define MAC0299_ABS(X)   ((X)<0 ?   (-X) : (X))
#define MAC0299_MAX(X,Y) ((X)>=(Y) ? (X) : (Y))
#define MAC0299_MIN(X,Y) ((X)<=(Y) ? (X) : (Y)) 
#define MAC0299_MAKEWORD(X,Y) ((X<<8)+(Y))
#define MAC0299_LSB(X) ((X & 0xFF))
#define MAC0299_MSB(Y) ((Y>>8)& 0xFF)
#define MAC0299_INRANGE(X,Y,Z) (((X<=Y) && (Y<=Z))||((Z<=Y) && (Y<=X)) ? 1 : 0)


/* Maximum signal quality */
#define STV0299_MAX_SIGNAL_QUALITY     100

/* REGISTER BIT ASSIGNMENTS */

/* STV0299 Register VSTATUS */
#define STV0299_VSTATUS_PR_1_2  (4)     /* Basic 1/2 */
#define STV0299_VSTATUS_PR_2_3  (0)     /* Punctured 2/3 */
#define STV0299_VSTATUS_PR_3_4  (1)     /* Punctured 3/4 */
#define STV0299_VSTATUS_PR_5_6  (2)     /* Punctured 5/6 */
#define STV0299_VSTATUS_PR_7_8  (3)     /* Punctured 7/8 (Mode A) or 6/7 (Mode B) */

/* STV0299 Register VENRATE (0x09) Puncture rate enable */
#define STV0299_VENRATE_E0_MSK  (0x01)  /* Enable Basic Puncture Rate 1/2 */
#define STV0299_VENRATE_E1_MSK  (0x02)  /* Enable Puncture Rate 2/3 */
#define STV0299_VENRATE_E2_MSK  (0x04)  /* Enable Puncture Rate 3/4 */
#define STV0299_VENRATE_E3_MSK  (0x08)  /* Enable Puncture Rate 5/6 */
#define STV0299_VENRATE_E4_MSK  (0x10)  /* Enable Puncture Rate 6/7 Mode B
                                           or 7/8 Mode A */


/* enumerated types -------------------------------------------------------- */

typedef enum
{
    E299_BWTOONARROW = 0,
    E299_BWOK,
    E299_NOAGC1,
    E299_AGC1SATURATION,
    E299_AGC1OK,
    E299_NOTIMING,
    E299_ANALOGCARRIER,
    E299_TIMINGOK,
    E299_NOAGC2,
    E299_AGC2OK,
    E299_NOCARRIER,
    E299_CARRIEROK,
    E299_NODATA,
    E299_FALSELOCK,
    E299_DATAOK,
    E299_OUTOFRANGE,
    E299_RANGEOK
} 
D0299_SignalType_t;


/* Puncture Rate enum */
typedef enum
{	
    E299_PR2_3 = 0,
    E299_PR3_4,
    E299_PR5_6,
    E299_PR7_8,
    E299_PR1_2,
    E299_PRUNKNOWN
}
D0299_Puncturerate_t;


/*	Scan direction enum	*/
typedef enum 
{
    E299_SCANUP   =  1,
    E299_SCANDOWN = -1
}
D0299_Scandir_t; 


/* driver internal types --------------------------------------------------- */

/*	Search result structure	*/    
typedef struct
{
    D0299_SignalType_t    SignalType;
    LNB_Polarization_t    Polarization; /* LNB, Polarization element not referenced in demod */
    D0299_Puncturerate_t  PunctureRate;  
    long Frequency;
    long SymbolRate; 
} D0299_Searchresult_t;


/* AGC2 gain and frequency structure */
typedef struct
{
    int  NbPoints;
    int  Gain[3];
    long Frequency[3];
} D0299_Agc2TimingOK_t;	


/*	Search parameters structure	*/         
typedef struct
{
    D0299_SignalType_t State;

    long Frequency;
    long BaseFreq;
    long SymbolRate;
    long MasterClock;
    long Mclk;
    long RollOff;
    long SearchRange;
    long SubRange;

    long TunerStep;
    long TunerOffset;
    long TunerBW;
    long TunerIF;
    long TunerIQSense;

    STTUNER_IQMode_t DemodIQMode;

    short int DerotFreq;
    short int DerotPercent;
    short int DerotStep;
    short int Direction;
    short int Tagc1;
    short int Tagc2;
    short int Ttiming;
    short int Tderot;
    short int Tdata;
    short int SubDir;
       
    BOOL TestOn;
    long FreqOffset;
    
} D0299_SearchParams_t;


typedef struct
{
    int RegCarrierOffset;
    int RegTimingOffset;
    int lastAGC2Coef;
    int ScanMode;

    D0299_SearchParams_t Params;
    D0299_Searchresult_t Result;

} D0299_StateBlock_t;


/* macros ------------------------------------------------------------------ */

/* Delay calling task for a period of microseconds */
#ifdef ST_OS21 
#define STV0299_Delay(micro_sec) task_delay((signed int) \
                                  (((micro_sec) + 999) / 1000) * \
                                  ST_GetClocksPerSecond() / 1000)
#else
#define STV0299_Delay(micro_sec) task_delay((unsigned int) \
                                  (((micro_sec) + 999) / 1000) * \
                                  ST_GetClocksPerSecond() / 1000)
#endif                                  

/* functions --------------------------------------------------------------- */

/* install into demod database */
ST_ErrorCode_t STTUNER_DRV_DEMOD_STV0299_Install(STTUNER_demod_dbase_t *Demod);

/* remove from database */
ST_ErrorCode_t STTUNER_DRV_DEMOD_STV0299_UnInstall(STTUNER_demod_dbase_t *Demod);
#ifdef STTUNER_MINIDRIVER
ST_ErrorCode_t demod_d0299_Init(ST_DeviceName_t *DeviceName, DEMOD_InitParams_t *InitParams);
ST_ErrorCode_t demod_d0299_Term(ST_DeviceName_t *DeviceName, DEMOD_TermParams_t *TermParams);

ST_ErrorCode_t demod_d0299_Open (ST_DeviceName_t *DeviceName, DEMOD_OpenParams_t  *OpenParams, DEMOD_Capability_t *Capability, DEMOD_Handle_t *Handle);
ST_ErrorCode_t demod_d0299_Close(DEMOD_Handle_t  Handle, DEMOD_CloseParams_t *CloseParams);

ST_ErrorCode_t demod_d0299_GetSignalQuality(DEMOD_Handle_t Handle, U32  *SignalQuality_p, U32 *Ber);
ST_ErrorCode_t demod_d0299_GetFECRates     (DEMOD_Handle_t Handle, STTUNER_FECRate_t    *FECRates);
ST_ErrorCode_t demod_d0299_GetIQMode       (DEMOD_Handle_t Handle, STTUNER_IQMode_t     *IQMode); /*added for GNBvd26107->I2C failure due to direct access to demod device at API level*/
ST_ErrorCode_t demod_d0299_IsLocked        (DEMOD_Handle_t Handle, BOOL                 *IsLocked);
ST_ErrorCode_t demod_d0299_SetFECRates     (DEMOD_Handle_t Handle, STTUNER_FECRate_t     FECRates);
ST_ErrorCode_t demod_d0299_Tracking        (DEMOD_Handle_t Handle, BOOL ForceTracking,   U32 *NewFrequency, BOOL *SignalFound);

ST_ErrorCode_t demod_d0299_ScanFrequency   (DEMOD_Handle_t Handle, U32  InitialFrequency, U32   SymbolRate,    U32   MaxOffset, 
                                                                   U32  TunerStep,        U8    DerotatorStep, BOOL *ScanSuccess,
                                                                   U32 *NewFrequency,     U32   Mode,          U32   Guard,
                                                                   U32  Force,            U32   Hierarchy,     U32   Spectrum,
                                                                   U32  FreqOff,          U32   ChannelBW,     S32   EchoPos);

/* added for DiSEqC API support*/
ST_ErrorCode_t demod_d0299_DiSEqC       (	DEMOD_Handle_t Handle, 
									    STTUNER_DiSEqCSendPacket_t *pDiSEqCSendPacket,
									    STTUNER_DiSEqCResponsePacket_t *pDiSEqCResponsePacket
									   );

ST_ErrorCode_t demod_d0299_DiSEqCGetConfig ( DEMOD_Handle_t Handle ,STTUNER_DiSEqCConfig_t * DiSEqCConfig);
ST_ErrorCode_t demod_d0299_DiSEqCBurstOFF ( DEMOD_Handle_t Handle );

#endif


#ifdef __cplusplus
}
#endif                          /* __cplusplus */

#endif                          /* __STTUNER_SAT_D0299_H */


/* End of d0299.h */

⌨️ 快捷键说明

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