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

📄 d0360.h

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

Description:

    stv0360 demod driver.

Copyright (C) 1999-2001 STMicroelectronics

History:

   date: 12-Sept-2001
version: 3.1.0
 author: GB from work by GJP
comment:

Reference:

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

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

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


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

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

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

/* LLA */
#include "360_echo.h" 
#include "360_drv.h"


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

/* STV0360 common definitions */
#define DEF0360_SCAN    0
#define DEF0360_CHANNEL 1

/**/
#define DEF0360_4MHZ 1

/**/
#define DEF0360_NBPARAM      50
#define DEF0360_NBREG        65
#define DEF0360_NBFIELD     113
/**/
#define DEF0360_SET         0
#define DEF0360_GET         1
#define DEF0360_NOCHANGE    0
#define DEF0360_END         0
#define DEF0360_ON          1
#define DEF0360_OFF         0

#define DEF0360_UNSIGNED    0
#define DEF0360_SIGNED      1

/* info */
#define DEF0360_USERCHANGE     1
#define DEF0360_TUNERCHANGE    2
#define DEF0360_REGCHANGE      3
#define DEF0360_PANELCHANGE    4
#define DEF0360_STANDBY     1000
#define DEF0360_NOSTANDBY   1999

/**/
#define DEF0360_I2CDRIVER              3
#define DEF0360_APPLICATIONMAIN      100
#define DEF0360_DRIVER               200
#define DEF0360_SYSTEM              1100
#define DEF0360_USERPARAMETERS      1200
#define DEF0360_STVFILE             1300
#define DEF0360_TRACE               1400
#define DEF0360_BATCH               1500
#define DEF0360_REGMAP              1600
#define DEF0360_PANELUTIL           1700
#define DEF0360_DRIVERMAIN         10100
#define DEF0360_I2CSTATUSPANEL     10300
#define DEF0360_REGREADMAPPANEL    10400
#define DEF0360_REGWRITEMAPPANEL   10500
#define DEF0360_REPORTPANEL        10800
#define DEF0360_READMEPANEL        10900
#define DEF0360_LOOKUPPANEL        11000

/**/
#define DEF0360_TUNERDRIVERPANEL   20200
#define DEF0360_CARRIERPANEL       20300
#define DEF0360_CLOOPPANEL         20310
#define DEF0360_TLOOPPANEL         20320
#define DEF0360_SCANPANEL          20400
#define DEF0360_CLOCKPANEL         20500
#define DEF0360_IOPANEL            20600
#define DEF0360_ERRORPANEL         20700
#define DEF0360_FECPANEL           20800
#define DEF0360_BENCHMARKPANEL     20900

/* MACRO definitions */
#define MAC0360_ABS(X)   ((X)<0 ?   (-X) : (X))
#define MAC0360_MAX(X,Y) ((X)>=(Y) ? (X) : (Y))
#define MAC0360_MIN(X,Y) ((X)<=(Y) ? (X) : (Y))
#define MAC0360_MAKEWORD(X,Y) ((X<<8)+(Y))
#define MAC0360_LSB(X) ((X & 0xFF))
#define MAC0360_MSB(Y) ((Y>>8)& 0xFF)
#define MAC0360_INRANGE(X,Y,Z) (((X<=Y) && (Y<=Z))||((Z<=Y) && (Y<=X)) ? 1 : 0)


/* Maximum signal quality */
#define STV0360_MAX_SIGNAL_QUALITY     100

/* REGISTER BIT ASSIGNMENTS */

/* STV0360 Register VSTATUS */
#define STV0360_VSTATUS_PR_1_2  (4)     /* Basic 1/2 */
#define STV0360_VSTATUS_PR_2_3  (0)     /* Punctured 2/3 */
#define STV0360_VSTATUS_PR_3_4  (1)     /* Punctured 3/4 */
#define STV0360_VSTATUS_PR_5_6  (2)     /* Punctured 5/6 */
#define STV0360_VSTATUS_PR_7_8  (3)     /* Punctured 7/8 (Mode A) or 6/7 (Mode B) */

/* STV0360 Register VENRATE (0x09) Puncture rate enable */
#define STV0360_VENRATE_E0_MSK  (0x01)  /* Enable Basic Puncture Rate 1/2 */
#define STV0360_VENRATE_E1_MSK  (0x02)  /* Enable Puncture Rate 2/3 */
#define STV0360_VENRATE_E2_MSK  (0x04)  /* Enable Puncture Rate 3/4 */
#define STV0360_VENRATE_E3_MSK  (0x08)  /* Enable Puncture Rate 5/6 */
#define STV0360_VENRATE_E4_MSK  (0x10)  /* Enable Puncture Rate 6/7 Mode B
                                           or 7/8 Mode A */


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



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


typedef struct
{
    U32                     Frequency;
    FE_360_SearchResult_t   Result;
} D0360_ScanResult_t;



/* ---------- per instance of driver ---------- */
#ifndef STTUNER_MINIDRIVER
typedef struct
{
    ST_DeviceName_t             *DeviceName;        /* unique name for opening under */
    STTUNER_Handle_t            TopLevelHandle;     /* access tuner, etc. using this */
    IOARCH_Handle_t             IOHandle;           /* instance access to I/O driver     */

    FE_360_Handle_t             FE_360_Handle;

    /* filled in init(), used in open() function. */
    FE_360_InitParams_t         FE_360_InitParams;
    
    ST_Partition_t              *MemoryPartition;   /* which partition this data block belongs to */
    void                        *InstanceChainPrev; /* previous data block in chain or NULL if not */
    void                        *InstanceChainNext; /* next data block in chain or NULL if last */
    U32                         ExternalClock;      /* External VCO */
    STTUNER_TSOutputMode_t      TSOutputMode;
    STTUNER_SerialDataMode_t    SerialDataMode;
    STTUNER_SerialClockSource_t SerialClockSource;
    STTUNER_FECMode_t           FECMode;
    STTUNER_IOREG_DeviceMap_t 	DeviceMap;
    STTUNER_DataClockPolarity_t ClockPolarity;
    U32                         StandBy_Flag; /*** To take care same Standby Mode doesnot
                                                   execute more than once ***/
    FE_360_SearchResult_t       Result;                                                   
 } D0360_InstanceData_t;
#endif

#ifdef STTUNER_MINIDRIVER
typedef struct
{   
    STTUNER_Handle_t            TopLevelHandle;     /* access tuner, etc. using this */
    IOARCH_Handle_t             IOHandle;           /* instance access to I/O driver     */

    FE_360_Handle_t             FE_360_Handle;

    /* filled in init(), used in open() function. */
    FE_360_InitParams_t         FE_360_InitParams;
    
    STCHIP_Info_t               Chip;
    ST_Partition_t              *MemoryPartition;   /* which partition this data block belongs to */
    void                        *InstanceChainPrev; /* previous data block in chain or NULL if not */
    void                        *InstanceChainNext; /* next data block in chain or NULL if last */
    U32                         ExternalClock;      /* External VCO */
    STTUNER_TSOutputMode_t      TSOutputMode;
    STTUNER_SerialDataMode_t    SerialDataMode;
    STTUNER_SerialClockSource_t SerialClockSource;
    STTUNER_FECMode_t           FECMode;
    STTUNER_DataClockPolarity_t ClockPolarity;
    U32                         StandBy_Flag; /*** To take care same Standby Mode doesnot
                                                   execute more than once ***/
 } D0360_InstanceData_t;
#endif
/* macros ------------------------------------------------------------------ */

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

/* functions --------------------------------------------------------------- */
#ifndef STTUNER_MINIDRIVER
/* install into demod database */
ST_ErrorCode_t STTUNER_DRV_DEMOD_STV0360_Install(STTUNER_demod_dbase_t *Demod);

/* remove from database */
ST_ErrorCode_t STTUNER_DRV_DEMOD_STV0360_UnInstall(STTUNER_demod_dbase_t *Demod);
#endif
#ifdef STTUNER_MINIDRIVER
ST_ErrorCode_t demod_d0360_Init(ST_DeviceName_t *DeviceName, DEMOD_InitParams_t *InitParams);
ST_ErrorCode_t demod_d0360_Term(ST_DeviceName_t *DeviceName, DEMOD_TermParams_t *TermParams);

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

ST_ErrorCode_t demod_d0360_GetTunerInfo    (DEMOD_Handle_t Handle, STTUNER_TunerInfo_t *TunerInfo_p);
ST_ErrorCode_t demod_d0360_GetSignalQuality(DEMOD_Handle_t Handle, U32  *SignalQuality_p, U32 *Ber);
ST_ErrorCode_t demod_d0360_GetModulation   (DEMOD_Handle_t Handle, STTUNER_Modulation_t *Modulation);
ST_ErrorCode_t demod_d0360_GetAGC          (DEMOD_Handle_t Handle, S16                  *Agc);
ST_ErrorCode_t demod_d0360_GetMode         (DEMOD_Handle_t Handle, STTUNER_Mode_t       *Mode);
ST_ErrorCode_t demod_d0360_GetGuard        (DEMOD_Handle_t Handle, STTUNER_Guard_t      *Guard);
ST_ErrorCode_t demod_d0360_GetFECRates     (DEMOD_Handle_t Handle, STTUNER_FECRate_t    *FECRates);
ST_ErrorCode_t demod_d0360_IsLocked        (DEMOD_Handle_t Handle, BOOL                 *IsLocked);
ST_ErrorCode_t demod_d0360_Tracking        (DEMOD_Handle_t Handle, BOOL ForceTracking,   U32 *NewFrequency, BOOL *SignalFound);
ST_ErrorCode_t demod_d0360_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);
#endif



#ifdef __cplusplus
}
#endif                          /* __cplusplus */

#endif                          /* __STTUNER_TER_D0360_H */


/* End of d0360.h */

⌨️ 快捷键说明

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