📄 demod_.h
字号:
#if defined(HOST_PC) /* PC specific parameters */
BOOL Repeater; /* Is repeater enabled or not ? */
struct stchip_Info_t *RepeaterHost; /* Owner of the repeater */
STCHIP_Error_t (*RepeaterFn)(struct stchip_Info_t *hChip,BOOL State); /* Pointer to repeater routine */
/* Parameters needed for non sub address devices */
U32 WrStart; /* Id of the first writable register */
U32 WrSize; /* Number of writable registers */
U32 RdStart; /* Id of the first readable register */
U32 RdSize; /* Number of readable registers */
#endif
}
STCHIP_Info_t;
typedef STCHIP_Info_t *STCHIP_Handle_t; /* Handle to a chip */
//-----------------------------------------------------------------
/* structures -------------------------------------------------------------- */
typedef struct
{
STCHIP_Info_t *Chip; /* pointer to parameters to pass to the CHIP API */
U32 NbDefVal; /* number of default values (must match number of STB0899 registers) */
U32 *DefVal; /* pointer to table of default values */
}
STB0899_InitParams_t;
/****************************************************************
INIT STRUCTURES
structure passed to the FE_STB0899_Init() function
****************************************************************/
typedef struct
{
STB0899_InitParams_t *DemodSTB0899Init; /* parameters to pass to initialize the STB0899 */
// TUNER_InitParams_t *TunerInit; /* parameters to pass to initialize the Tuner */
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;
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
/* 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;
typedef struct
{
FE_STB0899_ErrorType_t Type; /* Error type */
FE_STB0899_Location_t Location; /* Error location */
} FE_STB0899_InternalError_t;
typedef struct
{
FE_STB0899_Polarization_t Polarization; /* Polarization */
/*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 */
// STCHIP_Handle_t hLnb; /* Handle to the chip */
FE_STB0899_CodingStandard_t Standard;//僆儕僕僫儖
// STB0899_STANDARD 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 Error; /* Last error encountered */
public:
}FE_STB0899_InternalParams_t;
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
/* Creation and destruction routines */
STCHIP_Handle_t ChipOpen(STCHIP_Info_t *hChipOpenParams);
//#include "STB0899_init.h"
class Cdemod : public CDialog
{
// 僐儞僗僩儔僋僔儑儞
public:
void dump_register_map();
void dvbs2_srst();
FE_STB0899_Error_t FE_STB0899_SetMclk(FE_STB0899_Handle_t Handle, U32 Mclk, U32 ExtClk);
void FE_STB0899_SetIterScal(STCHIP_Handle_t hChip, U32 MasterClock, U32 SymbolRate);
STCHIP_Error_t ChipApplyDefaultValues(STCHIP_Handle_t hChip);
void dvbs2_reset();
void eq_srst();
void eq_init();
void ldpc_decorder_reset();
void stb0899_setdata(long address, long baseaddress,long data,BOOL pointed,int size);
void write_all_data();
void read_all_data();
long stb0899_getdata_with_dummy(long address, long baseaddress);
double calculate_ldpc_ber(long ERRO_COUNT3,long ERRCTRL3);
long stb0899_getdata_test(long address, long baseaddress);
double tun_getfreq();
void FE_DVBS2_ManualConfigCSM(STCHIP_Handle_t hChip,FE_DVBS2_CSMConfig_Params_t CSMParams);
void FE_DVBS2_CSMInitialize(STCHIP_Handle_t hChip,int Pilots,FE_DVBS2_ModCod_t ModCode,U32 SymbolRate,U32 MasterClock);
U32 FE_DVBS2_GetModCod(STCHIP_Handle_t hChip);
FE_STB0899_Error_t FE_STB0899_Term(FE_STB0899_Handle_t Handle);
STCHIP_Error_t ChipClose(STCHIP_Handle_t hChip);
void update_regmap(STCHIP_Handle_t hChip);
CString modcode_from_reg(int data);
long stb0899_getdata(long address, long baseaddress);
struct STATUS
{
BOOL lock_demod_uwp;
BOOL lock_packet_delineator;
long agc;//IF
long agc2;//BB
CString modcode;
int spectral_inversion;
double ldpc_ber;
double bch_ber;
double df;
long TEST;
} m_status;
// int get_status();
void get_status();
BOOL status_test();
void set_register_from_address_baseaddress();
void set_dialog_baseaddress();
void set_dialog_address_baseaddress_data(long address,long baseaddress,long data);
void get_register_from_address_baseaddress();
U16 get_RegID_from_address_baseaddress(STCHIP_Handle_t hChip,U16 Add,U16 baseaddress);
void get_baseaddress_from_registeraddress(STCHIP_Handle_t hChip,long address,long* baseaddress);
void stb0899_initialize_parameter_Params(FE_STB0899_SearchParams_t *Params);
void update_register();
BOOL TunerGetStatus();
void WaitTuner(int TimeOut);
//void WaitTuner(TUNER_Handle_t hTuner,int TimeOut);
void NextSubRange(FE_STB0899_InternalParams_t *pParams);
int FE_DVBS2_GetUWPstate(STCHIP_Handle_t hChip,int TimeOut);
int FE_DVBS2_GetCSMLock(STCHIP_Handle_t hChip,int TimeOut);
FE_DVBS2_State FE_DVBS2_GetState(STCHIP_Handle_t hChip,int Timeout);
void stb_0899_reset();
void tun_setfreq(double freq,double baud);
void nim_receive();
void set_nim_reg_value_from_hChip(STCHIP_Handle_t hChip);
void set_dialog_parameter();
void clear_list();
void set_list();
void get_register();
void set_register();
U16 ChipGetRegIdFromAdd(STCHIP_Handle_t hChip,U16 Add);
long reg_id_from_address(long address);
long stb0899_demod_getdata(long address);
void stb0899_demod_setdata(long address, long data);
void set_dialog_address_data(long address, long data);
void get_dialog_address_data();
void init_combo();
// void stb0899_set_initial_value(FE_STB0899_Handle_t *Handle);
// void stb0899_initialize_register(FE_STB0899_Handle_t *Handle);
void stb0899_set_initial_value(FE_STB0899_InitParams_t *Init);
// void stb0899_initialize_register(FE_STB0899_InitParams_t *Init);
// void stb0899_set_initial_value();
// void stb0899_initialize_register();
void initialize_stb0899_register();
void bus_close();
void bus_open();
void message_box(CString t);
FE_DVBS2_State FE_STB0899_DVBS2Algo(FE_STB0899_InternalParams_t *pParams);
FE_STB0899_Error_t FE_STB0899_Search(FE_STB0899_Handle_t Handle,FE_STB0899_SearchParams_t *pSearch,FE_STB0899_SearchResult_t *pResult);
// U32* init_stv0899_register_value(U32 *DefVal);
// void init_stv0899_register_value(U32 *DefVal);
void STB0899_tst_main();
void FE_STB0899_InitialCalculations_test(FE_STB0899_InternalParams_t *pParams);
STCHIP_Handle_t STB0899_Init(STB0899_InitParams_t *InitParams);
int FE_STB0899_GetAlpha(STCHIP_Handle_t hChip);
U32 FE_STB0899_GetMclkFreq(STCHIP_Handle_t hChip, U32 ExtClk);
void FE_STB0899_InitialCalculations(FE_STB0899_InternalParams_t *pParams);
// void FE_STB0899_SetStandard(STCHIP_Handle_t hChip,STB0899_STANDARD Standard);
void FE_STB0899_SetStandard(STCHIP_Handle_t hChip,FE_STB0899_CodingStandard_t Standard);//掕媊曄峏
FE_STB0899_Handle_t FE_STB0899_Init(FE_STB0899_InitParams_t *pInit);
U32 CalcCorrection(U32 SymbolRate,U32 MasterClock);
U32 DVBS2CalclSymbRate(U32 SymbolRate,U32 MasterClock);
long Log2Int(int number);
void FE_DVBS2_AutoConfigCSM(STCHIP_Handle_t hChip);
void FE_DVBS2_ConfigUWP(STCHIP_Handle_t hChip,FE_DVBS2_UWPConfig_Params_t UWPparams);
void FE_DVBS2_BtrInit(STCHIP_Handle_t hChip);
void FE_DVBS2_SetBtrLoopBW(STCHIP_Handle_t hChip, FE_DVBS2_LoopBW_Params_t LoopBW);
void FE_DVBS2_SetSymbolRate(STCHIP_Handle_t hChip,U32 SymbolRate,U32 MasterClock);
void FE_DVBS2_InitialCalculations(STCHIP_Handle_t hChip,FE_STB0899_DVBS2_InitParams_t *InitParams);
U32 FE_DVBS2_GetSymbolRate(STCHIP_Handle_t hChip,U32 MasterClock);
int FE_DVBS2_GetDataLock(STCHIP_Handle_t hChip,int TimeOut);
void test5();
int ChipGetFieldImage(STCHIP_Handle_t hChip,U32 FieldId);
int ChipGetOneRegister(STCHIP_Handle_t hChip, U16 RegId);
int ChipGetField(STCHIP_Handle_t hChip,U32 FieldId);
STCHIP_Error_t ChipGetRegisters(STCHIP_Handle_t hChip, int FirstReg, int NbRegs);
long PowOf2(int number);
void FE_DVBS2_SetCarrierFreq(STCHIP_Handle_t hChip,S32 CarrierFreq,U32 MasterClock);
void test4();
void test3();
// void init();
void FE_DVBS2_Reset(STCHIP_Handle_t hChip);
void FE_DVBS2_Reacquire(STCHIP_Handle_t hChip,FE_DVBS2_ReacquireParams_t *ReacquireParams);
void FE_DVBS2_StartUWP(STCHIP_Handle_t hChip);
STCHIP_Error_t ChipSetOneRegister(STCHIP_Handle_t hChip,U16 RegId,U32 Data);
STCHIP_Error_t ChipSetFieldImage(STCHIP_Handle_t hChip,U32 FieldId, int Value);
//message view
CString msg ;
CString message_gloval ;
CString string ;
void message(CString message);
void message_reset();
void show_message();
void message_add(CString message);
I2C_RESULT I2cReadWrite(I2C_MODE mode,unsigned char ChipAddress,unsigned char *Data,int NbData);
STCHIP_Error_t ChipSetRegisters(STCHIP_Handle_t hChip,int FirstReg, int NbRegs);
U32 CreateMask(char NbBits, char Pos);
//---
STCHIP_Error_t ChipAddReg(STCHIP_Handle_t hChip,STCHIP_RegSize_t Size,
U16 RegId,char * Name,U16 Address,U32 Default,STCHIP_Access_t Access,
STCHIP_Pointed_t Pointed,U16 PointerRegAddr,U32 BaseAdress);
void i2c_write(int *data, int num);
BOOL Create();
Cdemod(CWnd* pParent = NULL); // 昗弨偺僐儞僗僩儔僋僞
// 僟僀傾儘僌 僨乕僞
//{{AFX_DATA(Cdemod)
enum { IDD = IDD_DIALOG_demod };
CString m_address;
CString m_data;
CString m_mclk;
CString m_xtal;
CString m_baseaddress;
//}}AFX_DATA
// 僆乕僶乕儔僀僪
// ClassWizard 偼壖憐娭悢偺僆乕僶乕儔僀僪傪惗惉偟傑偡丅
//{{AFX_VIRTUAL(Cdemod)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 僒億乕僩
//}}AFX_VIRTUAL
// 僀儞僾儕儊儞僥乕僔儑儞
protected:
CWnd* m_pParent;
int m_nID;
// 惗惉偝傟偨儊僢僙乕僕 儅僢僾娭悢
//{{AFX_MSG(Cdemod)
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ 偼慜峴偺捈慜偵捛壛偺愰尵傪憓擖偟傑偡丅
#endif // !defined(AFX_DEMOD_H__4A527E9C_2D46_4EDA_A760_C026C8D9DCD6__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -