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

📄 userpref_new_pal.c

📁 lcd tv : MST9E19A原代码
💻 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 + -