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

📄 mst705Ȧ

📁 MST705源代码
💻
📖 第 1 页 / 共 2 页
字号:
        NVRam_WriteByte(BoardChkSumAddr, BoardVersion);
    }

}
#else

#define CS_ERR  _BIT0
#define VER_ERR  _BIT1

BYTE CheckFlashDataBlockError(BOOL Block)
{
    BYTE ErrorType;
    BYTE i;
    BYTE ucCheckSum;

    for(i=0;i<5;i++)
    {
    		ErrorType=0;
        if(!Block)
            mstLoadDisplayData(SFD_ADDRESS);
        else
            mstLoadDisplayData(SFD_ADDRESS+0x1000);

        ucCheckSum=usrCalCheckSum((BYTE *)&g_VideoSetting, VideoSettingSize - CheckSumSize);

        if(g_VideoSetting.Checksum!=ucCheckSum)
            ErrorType|=CS_ERR;

        if(g_VideoSetting.ucVersion!=VideoVersion)
            ErrorType|=VER_ERR;

        if(!ErrorType)
            break;
    }

    return ErrorType;
}


void ReadSetting(void)
{
    BYTE Block0Err;
    BYTE Block1Err;

	if(g_bFlashReadOK)
		return;

    Block0Err=CheckFlashDataBlockError(0);
    Block1Err=CheckFlashDataBlockError(1);

    if(Block0Err&&!Block1Err) //Block0 error, Block1 OK, restore Block1 to Block0
    {
  	    putstr("\r\nBlock0 Err!");
		SaveVideoSetting();
    }
    else if(!Block0Err&&Block1Err)
    {
  	    putstr("\r\nBlock1 Err!");
        CheckFlashDataBlockError(0);
		SaveVideoSetting();
    }
    else if(Block0Err&&Block1Err)
    {
  	    putstr("\r\nUpdate!");
		InitVideoSetting();
		SaveVideoSetting();
    }
    else
    {
  	    putstr("\r\nLoad OK!");
    }

	g_bFlashReadOK=1;
}

#endif

//*******************************************************************
// Function Name: msSetUserPref
//
// Decscription: Restore user setting from NVRAM
//
// callee: msWriteByte() in ms_rwreg.c
//
// caller: msSetupMode() in mStar.c
//*******************************************************************
void msSetUserPref(void)
{
    BYTE tempSat,tempCon,tempBri;
    if(IsVideoPortInUse()||IsCCIR656InUse()/*||IsVGAInUse()*/)
    {
        msAdjustVideoRGB (RedGain, GreenGain, BlueGain);
        msAdjustVideoCbCr(CbGain, CrGain );

        tempBri=usrNonLinearCalculate(g_NLCBrightness,g_VideoSetting.VideoBrightness);
        msAdjustBrightness(tempBri);
        tempCon=usrNonLinearCalculate(g_NLCContrast,g_VideoSetting.VideoContrast);
        tempSat=usrNonLinearCalculate(g_NLCSaturation,g_VideoSetting.VideoSaturation);

#if TV_ENABLE
        if(IsTVInUse())
            tempCon+=TV_EXTR_CONTRAST;
#endif

        msAdjustHSC(g_VideoSetting.VideoHue, tempSat, tempCon);

        msAdjustVideoHue(g_VideoSetting.VideoHue);
    }
    #if YPBPR_ENABLE
    else if(IsYPbPrInUse())
    {
        msAdjustVideoRGB (RedGain, GreenGain, BlueGain);
        msAdjustVideoCbCr(CbGain, CrGain );

        tempSat=usrNonLinearCalculate(g_NLCSaturation,g_YPbPrSetting.Saturation);
        tempCon=usrNonLinearCalculate(g_NLCContrast,g_YPbPrSetting.Contrast);

        msAdjustHSC(50, tempSat, tempCon);

        msAdjustVideoHue(50);

        tempBri=usrNonLinearCalculate(g_NLCBrightness,g_YPbPrSetting.Brightness);
        msAdjustBrightness(tempBri);
    }
    #endif
    else
    {
        tempBri=usrNonLinearCalculate(g_NLCBrightness,g_PcSetting.Brightness);
        msAdjustBrightness(tempBri);
        tempCon=usrNonLinearCalculate(g_NLCContrast,g_PcSetting.Contrast);
        msAdjustPCContrast(tempCon);
    }
}

//**************************************************************************************************************//
#if TV_ENABLE
void EraseTvSkipInfo(void)
{
WatchDogClear();
 NVRam_WriteTbl(TV_SKIP_INFOAddr, g_ucTVChannelSkipInfoBuff, ((TV_MAX_CHANNEL_NUM+1)/8+1));
 #if TV_SYSTEM==TV_NTSC
 NVRam_WriteTbl(CATV_SKIP_INFOAddr, g_ucCATVChannelSkipInfoBuff, (CATV_MAX_CHANNEL_NUM+1)/8+1);
 #endif
}

void ReadChannelSkipInfoSetting(void)
{
WatchDogClear();
 NVRam_ReadTbl(TV_SKIP_INFOAddr, g_ucTVChannelSkipInfoBuff, (TV_MAX_CHANNEL_NUM+1)/8+1);
 #if TV_SYSTEM==TV_NTSC
 NVRam_ReadTbl(CATV_SKIP_INFOAddr, g_ucCATVChannelSkipInfoBuff, (CATV_MAX_CHANNEL_NUM+1)/8+1);
 #endif
}

#if TV_SYSTEM==TV_PAL
void EraseEepromTvFlag(BYTE StartChannal)
{
	BYTE channel;
	for(channel=StartChannal;channel<=TV_MAX_CHANNEL_NUM-1;channel++)
    {
		WatchDogClear();
		NVRam_WriteByte((nvrChanneAddr(channel)+MISCOFFSETADDR), (TV_SOUND_I|DoAFCFlag)& 0x8F);
    }
}
#endif

void CheckChannelNumberSettingRang()
{
#if TV_SYSTEM==TV_PAL
    g_TVChSetting.ucCurChannelNO %=TV_MAX_CHANNEL_NUM;
    g_TVChSetting.ucPreChannelNO %=TV_MAX_CHANNEL_NUM;
#else

    g_TVChSetting.ucTVSource%=NTSC_SOURCE_NUM;

    if(g_TVChSetting.ucTVSource==NTSC_ATV)
    	{
    	g_TVChSetting.ucCurChannelNO %=TV_MAX_CHANNEL_NUM;
    	g_TVChSetting.ucPreChannelNO %=TV_MAX_CHANNEL_NUM;

    	}
	else
	{
    	g_TVChSetting.ucCurChannelNO %=CATV_MAX_CHANNEL_NUM;
    	g_TVChSetting.ucPreChannelNO %=CATV_MAX_CHANNEL_NUM;
	}

    g_TVChSetting.ucATVChannelNO%=TV_MAX_CHANNEL_NUM;
    g_TVChSetting.ucCTVChannelNO%=CATV_MAX_CHANNEL_NUM;
#endif
    g_VideoSetting.TunerAGC%=0x20;
}

void ReadChannelNumberSetting(void)
{
    NVRam_ReadTbl(ChannelNumberInfoAddr, (BYTE*)&g_TVChSetting, ChannelNumberInfoSize);
    CheckChannelNumberSettingRang();
}

void SaveChannelNumberSetting(void)
{
  	NVRam_WriteTbl(ChannelNumberInfoAddr, (BYTE*)&g_TVChSetting, ChannelNumberInfoSize);
}
#endif

//**************************************************************************************************************//
#if(VGA_ENABLE||YPBPR_ENABLE)
void InitSaveModeFlag(void)
{
    NVRam_WriteByte(nvrMonitorAddr(Checksum), 0);

    for (g_ucSaveIndex=0; g_ucSaveIndex<NumberOfMode; g_ucSaveIndex++)
    {
        WatchDogClear();
        NVRam_WriteByte(nvrModeAddr(checksum), 0);
    }
}

void InitModeSetting(void)
{
    g_ModeSetting.HTotal=StandardModeHTotal;
    g_ModeSetting.HStart=StandardModeHStart;
    g_ModeSetting.VStart=StandardModeVStart;
    g_ModeSetting.AutoHStart=g_ModeSetting.HStart;
    g_ModeSetting.AutoVStart=g_ModeSetting.VStart;             //owen   110205
    g_ModeSetting.Phase=0x1F;
    g_ModeSetting.AutoTimes=0;
    g_ModeSetting.checksum=ModeCSValue;
}

void CheckModeSettingRange(void)
{
    if (abs(g_ModeSetting.HTotal-StandardModeHTotal)>ClockAdjRange)
        g_ModeSetting.HTotal=StandardModeHTotal;
    if (g_ModeSetting.HStart>2*StandardModeHStart)
        g_ModeSetting.HStart=StandardModeHStart;
    if (g_ModeSetting.VStart>2*StandardModeVStart)
        g_ModeSetting.VStart=StandardModeVStart;

    g_ModeSetting.Phase&=0x3F;

    if (g_ModeSetting.AutoTimes==0 || abs(g_ModeSetting.HStart-g_ModeSetting.AutoHStart)>50)
        g_ModeSetting.AutoHStart=g_ModeSetting.HStart;
}



void SaveModeSetting(void)
{
    NVRam_WriteTbl(nvrModeBaseAddr(g_ucSaveIndex), (BYTE*)&g_ModeSetting, ModeSettingSize);
}

void GetModeSaveIndex(void)
{
    ModeInfoType modeInfo;
    BYTE i;
    WORD hFreq, vFreq;

    hFreq=HFreq(SrcHPeriod);
    vFreq=VFreq(hFreq, SrcVTotal);
    for (i=0; i<UserModeNumber; i++)
    {
      NVRam_ReadTbl(nvrModeInfoAddr(i) , (BYTE*)&modeInfo, ModeInfoSize);
      if (abs(hFreq-modeInfo.HorFreq)<HFreq_Tol &&    abs(vFreq-modeInfo.VerFreq)<VFreq_Tol &&
      	  (SrcFlags&0x13)==modeInfo.Flags)
      break;
    }

    if (i>=UserModeNumber)
    {
        g_PcSetting.SavedModeIndex=(g_PcSetting.SavedModeIndex+1)%UserModeNumber;
        g_ucSaveIndex=g_PcSetting.SavedModeIndex;
        modeInfo.HorFreq=hFreq;
        modeInfo.VerFreq=vFreq;
        modeInfo.Flags=SrcFlags&0x13;
        NVRam_WriteTbl(nvrModeInfoAddr(g_ucSaveIndex), (BYTE*)&modeInfo, ModeInfoSize);
        NVRam_WriteByte(nvrModeAddr(checksum), 0);
        NVRam_WriteByte(nvrMonitorAddr(SavedModeIndex), g_PcSetting.SavedModeIndex);
    }
    else
        g_ucSaveIndex=i;
}

void ReadModeSetting(void)
{
    BYTE tempValue;
    if (UserModeFlag)
        GetModeSaveIndex();
    else
        g_ucSaveIndex=g_ucSrcModeIndex;

    NVRam_ReadByte(nvrModeAddr(checksum), &tempValue);

    if (tempValue==ModeCSValue)
    {
        NVRam_ReadTbl(nvrModeBaseAddr(g_ucSaveIndex), (BYTE*)&g_ModeSetting, ModeSettingSize);
    }
    else
    {
        InitModeSetting();
        SaveModeSetting();
    }

    CheckModeSettingRange();
}
#endif
//**************************************************************************************************************//

⌨️ 快捷键说明

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