📄 stprisc.c
字号:
/**********************************************************************/
/*************** 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 + -