📄 userpref_new_pal.c
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: UserPref.c
[Date]: 18-Dec-2003
[Comment]:
User preference subroutines.
[Reversion History]:
*******************************************************************************/
#define _USERPREF_PAL_C_
void usrInitTVSetting(void)
{
BYTE cI;
g_TVSetting.ChannelSource = CHANNEL_SOURCE_PAL;
g_TVSetting.bAutoScanChannelDone = FALSE;
for (cI = 0; cI < 32; cI++)
{
g_TVSetting.acSignal[cI] = 0;
}
usrSaveTVSetting();
usrInitChSetting();
}
void usrSaveTVSetting(void)
{
g_TVSetting.TvSettingCS = usrCalCheckSum( (BYTE *)&g_TVSetting, SIZE_TV_SETTING );
rmBurstWriteBytes(RM_TV_SETTING_ADDRESS, (BYTE *)&g_TVSetting, SIZE_TV_SETTING);
usrSaveChSetting(g_TVSetting.ChannelSource);
}
void usrLoadTVSetting(void)
{
rmBurstReadBytes( RM_TV_SETTING_ADDRESS, (BYTE *)&g_TVSetting, SIZE_TV_SETTING );
if( g_TVSetting.TvSettingCS != usrCalCheckSum( (BYTE *)&g_TVSetting, SIZE_TV_SETTING ) )
{
EE_PUTSTR("\r\n TVSetting Reload!");
usrInitTVSetting();
}
printf("\r\nLoad CS=%x ", g_TVSetting.ChannelSource);
usrLoadChSetting( g_TVSetting.ChannelSource );
}
code BYTE m_cMask[8] =
{
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
};
BOOL usrCheckValidChanel(BYTE cChanel)
{
if (g_TVSetting.acSignal[cChanel>>3] & m_cMask[cChanel&0x07])
{
return TRUE;
}
else
{
return FALSE;
}
}
void usrSetValidChanel(BYTE cChanel, BOOL bEnable)
{
if (bEnable)
{
g_TVSetting.acSignal[cChanel>>3] |= m_cMask[cChanel&0x07];
}
else
{
g_TVSetting.acSignal[cChanel>>3] &= ~m_cMask[cChanel&0x07];
}
}
void usrInitChSetting(void)
{
g_TVChSetting.ucCurChannelNO = 1;
g_TVChSetting.ucPreChannelNO = 1;
usrSaveChSetting(0);
}
void usrLoadChSetting(ChannelSourceType ChSrcSel)
{
rmBurstReadBytes( rmChSetAddress(ChSrcSel), (BYTE *)&g_TVChSetting, SIZE_CH_SETTING );
if( g_TVChSetting.TvChSettingCS != usrCalCheckSum( (BYTE *)&g_TVChSetting, SIZE_CH_SETTING ) )
{
EE_PUTSTR("\r\nTV Channel Setting Reload");
usrInitChSetting();
}
}
void usrSaveChSetting(ChannelSourceType ChSrcSel)
{
g_TVChSetting.TvChSettingCS = usrCalCheckSum((BYTE *)&g_TVChSetting, SIZE_CH_SETTING);
rmBurstWriteBytes( rmChSetAddress(ChSrcSel), (BYTE *)&g_TVChSetting, SIZE_CH_SETTING );
}
#if(ENABLE_SCART2)
BYTE GetScart2Status(void)
{
return g_VideoSetting.bScartMonitor;
}
BYTE GetScart2UserSelect(void)
{
return g_VideoSetting.SOUserSelect;
}
#endif
/*
BYTE usrNonLinearCalculate(NonLinearCurveType NoLinear,BYTE AdjustValue)
{
//dual direction
BYTE rValue,ucXVStart,ucXVEnd,ucXStar,ucXEnd,ucStartPoint;
WORD wDistance;
if (AdjustValue < NON_LINEAR_POINT_X1)
{
ucXVStart = NoLinear.X0;
ucXVEnd = NoLinear.X1;
ucXStar = NON_LINEAR_POINT_X0;
ucXEnd = NON_LINEAR_POINT_X1;
}
else if (AdjustValue < NON_LINEAR_POINT_X2)
{
ucXVStart = NoLinear.X1;
ucXVEnd = NoLinear.X2;
ucXStar = NON_LINEAR_POINT_X1;
ucXEnd = NON_LINEAR_POINT_X2;
}
else if (AdjustValue < NON_LINEAR_POINT_X3)
{
ucXVStart = NoLinear.X2;
ucXVEnd = NoLinear.X3;
ucXStar = NON_LINEAR_POINT_X2;
ucXEnd = NON_LINEAR_POINT_X3;
}
else
{
ucXVStart = NoLinear.X3;
ucXVEnd = NoLinear.X4;
ucXStar = NON_LINEAR_POINT_X3;
ucXEnd = NON_LINEAR_POINT_X4;
}
if (ucXVEnd > ucXVStart)
{
wDistance = ucXVEnd - ucXVStart;
ucStartPoint = ucXVStart;
AdjustValue = AdjustValue - ucXStar;
}
else
{
wDistance = ucXVStart - ucXVEnd;
ucStartPoint = ucXVEnd;
AdjustValue = ucXEnd - AdjustValue;
}
rValue = ((WORD)wDistance*AdjustValue/(ucXEnd - ucXStar)) + ucStartPoint;
// // single direction
// BYTE rValue;
// if (AdjustValue < NON_LINEAR_POINT_X1)
// rValue = ((WORD)(NoLinear.X1 - NoLinear.X0)*(AdjustValue-NON_LINEAR_POINT_X0)/(NON_LINEAR_POINT_X1 - NON_LINEAR_POINT_X0))+NoLinear.X0;
// else if (AdjustValue < NON_LINEAR_POINT_X2)
// rValue = ((WORD)(NoLinear.X2 - NoLinear.X1)*(AdjustValue-NON_LINEAR_POINT_X1)/(NON_LINEAR_POINT_X2 - NON_LINEAR_POINT_X1))+NoLinear.X1;
// else if (AdjustValue < NON_LINEAR_POINT_X3)
// rValue = ((WORD)(NoLinear.X3 - NoLinear.X2)*(AdjustValue-NON_LINEAR_POINT_X2)/(NON_LINEAR_POINT_X3 - NON_LINEAR_POINT_X2))+NoLinear.X2;
//// else if (AdjustValue < NON_LINEAR_POINT_X4)
// else
// rValue = ((WORD)(NoLinear.X4 - NoLinear.X3)*(AdjustValue-NON_LINEAR_POINT_X3)/(NON_LINEAR_POINT_X4 - NON_LINEAR_POINT_X3))+NoLinear.X3;
return rValue;
}
*/
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrInitNonLinearCurveSetting
//
// <Description>: Initialize all non-linear setting.
///////////////////////////////////////////////////////////////////////////////
void usrInitNonLinearAdjustCurve(void)
{
//picture option
g_NLCVideoContrast.X0 = INIT_VIDEO_CONTRAST_X0;
g_NLCVideoContrast.X1 = INIT_VIDEO_CONTRAST_X1;
g_NLCVideoContrast.X2 = INIT_VIDEO_CONTRAST_X2;
g_NLCVideoContrast.X3 = INIT_VIDEO_CONTRAST_X3;
g_NLCVideoContrast.X4 = INIT_VIDEO_CONTRAST_X4;
rmBurstWriteBytes(RM_NL_VIDEO_CONTRAST_ADDRESS, (BYTE *)&g_NLCVideoContrast, SIZE_NONLINEAR_CURVE);
g_NLCVideoBrightness.X0 = INIT_VIDEO_BRIGHTNESS_X0;
g_NLCVideoBrightness.X1 = INIT_VIDEO_BRIGHTNESS_X1;
g_NLCVideoBrightness.X2 = INIT_VIDEO_BRIGHTNESS_X2;
g_NLCVideoBrightness.X3 = INIT_VIDEO_BRIGHTNESS_X3;
g_NLCVideoBrightness.X4 = INIT_VIDEO_BRIGHTNESS_X4;
rmBurstWriteBytes(RM_NL_VIDEO_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCVideoBrightness, SIZE_NONLINEAR_CURVE);
//pc option
g_NLCPCContrast.X0 = INIT_PC_CONTRAST_X0;
g_NLCPCContrast.X1 = INIT_PC_CONTRAST_X1;
g_NLCPCContrast.X2 = INIT_PC_CONTRAST_X2;
g_NLCPCContrast.X3 = INIT_PC_CONTRAST_X3;
g_NLCPCContrast.X4 = INIT_PC_CONTRAST_X4;
rmBurstWriteBytes(RM_NL_PC_CONTRAST_ADDRESS, (BYTE *)&g_NLCPCContrast, SIZE_NONLINEAR_CURVE);
g_NLCPCBrightness.X0 = INIT_PC_BRIGHTNESS_X0;
g_NLCPCBrightness.X1 = INIT_PC_BRIGHTNESS_X1;
g_NLCPCBrightness.X2 = INIT_PC_BRIGHTNESS_X2;
g_NLCPCBrightness.X3 = INIT_PC_BRIGHTNESS_X3;
g_NLCPCBrightness.X4 = INIT_PC_BRIGHTNESS_X4;
rmBurstWriteBytes(RM_NL_PC_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCPCBrightness, SIZE_NONLINEAR_CURVE);
//sound option
g_NLCVolume.X0 = INIT_VOLUME_X0;
g_NLCVolume.X1 = INIT_VOLUME_X1;
g_NLCVolume.X2 = INIT_VOLUME_X2;
g_NLCVolume.X3 = INIT_VOLUME_X3;
g_NLCVolume.X4 = INIT_VOLUME_X4;
rmBurstWriteBytes(RM_NL_VOLUME_ADDRESS, (BYTE *)&g_NLCVolume, SIZE_NONLINEAR_CURVE);
}
void usrLoadNonLinearAdjustCurve(void)
{
rmBurstReadBytes(RM_NL_VIDEO_CONTRAST_ADDRESS, (BYTE *)&g_NLCVideoContrast, SIZE_NONLINEAR_CURVE);
rmBurstReadBytes(RM_NL_VIDEO_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCVideoBrightness, SIZE_NONLINEAR_CURVE);
rmBurstReadBytes(RM_NL_PC_CONTRAST_ADDRESS, (BYTE *)&g_NLCPCContrast, SIZE_NONLINEAR_CURVE);
rmBurstReadBytes(RM_NL_PC_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCPCBrightness, SIZE_NONLINEAR_CURVE);
rmBurstReadBytes(RM_NL_VOLUME_ADDRESS, (BYTE *)&g_NLCVolume, SIZE_NONLINEAR_CURVE);
}
void usrSaveNonLinearAdjustCurve(void)
{
rmBurstWriteBytes(RM_NL_VIDEO_CONTRAST_ADDRESS, (BYTE *)&g_NLCVideoContrast, SIZE_NONLINEAR_CURVE);
rmBurstWriteBytes(RM_NL_VIDEO_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCVideoBrightness, SIZE_NONLINEAR_CURVE);
rmBurstWriteBytes(RM_NL_PC_CONTRAST_ADDRESS, (BYTE *)&g_NLCPCContrast, SIZE_NONLINEAR_CURVE);
rmBurstWriteBytes(RM_NL_PC_BRIGHTNESS_ADDRESS, (BYTE *)&g_NLCPCBrightness, SIZE_NONLINEAR_CURVE);
//sound part
rmBurstWriteBytes(RM_NL_VOLUME_ADDRESS, (BYTE *)&g_NLCVolume, SIZE_NONLINEAR_CURVE);
}
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrSaveMenu
//
// <Description>: Save OSd Menus setting.
///////////////////////////////////////////////////////////////////////////////
void usrSaveMenu(UserSaveModeEnumType ucSaveMode)
{
if (ucSaveMode>USER_SAVE_OSD_CURRENT)
{
switch( ucSaveMode )
{
case USER_SAVE_SOURCE_DIRECTLY:
usrSaveSystemSetting();
break;
}
}
else
{
switch( g_ucMenuPageIndex )
{
case MENU_AUTO_ADJUST:
{
usrSaveModeSetting(&g_ModeSetting, g_SrcInfo.ucModeRamIndex);
}
break;
case MENU_PICTURE:
case MENU_PICTURE_SUB_CONTRAST:
case MENU_PICTURE_SUB_BRIGHTNESS:
case MENU_PICTURE_SUB_HUE:
case MENU_PICTURE_SUB_SATURATION:
case MENU_PICTURE_SUB_SHARPNESS:
case MENU_PICTURE_MODE:
case MENU_SOUND_MODE:
case MENU_SCALER_MODE:
usrSaveVideoSetting();
break;
case MENU_SOUND:
case MENU_SOUND_SUB_BASS://Dimong 060314
case MENU_SOUND_SUB_TREBLE:
case MENU_SOUND_SUB_BALANCE:
case MENU_VOLUME:
usrSaveSoundSetting();
break;
case MENU_FUNCTION:
usrSaveSystemSetting();
usrSaveVideoSetting();
break;
case MENU_PC:
{
usrSaveModeSetting(&g_ModeSetting, g_SrcInfo.ucModeRamIndex);
usrSavePCScaleSetting();
usrSavePCColorSetting();
usrSaveAdcSetting(ADC_SET_VGA); // save VGA setting(manufactory)
}
break;
case MENU_CHANNEL_PROGRAM:
case MENU_CHANNEL:
usrSaveTVSetting();
break;
case MENU_PC_COLORMODE:
case MENU_PC_COLORMODE_SUB_USERR:
case MENU_PC_COLORMODE_SUB_USERG:
case MENU_PC_COLORMODE_SUB_USERB://Dimong 060314
usrSavePCColorTempSetting( &g_PCColorTempSetting, g_PCColorSetting.ColorTempIndex );
break;
case MENU_OSD:
usrSaveSystemSetting();
break;
//FACTORY PART
case MENU_FACTORY_ADC_ADJ:
usrSaveFacPage_ADCAdj();
break;
case MENU_FACTORY_PICTURE_MODE:
usrSaveVideoSetting();
break;
case MENU_FACTORY_COLOR_MODE:
usrSaveFacPage_ColorTemp();
break;
case MENU_FACTORY_NONLINEAR_MODE:
usrSaveNonLinearAdjustCurve();
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -