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

📄 mt352.h

📁 PHILIPS1316 tuner 驱动软件用于PHILIPS TDM1316 DVB-T tuner。经过实际测试。
💻 H
📖 第 1 页 / 共 3 页
字号:
/**************************************************************************

        (C)Copyright Cheertek Inc. 2002-2004,
           D700, all right reserved.

        Product : STB Firmware

****************************************************************************/
#ifndef _MT352_H
#define _MT352_H

#define clrscr()	system("cls")
extern void gotoxy(int x, int y);

//#define SEM_TECC2349PG
//#define COMTECK_DVBT_3528

#define _RPT0(rptno, msg)                           printf(msg)
#define _RPT1(rptno, msg, arg1)                     printf(msg,arg1)
#define _RPT2(rptno, msg, arg1, arg2)               printf(msg,arg1,arg2)
#define _RPT3(rptno, msg, arg1, arg2, arg3)         printf(msg,arg1,arg2,arg3)
#define _RPT4(rptno, msg, arg1, arg2, arg3, arg4)   printf(msg,arg1,arg2,arg3,arg4)

/******************************************************************************\
*                         TPS CRACKER MACROS                                   *
* These macros extract the TPS info returned by STnimAuxChannelInfo			   *
\******************************************************************************/
#define TPS_CONSTELLATION(tps) (((tps)>>13) & 0x03)
#define TPS_HIERARCHY(tps)     (((tps)>>10) & 0x07)
#define TPS_HPCODERATE(tps)    (((tps)>>7) & 0x07)
#define TPS_LPCODERATE(tps)    (((tps)>>4) & 0x07)
#define TPS_GUARDINTERVAL(tps) (((tps)>>2) & 0x03)
#define TPS_FFTMODE8K(tps)     ((tps) &  0x01)
#define TPS_LPACTIVE(tps)      (bool8)((tps) & 0x8000)

/* validity flags in STnimAuxChannelInfo.ucValid*/
#define UCVALID_TPSVALID	0x01
#define UCVALID_CELLIDVALID     0x02

/* Format code rate returned by above macros. e.g. 1/2 = 1,2/3 = 2*/
#define FORMAT_CODERATE(x)  (((x)>=5)?0:( ((x)==4)?7: (((x)==3)?5:(x)+1) ) )

/****************************************************************************\
*          Imports and definitions for non WIN32 platforms                   *
\****************************************************************************/
//#include <stdio.h> /* for debugging */
typedef unsigned BitsT;/* usually 16 or 32 bits */
/*
typedef unsigned short u16;
typedef unsigned long u32;
typedef short s16;
typedef long s32;
typedef unsigned char u8;
typedef signed char s8;
*/

/***********************************************************************************************************\
*                      RESOURCE CONTROL MACROS                                                              *
* Required for multitasking operating systems to prevent contentions                                        *
* NB driver does not require nestable contention lock, Each routine calls ENTER_CONTENTION_LOCK             *
* once on entry and EXIT_CONTENTION_LOCK once on exit                                                       *
\***********************************************************************************************************/
#if !defined(ENTER_CONTENTION_LOCK)
#define ENTER_CONTENTION_LOCK
#endif

#if !defined(EXIT_CONTENTION_LOCK)
#define EXIT_CONTENTION_LOCK
#endif

typedef struct STestMenuType
{
	u16 minval;  /* minimum value to accept */
	u16 maxval;  /* maximum value to accept */
	char* title;     /* title for menu */
	char* text;      /* menu text */
}STestMenuType, *pSTestMenuType;

#define ANYMENU_EXIT		    0
#define MAINMENU_SETLPT		    1
#define MAINMENU_POWER          2
#define MAINMENU_CHANTAB	    3
#define MAINMENU_SCAN		    4
#define MAINMENU_ACQUIRE	    5
#define MAINMENU_HPLPSELECT	    6
#define MAINMENU_TUNERSELECT    7
#define MAINMENU_BUSTEST	    8
#define MAINMENU_DISPLAY        9
#define MAINMENU_EXITPROG	    10
#define MAINMENU_TESTCODE       11



#define POWERMENU_OFF		1
#define POWERMENU_STANDBY   2
#define POWERMENU_ON		3

#define ACQMENU_FROMLIST  1
#define ACQMENU_MANUAL    2
#define ACQMENU_FREQUENCY 3
#define ACQMENU_SYNTH     4

/*******************************Menus******************************************/
/*main menu*/

#define LPTMENU_LPT1			1
#define LPTMENU_LPT2			2
#define LPTMENU_LPT3			3

/*********************************************************************
State machine internal states
do not change sequence, since some states are used as general indicators
for example TNIM_DEMODFSM_SCANINIT is used by TnimAbortScan() to test if scan
is in progress */
typedef enum ETnimStateInternal
{
/* power control */
    TNIM_STATEINTERNAL_OFF =1000,    /* chip is unpowered, or not located */
    TNIM_STATEINTERNAL_WAITRESETS,   /* waiting for reset line release, prior to standby mode*/
    TNIM_STATEINTERNAL_WAITRESETR,   /* waiting for reset line release, prior to run mode */
    TNIM_STATEINTERNAL_STANDBY,      /* chip is powered, reset but in standby mode */
    TNIM_STATEINTERNAL_IDLE,         /* chip is powered, active and intitialised, but not locked*/
    TNIM_STATEINTERNAL_LOCK,         /* chip is in locked state*/

/* Channel Acquisition */
    TNIM_STATEINTERNAL_ACQSTART,     /* Initialise Acqusition process*/
    TNIM_STATEINTERNAL_WAITLOCK,     /* waiting for lock*/
    TNIM_STATEINTERNAL_UNLOCK,       /* chip has lost lock, waiting for auto relock */
/* Scanning */
    TNIM_STATEINTERNAL_SCANSTART,    /* intialising scan */
    TNIM_STATEINTERNAL_SCANNEXT,     /* start a new scan */
    TNIM_STATEINTERNAL_SCANWAIT,     /* waiting for MT352 to lock a channel*/
    TNIM_STATEINTERNAL_SCANTPS,	     /* wait for valid TPS info */
    TNIM_STATEINTERNAL_SCANFOUND,    /* calculate found channel details */
    TNIM_STATEINTERNAL_SCANSTOP,     /* wait for caller to read channel information */
    TNIM_STATEINTERNAL_SCANEXIT      /* Generate scan complete when leaving */
}ETnimStateInternal;

/*Commands used to program state machine*/
typedef enum ETnimCommand
{
	TNIM_COMMAND_NULL =0,
	TNIM_COMMAND_OFF,
	TNIM_COMMAND_STANDBY,
	TNIM_COMMAND_RUN,
	TNIM_COMMAND_ACQUIRE,
	TNIM_COMMAND_SCAN,
	TNIM_COMMAND_PROCEED,
	TNIM_COMMAND_SCANABORT
}ETnimCommand;

/* power states */
typedef enum ETnimPower
{
    TNIM_OFF,             /* Request hardware shutdown (if hardware suppports it)*/
    TNIM_STANDBY,         /* software standby*/
    TNIM_RUN              /* fully operational */
}ETnimPower;

/* values returned by TnimMain*/
typedef enum ETnimState
{
    /*State machine condition, returned by DemodMainSnim() and GetDemodStateSnim()*/
    TNIM_STATE_OFF = 0,     /*Sleep mode (only if hardware supports this */
    TNIM_STATE_STANDBY,     //1 /* Standby mode */
    TNIM_STATE_IDLE,        /* Idle condition, ready to program or scan*/
    TNIM_STATE_BUSY,        /* demod is busy aquiring a channel*/
    TNIM_STATE_SCANNING,    //4 /* demod is busy scanning */
    TNIM_STATE_SCANSTOP,    /* scan stopped, wating for channel data to be read*/
    TNIM_STATE_LOCKED,      //6 /* a channel is been locked */

    /* non repeating event signals returned by DemodMainSnim() ONLY*/
    TNIM_EVENT_LOCKED,	    /* issued when lock or re-lock occurs*/
    TNIM_EVENT_LOSTLOCK,    //8 /* issued when lock is lost*/
    TNIM_EVENT_POSTVITBER,  /* a new Post-Viterbi BER is available*/
    TNIM_EVENT_PREVITBER,   /* a new pre-Viterbi (QPSK) ber is available*/
    TNIM_EVENT_RSUBC,	    /* 1 second update on RS UBCs available*/
    TNIM_EVENT_FOUND,       //12 /* channel found during scan process */
    TNIM_EVENT_SCANNEXT,    /* indicates scan has moved on to new channel*/
    TNIM_EVENT_SCANCOMPLETE,//14 /* scan has finished */
    TNIM_EVENT_ERROR	    /* an error occured during operation */
}ETnimState;

typedef enum _BusStatus2wb
{
    SUCCESS_2WB      = 0,   /* No error was reported                  */
    ERROR_START_2WB,        /* Error encountered in Start             */
    ERROR_STOP_2WB,         /* Error encountered in Stop              */
    ERROR_WR_BIT_2WB,       /* Error encountered in WriteBit          */
    ERROR_RD_BIT_2WB,       /* Error encountered in ReadBit           */
    ERROR_WR_ACK_2WB,       /* Error encountered in WriteAcknowledge  */
    ERROR_RD_ACK_2WB,       /* Error encountered in ReadAcknowledge   */
    ERROR_RD_ACKB_2WB,      /* Error encountered in ReadAcknowledgebar*/
    ERROR_IO_GRANT_2WB,     /* I/O not availble (Port busy or not open)*/
    ERROR_PARAM_2WB,        /* Invalid value for n (in Enable()) */
    ERROR_SL_START_2WB,     /* Error encountered in Slave Start             */
    ERROR_SL_STOP_2WB,      /* Error encountered in Slave Stop              */
    ERROR_SL_WR_BIT_2WB,    /* Error encountered in Slave WriteBit          */
    ERROR_SL_RD_BIT_2WB,    /* Error encountered in Slave ReadBit           */
    ERROR_SL_WR_ACK_2WB,    /* Error encountered in Slave WriteAcknowledge  */
    ERROR_SL_RD_ACK_2WB,    /* Error encountered in Slave ReadAcknowledge   */
    ERROR_SL_RD_ACKB_2WB,   /* Error encountered in Slave ReadAcknowledgebar*/
    ERROR_INVALID_ERROR_2WB /* Error code not valid */
}
BusStatus2wb;

/****************************************************************************\
*          Useful definitions and macros for all platforms                   *
\****************************************************************************/
#define Uint32T_MAX 0xFFFFFFFF
#define Uint16T_MAX 0xFFFF
#define Uint8T_MAX  0xFF
#define Sint32T_MAX 0x7FFFFFFF
#define Sint16T_MAX 0x7FFF
#define Sint8T_MAX  0x7F
#define Sint32T_MIN 0x80000000
#define Sint16T_MIN 0x8000
#define Sint8T_MIN  0x80

#ifndef LOW
#define LOW FALSE
#endif

#ifndef HIGH
#define HIGH TRUE
#endif

#ifndef ABSVAL
#define ABSVAL(c) ((c)>0?(c):-(c))
#endif

/* create a boolean */
#ifndef __boolean__
#define __boolean__
//typedef enum {FALSE=0,TRUE}bool8;
#endif /* __boolean__*/

/* with any ONE of these*/
#define	SCAN_OPTION_2K			 0x10 /* 2k only */
#define SCAN_OPTION_8K			 0x20 /* 8k only */

#define SCAN_OPTION_WEAK      0x40 /*look for weak signals*/

/* the reset chip on the demo board holds reset down for up to this long*/
#define TNIM_RESET_WAIT     600    /* milliseconds*/

/* Channel tables*/
#define CHANTAB_EUROPE		0
#define CHANTAB_CHINA		1
#define CHANTAB_USA			2
#define CHANTAB_CANADA		3
#define CHANTAB_JAPAN		4
#define CHANTAB_AUSTRALIA	5

/*
Bus timing
MAX_PIN_WAIT max number of GetSxx2wb() reads to confirm SetSxxxx2wb()has worked
MAX_SCL_STRETCH max number of GetSCL2wb() reads to wait for slave to release SCL
SHORT_WAIT short delay between clock/data edges to slow bus down if required

⌨️ 快捷键说明

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