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

📄 stprisc.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 07/06/04 2:36p    $       ****************/
/***************  $Revision:: 4                $       ****************/
/***************                                       ****************/
/***************   Description : Setup Risc            ****************/
/***************                 relative routine      ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Peter Huang           ****************/
/**********************************************************************/

#include "general.h"

#include SETUP_MENU_FILE
//#include "stpmenu.h"

#include "stposdfn.h"

#pragma NOAREGS

#ifdef PANEL_FACTORY_SETTING
extern BYTE xdata     _fgFlashUpdate; 
extern BYTE xdata     _fgVcomUpdate; 
#endif

struct sLangChar
{
  WORD  wLangItem;
  BYTE  c0;
  BYTE  c1;  
};

static code struct sLangChar rLangChar[] = 
     { { EV_FRENCH, 'f', 'r' },   { EV_SPANISH, 'e', 's' },   { EV_CHINESE, 'z', 'h' },
       { EV_JAPANESE, 'j', 'a'},  { EV_GERMAN, 'd', 'e' },     { EV_SWEDISH, 's', 'v' },
       { EV_DANISH, 'd', 'a' },   { EV_NORWEGIAN, 'n', 'o' },  { EV_FINNISH, 'n', 'i' },
       { EV_DUTCH, 'n', 'l'},     { EV_ICELANDIC , 'i', 's' }, { EV_PORTUGUES, 'p', 't' },
       { EV_HEBREW, 'i', 'w' },   { EV_GREEK, 'e', 'l' },      { EV_CROATIAN, 'h', 'r' },  
       { EV_TURKISH, 't', 'r' },  { EV_ITALIAN, 'i', 't' },    { EV_POLISH, 'p', 'l' },   
       { EV_HUNGARIAN, 'h','u' }, { EV_CZECH, 'c','s' },       { EV_INDONESIAN, 'i', 'n'},
       { EV_THAI, 't', 'h' },     { EV_KOREAN, 'k', 'o' },     { EV_MALAY, 'm', 's' },
       { EV_IRISH, 'g','a' },     { EV_ROMANIAN, 'r','o' },    { EV_RUSSIAN, 'r', 'u' },
       { EV_OTHER, 0, 0 },        { EV_ENGLISH, 'e', 'n' } };

#ifdef SUPPORT_SACD
// for SACD layer selection
extern BIT         _fgSACDSelCD;
#endif
 
// *********************************************************************
// Function : BYTE bNormalVdo(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BYTE bNormalVdo(WORD wEEPos, BYTE bVal) large
{
  WORD wSIPos;
  //BYTE bVal;

//  wEEPos = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wEEPos;
//  bVal = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->prData[_bDataSel]->bVal;

  switch (wEEPos)
  {
    case TV_SYSTEM_POSITION:
      vVideoTvSystem(bVal);
      break;

    case GAMMA_POS:
      vVideoGammaLevel(bVal);
      break;

    case SHARP_POS:
      vVideoSharpness(bVal);
      break;
#ifdef MT1389_PTCON
    case PANEL_SHARP_POS:
      vVideoPQSharpness(bVal);
      break;

    case PANEL_GAMMA_POS:
      vVideoPQGammaLevel(bVal);
      break;
#endif
	  

    case EDGE_EN_POS:
      vVideoEdgeEnhance(bVal);
      break;

    case CC_SW_POSITION:
      /* note use SV_ON/OFF */
      vSystemCloseCaption(bVal);
      break;

    case ASPECT_POSITION:
        vSystemTvMode(bVal);
      break;
      
   case BLACK_LVL_POS: // composite.
//    case BLACK_LVL_COMPN_POS: //component. will be added. currently, compoent and composite will be switch together.
//r case BLACKER_THAN_BLACKER: //will be added in future.  
      vVideoPedestal(SV_SETUP,(bVal!=SV_BLACK_NONE));
      vVideoPedestal(SV_CPNT_SETUP,(bVal!=SV_BLACK_NONE));  

#ifdef PSCAN_EN
    case TV_PSCAN_VIDEO_POS:
      #if 0 //max remove
      if (bSharedInfo(SI_DRAM_BW) == SV_DRAM_16BIT)
      {
  #ifndef HIGH_SPEED_DRAM
        if (bVal == SV_PSCAN_HR)
        {
          bVal = SV_PSCAN_NF;
        }
  #endif
      }
      #endif
      vSetSharedInfo(SI_PSCAN_VIDEO, bVal);
      vNotifySharedInfo(SI_PSCAN_VIDEO, 0, 0);      
      break;
      
    case TV_PSCAN_EN_POS:
      if (bVal == SV_ON)
      {
        fgEepromWriteByte(TV_PSCAN_EN_POS, SV_ON);
      	vSetSharedInfo(SI_PSCAN_EN, SV_ON);
        vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
      }
      else
      {
      	fgEepromWriteByte(TV_PSCAN_EN_POS, SV_OFF);
      	vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
        vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
#if 0 // Max'0416'04, also do wide squeeze in interlace mode.
        if( bEepromReadByte(ASPECT_POSITION) == SV_WIDESQZ ) 
        {     	      	
      	fgEepromWriteByte(ASPECT_POSITION, SV_WIDE);
        vSetSharedInfo(SI_ASPECT_RATIO, SV_WIDE);
        vNotifySharedInfo(SI_ASPECT_RATIO, 0, 0);      	
        
        fgEepromWriteByte(TV_PSCAN_SQZ_POS, SV_OFF);
        vSetSharedInfo(SI_PSCAN_SQUEEZE, SV_OFF);
        vNotifySharedInfo(SI_PSCAN_SQUEEZE, 0, 0);
        }
#endif
      }
      break;
#endif
    case WARMTH_FILTER_POS:
      vSetSharedInfo(SI_WARMTH_LEVEL, bEepromReadByte(WARMTH_FILTER_POS));
      vNotifySharedInfo(SI_WARMTH_LEVEL, 0, 0);
      break;

    default:
      wSIPos = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wSIPos;
      if (wSIPos)
      {
        vSetSharedInfo(wSIPos, bVal);
        vNotifySharedInfo(wSIPos, 0, 0);
      }

      break;
  } /* switch (wEEPos) */

  /* for user switch PBC on/off flag */
  if (wEEPos == VCD_PBC_SW_POSITION)
  {
    vSetSharedInfo(SH_VCD_USR_PBC_OFF, bVal);
  }

#ifdef SUPPORT_SACD
  if (wEEPos == SACD_PRIORITY_POSITION)
  {
    /* depend on setup menu SACD Priority option */
    _fgSACDSelCD = (bSharedInfo(SI_SACD_PRIO) == SV_SACD_CD);
  }
#endif
  
#ifdef PSCAN_EN
  if ((wEEPos == TV_PSCAN_EN_POS) ||
      (wEEPos == TV_PSCAN_MODE_POS))
  {
    return (ENTRY_FUN_REDRAW);
  }
#endif /* PSCAN_EN */
  return (ENTRY_FUN_OK);
}

// *********************************************************************
// Function : void vOsdSetupMsgPasteArg(WORD wMsgIndex, BYTE *pbStr) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
#if 0
void vOsdSetupMsgPasteArg(WORD wMsgIndex, BYTE *pbStr) large
{
  BYTE bTmp;
  BYTE i;

  vWaitBusy();
  vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_PASTE_MSG);
  vWriteNextSharedItem(WB_SETUP_MSG);
  vWriteNextSharedItem(MSG_X);
  vWriteNextSharedItem(0);
  vWriteNextSharedItem(MSG_Y);
  vWriteNextSharedItem(0);
  vWriteNextSharedItem(bLoByte(wMsgIndex));
  vWriteNextSharedItem(bHiByte(wMsgIndex));
  if (pbStr[0])
  {
    for(i=0; i<pbStr[0]; i++)
    {
      vWriteNextSharedItem(pbStr[i+1]);
    }
  }
  vSendOsdCmd();
}
#endif

BYTE bSetVdoQlty(WORD wEEPos, BYTE bVal) large
{
#ifdef PANEL_FACTORY_SETTING          
   BYTE  bVcomDCValue,bVcomACValue;
#endif	
  switch(wEEPos)
  {
    case BRIGHT_POS:
      cVideoGammaBright((char)_bDataCur);
      break;

    case HUE_POS:
#ifdef MTK_TVE
      vVideoHueDegree(_bDataCur);
#else
      vVideoHueDegree((char)(_bDataCur - 9) * 5);
#endif
      break;

    case CONTRAST_POS:
      cVideoGammaContrast(_bDataCur);
      break;

    case TINT_POS:
      vVideoHueSaturation(_bDataCur);
      break;
  #ifdef MT1389_PTCON
    case PANEL_BRIGHT_POS:
      cVideoPQGammaBright((char)_bDataCur);
      break;

    case PANEL_CONTRAST_POS:
      cVideoPQGammaContrast(_bDataCur);
      break;

      case PANEL_HUE_POS:
    #ifdef MTK_TVE
      vVideoPQHueDegree(_bDataCur);
    #else
      vVideoPQHueDegree((char)(_bDataCur - 9) * 5);
    #endif
      break;

    case PANEL_TINT_POS:
      vVideoPQHueSaturation(_bDataCur);
      break;

#ifdef PANEL_FACTORY_SETTING
 case PANEL_VCOM_DCLEVEL_POS:
 case PANEL_VCOM_ACLEVEL_POS:
	if (_fgReset == FALSE)		//ignorn  reset setting 
          {
		// bVcomDCValue =(VCOM_LOW+VCOM_HIGH)/2
		// bVcomACValue =VCOM_HIGH -VCOM_LOW
			  
              bVcomDCValue =  bEepromReadByte(PANEL_VCOM_DCLEVEL_POS); 
		bVcomDCValue=0x90+bVcomDCValue;					//#define VCOMDC_Default_Value 0x90  144
		bVcomACValue  =	bEepromReadByte(PANEL_VCOM_ACLEVEL_POS); 
		bVcomACValue =0x7c+bVcomACValue*2;					//#define VCOMDC_Default_Value 0x7c 124 

              vSetSharedInfo( SI_PANEL_VCOM_LOW,bVcomDCValue-bVcomACValue/2);
		vSetSharedInfo( SI_PANEL_VCOM_HIGH,bVcomDCValue+bVcomACValue/2);
		
		vSetSharedInfo(SI_PANEL_VCOM_UPD, 0);
		vNotifySharedInfo(SI_PANEL_VCOM_UPD, 0, 0);
		
		 _fgVcomUpdate = TRUE;						//update  flash data when exit setup menu 
           }
      break;  
#endif

#endif
  }
  return (ENTRY_FUN_OK);
}

#if 0
// *********************************************************************
// Function : void vSetVdo(BOOL fgReset) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
void vSetVdo(BOOL fgReset) large
{
//  WORD wMsgIdx;
//  BOOL fgPlus = TRUE;
  char cLevel;
//  BYTE pbStr[16], i ;
//  BOOL fgVdo = TRUE;
  WORD wEEPos; //, cPos;

  wEEPos = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wEEPos;
  cLevel = (char)_bDataCur;
//  cPos = bOptMaxEntryNum(_rMenu, _bMenu, _bEntry);

  switch(wEEPos)
  {
    case BRIGHT_POS:
//      vVideoGammaBright((char)_bDataCur * 4);
      cLevel = cVideoGammaBright((char)_bDataCur);
//      cPos = VID_BRIGHTNESS_MAX;
//      wMsgIdx = OSD_MSG_BRIGHTNESS_V;
      break;

    case HUE_POS:
#ifdef MTK_TVE
      vVideoHueDegree(_bDataCur);
#else
      vVideoHueDegree((char)(_bDataCur - 9) * 5);
#endif
//      wMsgIdx = OSD_MSG_HUE_V;
      break;

    case CONTRAST_POS:
      //vVideoGammaContrast(_bDataCur);
      cLevel = cVideoGammaContrast(_bDataCur);
//      cPos = VID_CONTRAST_MAX;
//      wMsgIdx = OSD_MSG_CONTRAST_V;
      break;

    case TINT_POS:
      vVideoHueSaturation(_bDataCur);
//      wMsgIdx = OSD_MSG_TINT_V;
      break;

    default:
//      fgVdo = FALSE;
      break;
  }

  if (!_fgNotify)
  {
    return;
  }

#ifdef MTK_TVE
  if (fgVdo && (!fgReset) && ((wMsgIdx==OSD_MSG_BRIGHTNESS_V) || (wMsgIdx==OSD_MSG_CONTRAST_V) ||
                               (wMsgIdx==OSD_MSG_HUE_V) || (wMsgIdx==OSD_MSG_TINT_V)))
#else
  if (fgVdo && (!fgReset) && ((wMsgIdx==OSD_MSG_BRIGHTNESS_V) || (wMsgIdx==OSD_MSG_CONTRAST_V)))
#endif
  {
    /* if fgReset == TRUE, call from reset, no OSD show */
    cPos = (cLevel+cPos)*10/cPos;

    pbStr[0] = 15 ;
    pbStr[1] = pbStr[11] = pbStr[15] = ' ' ;

    if (cLevel == 0)
    {
      pbStr[12] = ' ';
      pbStr[13] = ' ';
      pbStr[14] = '0';
    }
    else if ((char)cLevel < 0)
    {
      fgPlus = FALSE;
      cLevel = - cLevel;
    }

    if ((cLevel < 10) && (cLevel!= 0))
    {
      pbStr[12] = ' ';
      pbStr[13] = fgPlus ? '+' : '-' ;
      pbStr[14] = cLevel + '0';
    }
    else if (cLevel != 0)
    {
      cLevel = bHEXToBCD(cLevel);
      pbStr[12] = fgPlus ? '+' : '-' ;
      pbStr[13] = BCD_HI(cLevel) + '0';
      pbStr[14] = BCD_LO(cLevel) + '0';
    }

    for(i=0; i<cPos/2; i++)
      pbStr[i+1] = ICON_VOL_1;//6;

    if (cPos%2)
    {
      pbStr[i+1] = ICON_VOL_2;//7;
      i ++;
    }
    for(; i<10; i++)
    {
      pbStr[i+1] = ICON_VOL_0;//5;
    }

    //vDisableWB(WB_SETUP_HEAD);

    vDisableWB(WB_SETUP_ITEM);
    if (!_fgHeadInfChg)
    {
      vClearHeadRng();
      vSetupEntryShowXY(0xFFFF, 0, OSD_MSG_PRESS_LEFT_TO_MENU, WB_SETUP_HEAD);
    }
    _fgHeadInfChg = TRUE;
    _wStartX = SETUP_MSG_START_X;
    _wStartY = SETUP_MSG_START_Y - (SETUP_MSG_END_Y - SETUP_MSG_START_Y + 1);
    vWBChgPos(WB_SETUP_HEAD);
    vOsdSetupMsgPasteArg(wMsgIdx, pbStr);
    vHideHL(HL_1);
    vChgColDis();

    //vSetupEntryShowXY(MSG_X, MSG_Y, _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMsgMsg, WB_SETUP_MSG);
    //vSetTransEn(WB_SETUP_ITEM, 0);
  }
}
#endif

#ifdef ENABLE_USER_LANG_CODE
BYTE bSwitchLang(WORD wEEPos, BYTE bValue) large
{
  if (!_fgNotify)
  {
    return (ENTRY_FUN_OK);
  }
  
  _bOsdState = STPSTT_DIALOG;
  _bMenu = LANG_PAGE;
  _bEntry = 1;
  
  switch(wEEPos)
  {
    case AUDIO_LCD_POSITION:
      _bDlgId = DLG_AUDIO_LANG_CODE;
      break;
    case SP_LCD_POSITION:
      _bDlgId = DLG_SP_LANG_CODE;
      break;
    case MENU_LCD_POSITION:
      _bDlgId = DLG_MENU_LANG_CODE;
      break;
  }
  
  //vRedrawPage();
  return (ENTRY_FUN_REDRAW);

#if 0
  //switch(_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wEEPos)
  switch(wEEPos)
  {
    case AUDIO_LCD_POSITION:
      _bDataPrev = DLG_AUDIO_LANG_CODE;
      break;
    case SP_LCD_POSITION:
      _bOsdState = DLG_SP_LANG_CODE;
      break;
    case MENU_LCD_POSITION:
      _bOsdState = DLG_MENU_LANG_CODE;
      break;
  }

⌨️ 快捷键说明

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