📄 gx1101.h
字号:
/*******************************************************************************************
Copyright(C) 2004 , HANGZHOU GUOXIN SCIENCE AND TECHNOLOGY CO.,LTD, all right reserved.
Product : DVB-S_GX1101 Demo Software
Date : 2005.09.14
Author : Guoxin
Purpose : Drive GX1101
*******************************************************************************************/
#ifndef _GX1101_H
#define _GX1101_H
/*******************************************************************************************/
/*provides the application's variable types*/
typedef unsigned short CHAR; /**< 1 character 2 bytes, range: 0 to 65536 */
typedef unsigned char u8; /**< 1 byte, range: 0 to 255 */
typedef unsigned short u16; /**< 2 bytes, range: 0 to 65536 */
typedef unsigned long u32; /**< 4 bytes, range: 0 to 4G */
typedef char s8; /**< 1 byte, range: -128 to 127 */
typedef short s16; /**< 2 bytes, range: -32768 to 32767 */
typedef long s32; /**< 4 bytes, range: -2G to 2G */
typedef char bool8; /**< 1 bytes, range: TRUE or FALSE */
#define TRUE 1
#define FALSE 0
#define PRINT_TEST 0
#define PRINT_0603 1
/*******************************************************************************************/
#define DVB_TUNER_MAX2118 1
/*******************************************************************************************/
#define USER_DEFINE 0
/*******************************************************************************************/
#define GX1101_CHIP_ID 0x01
/*******************************************************************************************/
#define GX1101_DEVICE_ID 0xd0
//#define GX1101_DEVICE_ID 0xd2
/*******************************************************************************************/
#define MX2118_DEVICE_ID 0xc2
/*******************************************************************************************/
// Regisiter Define for GX1101
#define GX1101_ID 0x00
#define GX1101_STBY 0x01
#define GX1101_PLL_KN 0x02
#define GX1101_PLL_M 0x03
#define GX1101_DISEQC_MODE 0x10
#define GX1101_DISEQC_INS 0x12
#define GX1101_DISEQC_INT 0x1c
#define GX1101_GLB_CTRL 0x30
#define GX1101_GPOP0 0x31
#define GX1101_CHIP_STATE 0x34
#define GX1101_BLIND_STATE 0x35
//#define GX1101_TS_ON 0x37
#define GX1101_INTENSITY 0x42
#define GX1101_ERR1_L 0x50
#define GX1101_ERR1_H 0x51
#define GX1101_ERR2_L 0x52
#define GX1101_ERR2_H 0x53
#define GX1101_M_SNR 0x54
#define GX1101_DEROT 0x55
#define GX1101_IQ_SWAP 0x58
#define GX1101_CRL_PARA 0x59
#define GX1101_BLIND_SEL 0x60
#define GX1101_SYM_RATE_L 0x61
#define GX1101_SYM_RATE_H 0x62
#define GX1101_TRL_PARA 0x69
#define GX1101_SCAN_LEN 0x6b
#define GX1101_AAF_SEL 0x6d
#define GX1101_OFFSETL 0x6e
#define GX1101_OFFSETM 0x6f
#define GX1101_OFFSETH 0x70
#define GX1101_VIT_RAT_CUR 0x84
#define GX1101_VIT_MODE 0x85
#define GX1101_TS_FMT_CTRL 0xb1
//Default Value
#define GX1101_GLB_CTRL_CB_OPEN 0x01
#define GX1101_GLB_CTRL_CB_CLOSE 0x02
#define GX1101_SET_BLIND_ENABLE 0x01
#define GX1101_SET_BLIND_DISABLE 0x00
#define GX1101_PO_EN_PARALLEL_DEFAULT 0xac
#define GX1101_PO_EN_SERIAL_DEFAULT 0x7c
#define TUNER_FREQ_LOW_LIM_KHZ_QUICK 915000L /* Low frequency limit in kHz ,quick mode*/
#define TUNER_FREQ_HIGH_LIM_KHZ_QUICK 2135000L/* High frequency limit in kHz,quick mode */
#define TUNER_FREQ_LOW_LIM_KHZ_DETAIL 915000L /* Low frequency limit in kHz,detail mode */
#define TUNER_FREQ_HIGH_LIM_KHZ_DETAIL 2135000L/* High frequency limit in kHz,detail mode */
#define KHZ_SCAN_STEP_QUICK 4000 /* 4M*/
#define KHZ_SCAN_STEP_DETAIL 2000 /* 2M*/
#define MHZ_XTAL_FREQ 4 /* 4M,Crystal frequency in MHz */
#define GX1101_LOCK_TIMES 300
#define GX1101_SYSCLK_KHZ 90500
#define GX1101_DISEQC_CMD1 0xE0
#define GX1101_DISEQC_CMD2 0x10
#define GX1101_DISEQC_CMD3 0x38
#define GX1101_DISEQC_CMD4_LNB1 0xF0
#define GX1101_DISEQC_CMD4_LNB2 0xF4
#define GX1101_DISEQC_CMD4_LNB3 0xF8
#define GX1101_DISEQC_CMD4_LNB4 0xFC
//#ifdef DVB_TUNER_MX2118
//#define MX2118_R_DIVIDE 1 /*R = 2 << (MX2118_R_DIVIDE+1)*/
//#define MX2118_FDAC 99
//#define MX2118_DRIVE_LEVEL 0
#define MX2118_M 2
//#define MX2118_CP 3
//#define MX2118_DIAGNOSTIC 0 /*D2-D0*/
//#define MX2118_AGC 0 /*G4-G0*/
//#define MX2118_FREF (MHZ_XTAL_FREQ*1000 / (2 << (MX2118_R_DIVIDE+1)))
//#endif
#define SUPER_SEARCH
#define NEEDFIND_NUM 4
typedef struct Check_TPInfo
{
u16 u16TPFrequency;
u16 u16SymbolRate;
}Check_TPInfo;
/*******************************************************************************************/
typedef enum _GX1101_LNB_CTRL
{
LIMIT_WEST = 0,
DRIVE_WEST = 1,
LIMIT_EAST = 2,
DRIVE_EAST = 3,
STOP = 4,
LIMIT_OFF = 5,
STORE_NN = 6,
GOTO_NN = 7
}
GX1101_LNB_CTRL;
/******************************************************/
typedef enum _GX1101_LNB_POLAR
{
POL_VERTICAL = 0,
POL_HORIZONTAL = 1
}
GX1101_LNB_POLAR;
typedef enum _GX1101_LNB_TONE
{
TONE_OFF = 0,
TONE_ON = 1
}
GX1101_LNB_TONE;
typedef enum _GX1101_STATUS
{
GX1101_NO_ERROR = 0, /* No error was reported */
GX1101_LOCK = 1, /* GX1101 lock achieved */
GX1101_NO_LOCK = 2, /* GX1101 unlock achieved */
GX1101_NO_FEC_LOCK = 3, /* FEC lock not achieved */
GX1101_CB_ERROR = 4 /* Error encountered in Serial 2-Wire Control Bus function */
}
GX1101_STATUS;
/*******************************************************/
struct _GX1101_LNB_PARAMS
{
u32 KHz_tuner_freq;
GX1101_LNB_POLAR enPolar;
u32 KBd_rate;
};
typedef struct _GX1101_LNB_PARAMS GX1101_LNB_PARAMS;
struct _GX1101_CHANNEL_PARAMS
{
u32 KHz_tuner_freq;
u32 KHz_center_freq;
u32 KBd_rate;
GX1101_LNB_POLAR lnb_polar;
};
typedef struct _GX1101_CHANNEL_PARAMS GX1101_CHANNEL_PARAMS;
/*******************************************************************************************/
/**
* Define the satellite or transponder auto scan parameter structure.
*/
typedef struct DVB_AutoScanParameter
{
u16 u16LocalFrequency ;
/**< This is local frequency. The unit is MHz.
The normal value for C band is 5150 and for Ku band is 10750.*/
bool8 b8QuickSearch; /**< Quick Search(TRUE) / Detailed Search(FALSE) */
}DVB_AutoScanParameter;
typedef struct DVB_TPInfo
{
u16 u16LocalFrequency;
/**< This is local frequency. The unit is MHz.
The normal value for C band is 5150 and for Ku band is 10750.*/
u16 u16TPFrequency;
/**< This is transponder frequency. The unit is MHz. */
u16 u16SymbolRate;
/**< This is transponder symbol rate. The unit is Kbaud. */
bool8 b8Polar_H; /**< Horizontal(TRUE) / Vertical(FALSE) */
}DVB_TPInfo;
typedef struct
{
unsigned int HasFinishedTp; //转发器序号
unsigned int Freq; //MHz,L波段
unsigned int Symbol; //KHz
unsigned char Scan_type;
unsigned int ProgramCount;
}
SCAN_TP_T;
typedef struct EPTPinf
{
unsigned int Fre; //MHz,L波段
unsigned int baud; //KHz
unsigned int benzhen; //MHz
unsigned char satno;
unsigned char lnb;
}EPTPinf_s;
/*******************************************************************************************/
//Initial Funtion
extern GX1101_STATUS gx1101_Initial(void);
//Serial 2-Wire Control Bus Function
extern GX1101_STATUS gx1101_Write_Registers(u8 address, u8 *buffer, u8 no_of_bytes, bool8 cb_tuner_access_on);
extern GX1101_STATUS gx1101_Read_Registers(u8 address, u8 *buffer, u8 no_of_bytes, bool8 cb_tuner_access_on);
// Program Tuner Function
extern GX1101_STATUS gx1101_Open_Tuner_CB(void);
extern GX1101_STATUS gx1101_Close_Tuner_CB(void);
extern GX1101_STATUS gx1101_Program_Tuner(GX1101_LNB_PARAMS lnb_params);
//Blind Scan Function
extern GX1101_STATUS gx1101_Get_Channel_Status(u32 KHz_tuner_freq , GX1101_CHANNEL_PARAMS *channel_params);
extern GX1101_STATUS gx1101_Set_Blind_Enable(u8 OnOff);
extern GX1101_STATUS gx1101_Frontend(GX1101_LNB_PARAMS lnb_params);
extern bool8 Frontend_ScanCarry(GX1101_LNB_PARAMS *pstLNB_params,
DVB_AutoScanParameter *pstAutoScanParameter
, u8 u8ProgressStart, u8 u8Step);
extern bool8 Frontend_Autoscan(DVB_AutoScanParameter *pstAutoScanParameter);
//Set Frontend Function
extern GX1101_STATUS gx1101_Set_Symbol_Rate_Reg(u32 KBd_rate);
extern GX1101_STATUS gx1101_Set_Polar(GX1101_LNB_POLAR enPolar);
//Configuration Function
extern GX1101_STATUS gx1101_Cool_Reset(void);
extern GX1101_STATUS gx1101_Hot_Reset(void);
extern GX1101_STATUS gx1101_Output_Type(bool8 type);
extern GX1101_STATUS gx1101_Control_LNB(GX1101_LNB_CTRL Lnb_Control,u8 Record_byte);
extern GX1101_STATUS gx1101_Set_DISEQC_MODE_Reg(GX1101_LNB_POLAR enPolar,GX1101_LNB_TONE enTone);
extern GX1101_STATUS gx1101_DiSEqC_ctrl(u8 lnb) ;
extern GX1101_STATUS gx1101_tone(u8 tone);
// Get Status Function
extern u8 gx1101_Get_Strength(void);
extern u8 gx1101_Get_Quality(void);
//Test Function
extern GX1101_STATUS gx1101_Show_Work_State(void);
extern GX1101_STATUS gx1101_Show_Blind_State(void);
/*******************************************************************************************/
//New Function
extern GX1101_STATUS gx1101_Open_FD(bool8 OnOff);
extern GX1101_STATUS gx1101_Test_FD(u32 KBd_rate,bool8 OnOff);
extern GX1101_STATUS gx1101_Test_FD_Few(u32 KBd_rate,bool8 OnOff);
extern GX1101_STATUS gx1101_Test_Program(GX1101_CHANNEL_PARAMS *channel_params);
extern bool8 gx1101_Try_Find_FEC_OK(GX1101_CHANNEL_PARAMS *channel_params);
extern GX1101_STATUS gx1101_Freq_Modify(u32 KBd_rate);
extern GX1101_STATUS gx1101_Try_Test_FD(GX1101_LNB_PARAMS lnb_params,bool8 OnOff);
extern bool8 gx1101_Set_Program(GX1101_LNB_PARAMS *lnb_params);
extern GX1101_STATUS gx1101_tuner_write_max2118(void);
void calcu_divider_byte(unsigned long FREQn);//MHz
extern void BlindSearch(char speed,u16 Local_Frequency);//Local_Frequency MHz
#endif /* _GX1101_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -