📄 362_drv.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 + -