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

📄 uopmap.h

📁 是MTK公司新出来的DVD方案
💻 H
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 04/07/28 11:27a   $       ****************/
/***************  $Revision:: 9                $       ****************/
/***************                                       ****************/
/***************   Description : State Machine         ****************/
/***************                 Management ...        ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Sung-Ching Lin        ****************/
/**********************************************************************/

#ifndef _UOPMAP_H_
#define _UOPMAP_H_

#ifdef _UOPMAP_C_
  #define EXTERN
#else
  #define EXTERN extern
#endif

//===================================================================
// Share info update count
//===================================================================
#if defined(NO_SM_NOTIFY)
EXTERN xdata BYTE _bShmRp;
#endif

//#define ACCEL_SI_PROC

#ifdef ACCEL_SI_PROC
EXTERN xdata BYTE _bShmUpdCnt;

#define vClearShmUpdCnt()   (_bShmUpdCnt = 0)

#define SHM_PROC_CNT        4

#else

#define vClearShmUpdCnt()

#endif /* ACCEL_SI_PROC */

//===================================================================
// User working data in SDRAM
//===================================================================
enum
{
  /* 4 bytes for parental password */
  SH_PASS_0 = SI_USER_START,

  /* for osdshow.c */
  SH_OSD_WB_MODE = SH_PASS_0 + PASSWORD_LEN,
  SH_OSD_WB_SAVED,
  SH_OSD_WB_USR_SAVED,
  SH_OSD_LAYER1_WB,
  SH_OSD_LAYER1_STATUS,
  SH_OSD_LAYER2_WB,
  SH_OSD_LAYER2_STATUS,
  SH_OSD_TIMER_LAYER2_1,
  SH_OSD_TIMER_LAYER2_2,
  SH_OSD_TIMER_LAYER2_3,
  SH_OSD_TIMER_LAYER2_4,
  SH_OSD_TIMER_PLAY_STATUS,
  SH_OSD_TIMER_AUDIO_CTRL,
  SH_OSD_TIMER_ERR_MSG,

  /* for uopmap.c */
  SH_IR_TIMER_AUTO_PWR_DOWN,

  /* for OSD state */
  SH_OSD_REMAIN_MSG_TIMEOUT,
  SH_OSD_PLAY_TYPE_TIMEOUT,
  SH_OSD_PLAY_INFO_TIMEOUT,

  /* for Screen Saver */
  SH_SCR_COL_CNT,

#ifdef SETUP_MENU_PBC_CTRL
  /* for VCD user PBC on/off control */
  SH_VCD_USR_PBC_OFF,
#endif

  /* for DVD audio bit-stream change */
#ifdef AUDIO_STREAM_CHANGE_MUTE
  SH_CHG_AST_CNT,
  SH_CHG_AST_OPT1,
  SH_CHG_AST_OPT2,
  SH_CHG_AST_OPT3,
#endif

  /* for aud_ctrl.c */
  SH_SPK_CFG,
#ifdef MIC_AUTOMUTE
  SH_MIC_MIX_CH,
  SH_MIC_GAIN_1,
  SH_MIC_GAIN_2,
  SH_MIC_AUTOMUTE_OFF_LEVEL_HI,
  SH_MIC_AUTOMUTE_OFF_LEVEL_LO,
  SH_MIC_AUTOMUTE_ON_LEVEL_HI,
  SH_MIC_AUTOMUTE_ON_LEVEL_LO,
#endif

#ifdef SS_FADE_INOUT
  SH_SS_COUNT,
#endif

#ifdef ENABLE_USER_LANG_CODE
  SH_LCD_0,
  SH_LCD_1,
  SH_LCD_2,
  SH_LCD_3,
#endif

#ifdef MTK_MENU
  SH_DLG_VAL_0, //[runma] add by michael
  SH_DLG_VAL_1, 
  SH_DLG_VAL_2, 
  SH_DLG_VAL_3, 
  //SH_DLG_VAL4, //[runma] del line by michael.
#endif /* MTK_MENU */

#ifdef OSD_SLIDER_SUPPORT
  SH_CMP_CLR0,
  SH_CMP_CLR1,
  SH_CMP_CLR2,
  SH_CMP_CLR3,
  SH_CMP_CLR4,
  SH_CMP_CLR5,
#endif /* OSD_SLIDER_SUPPORT */

  SH_PAUSE_SHOW_WB,
  SH_PROGRAM_START,
  SH_BOOKMARK_PLAY,

  /* 8032 working data max */
  SH_USER_DATA_MAX
};

#define OSD_TIMER_MAX   (SH_OSD_TIMER_ERR_MSG - SH_OSD_TIMER_LAYER2_1 + 1)

//===================================================================
// For Bit Flags in xdata
//===================================================================
EXTERN xdata struct
{
  BYTE  fgInputResend:1;
  BYTE  fgInputEscape:1;
  BYTE  fgVocalOn:1;
  BYTE  fgAstChg:1;
  BYTE  fgDVDStopPlayWait:1;
  BYTE  Reserve:3;
}
_rUopmapFlag;

#define _fgDVDStopPlayWait  _rUopmapFlag.fgDVDStopPlayWait
//===================================================================
// Player Related Function
//===================================================================
void vPlayerReset(void) large;
void vUIStop(void) large;

//===================================================================
// SM functions Prototype
//===================================================================
void SmInit(void) large;

//===================================================================
// SETUP functions Prototype
//===================================================================
void vUserInit(BOOL fgInited) large;

//===================================================================
// Screen Saver
//===================================================================
BOOL fgScrSaverCheck(void) large;

// *********************************************************************
// 8032 play type define
// *********************************************************************
#define UOP_OK            0
#define UOP_FAIL          1
#define UOP_REMAP         2
#define UOP_UPDATE        3

#define PLAY_TYPE_NONE    0
#define PLAY_TYPE_DVD     1
#define PLAY_TYPE_VCD     2
#define PLAY_TYPE_ISO     3
#define PLAY_TYPE_PCD     4
#define PLAY_TYPE_CDDA    5
#define PLAY_TYPE_AIN     6
#define TOTAL_PLAY_TYPE   7

EXTERN xdata BYTE _bPlayType;

void vSetPlayType(BYTE bType) large;
void vClearPlayType(void) large;

/* These macros is for 8032 temp use only */
#define fgIsNonPlay()  (_bPlayType == PLAY_TYPE_NONE)
#define fgIsDvdPlay()  (_bPlayType == PLAY_TYPE_DVD)
#define fgIsVcdPlay()  (_bPlayType == PLAY_TYPE_VCD)
#define fgIsIsoPlay()  (_bPlayType == PLAY_TYPE_ISO)
#define fgIsPcdPlay()  (_bPlayType == PLAY_TYPE_PCD)
#define fgIsCddaPlay() (_bPlayType == PLAY_TYPE_CDDA)
#define fgIsAinPlay()  (_bPlayType == PLAY_TYPE_AIN)

#define IS_SVCD_TYPE(a) (a==SV_SVCD)
#define IS_VCD_TYPE(a)  ((a==SV_VCD3_0)||(a==SV_VCD2_0)||(a==SV_VCD1_1)||(a==SV_VCD6_0)||(a==SV_VCD6_1)||(a==SV_CVD))

// *********************************************************************
// For share info update
// *********************************************************************
EXTERN xdata DWRD _dwIrDoneParm;
EXTERN xdata BYTE _bSMUpdate;

// *********************************************************************
// 8032 share info update and RISC handshaking internal states
// *********************************************************************
EXTERN xdata BYTE _bLastSyncUop; /* only for selected UOP */
EXTERN xdata BYTE _bLastPbcState;

// *********************************************************************
// For IR shift key
// *********************************************************************
#ifdef IR_SUPPORT_SHIFT_KEY
#define fgIsKeyTblShift()      (_fgIRShiftKey == TRUE)

void vSetShiftKeyMode(BOOL fgEnable) large;
#endif

// *********************************************************************
// For UI timer
// *********************************************************************
#define IR_TIMER_BEEP_PERIOD   50 /* based on 20ms 8032 timer */

#define IR_TIMER_TIMEOUT       0xff
#define IR_TIMER_VOID          0x00

#define IR_TIMEOUT_SEARCH      5
#define IR_TIMEOUT_AUDIO       5
#define IR_TIMEOUT_SUBTITLE    5
#define IR_TIMEOUT_ANGLE       5
#define IR_TIMEOUT_DISPLAY     8

EXTERN xdata BYTE _bIrTimerBeepCnt;
EXTERN xdata BYTE _bIrTimer;

void vIrSetTimeOut(BYTE bTime) large;

// *********************************************************************
// For Player timer
// *********************************************************************
#define PLAYER_TIMER_BEEP_PERIOD     24  /* about 0.5 sec. for 20ms timer */

EXTERN xdata BYTE _bPlayerTimerBeepCnt;

// *********************************************************************
// Screen Saver
// *********************************************************************
EXTERN xdata BYTE _bScrSaverBeepCnt;
EXTERN xdata BYTE _bScrSaverTimer;
EXTERN       BOOL _fgScrSaverOn;

#define SCR_SAVER_ON_BEEP_COUNT    2   /* 20ms base, 25Hz */

#define SCR_SAVER_OFF_BEEP_COUNT   250 /* 5 seconds */

#define fgIsScrSaverOn()           (_fgScrSaverOn == TRUE)
#define vSetScrSaverOn()           (_fgScrSaverOn = TRUE)
#define vSetScrSaverOff()          (_fgScrSaverOn = FALSE)

void vScrSaverSetTimeOut(BYTE bTime) large;

// *********************************************************************
// Player input mode
// *********************************************************************
typedef struct
{
  void (code *vInit)(BYTE fgInit) large;
  BOOL (code *fgState)(void) large;
  void (code *vExit)(void) large;
  BYTE bKeyShiftMode;
}
strucInputState;

#define INPUT_STATE_KEY_TBL_NORMAL     0
#define INPUT_STATE_KEY_TBL_SHIFT      1
#define INPUT_STATE_KEY_TBL_KEEP       2

#define INPUT_STATE_NONE               0xff

#define INPUT_STATE_SELECT_NUM         0
#define INPUT_STATE_PROGRAM            1
#define INPUT_STATE_PTT_SEARCH         2
#define INPUT_STATE_TITLE_SEARCH       3
#define INPUT_STATE_DVD_TIME_SEARCH    4
#define INPUT_STATE_VCD_TIME_SEARCH    5
#define INPUT_STATE_VCD_TRACK_SEARCH   6
#define INPUT_STATE_ISO_TIME_SEARCH    7
#define INPUT_STATE_AUDIO_CHANGE       8
#define INPUT_STATE_SUBTITLE_CHANGE    9
#define INPUT_STATE_ANGLE_CHANGE      10
#define INPUT_STATE_DVD_DISPLAY       11
#define INPUT_STATE_VCD_DISPLAY       12
#define INPUT_STATE_PASSWORD          13
#define INPUT_STATE_BOOKMARK          14
#define INPUT_STATE_UPG               15
#define INPUT_STATE_DIGEST            16
#define INPUT_STATE_FILE_SELECT       17
#define INPUT_STATE_FSMENU_FILTER     18
#define INPUT_STATE_PCD_ZOOM          19
#define INPUT_STATE_DA_HIDDEN_PWD     20
#define INPUT_STATE_DVD_AUDIO_SCAN    21
#define INPUT_STATE_DISC_LOCK_PWD     22
#define INPUT_STATE_LOGO_CAPTURE      23
#define INPUT_STATE_VREMOTE           24
#define INPUT_STATE_ZOOM_IN           25

#define INPUT_STATE_STACK_START       26

#define INPUT_STATE_SETUP             26
#define INPUT_STATE_GOTO              27

#define INPUT_STATE_MAX               28

#define fgIsInputStateValid(bMode)    (_bInputState == bMode)
#define fgIsNoInputState()            (_bInputState == INPUT_STATE_NONE)
#define fgIsSearchInputState()        ((_bInputState >= INPUT_STATE_PTT_SEARCH) && (_bInputState <= INPUT_STATE_ISO_TIME_SEARCH))

EXTERN xdata BYTE _bPlayPostKey;
EXTERN xdata BYTE _bInputState;
#define           _fgInputResend      (_rUopmapFlag.fgInputResend)
#define           _fgInputEscape      (_rUopmapFlag.fgInputEscape)

//===================================================================
// Set internal command
//===================================================================
BOOL fgSetPlayPostKey(BYTE bKey) large;

// *********************************************************************
// Key combine state export function
// *********************************************************************
void vChangeInputState(BYTE bState, BOOL fgSendKey) large;
void vSetExitInputState(void) large;

// *********************************************************************
// UOP Dispatch Function, No branch in run-time
// *********************************************************************
#if defined(PC_EMULATION)
extern void vSendUopCmd(BYTE bCmd, BYTE bParm1, BYTE bParm2, BYTE bParm3) large;
#else
/*
#define vSendUopCmd(bCmd, bParm1, bParm2, bParm3) \
        SendIRCmd(bCmd, bParm1, bParm2, bParm3)
*/
void vSendUopCmd(BYTE bCmd, BYTE bParm1, BYTE bParm2, BYTE bParm3) large;
#endif

// *********************************************************************
// Description : For peripheral command to main loop
// *********************************************************************
void vSendPeriCmd(BYTE bCmd, BYTE bParm1, BYTE bParm2) large;

// *********************************************************************
// For UI reset
// *********************************************************************
EXTERN void vResetInputState(void) large;
EXTERN void vResetOsdState(void) large;

// *********************************************************************
// Status Display Recall
// *********************************************************************
void vStatusDispRecall(void) large;

// *********************************************************************
// Main State Machine
// *********************************************************************

/* This must be called after call the main state function */
/* assume the vChangeInputState() is only called from main state */
/* execute non-stacked input state */
#define vResendInputState()                                       \
  if (_fgInputResend == TRUE)                                     \
  {                                                               \
    vNonStatckInputState();                                       \
    _fgInputResend = FALSE;                                       \
  }
void vNonStatckInputState(void) large;
// *********************************************************************
// Button No Input State Machine
// *********************************************************************
void vBtnNoInitState(BYTE fgInit) large;
BOOL fgBtnNoInputState(void) large;

// *********************************************************************
// Setup State Machine
// *********************************************************************
BOOL fgSetupState(void) large;
void vSetupInitState(void) large;

⌨️ 快捷键说明

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