📄 mt352.h
字号:
/**************************************************************************
(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 + -