📄 userpref.c
字号:
#include <math.h>
#include "types.h"
#include "board.h"
#include "global.h"
#include "nvram.h"
#include "debug.h"
#include "menudef.h"
#include "menufunc.h"
#include "Panel.h"
#include "misc.h"
#include "UserPrefDef.h"
#include "DDC.h"
#define HFreq_Tol 16 // 1.6 KHz
#define VFreq_Tol 8 // 0.8 Hz
Bool CheckBoard(void);
void ReadBlackLitTime(void);
void SaveBlackLitTime(void);
void SaveModeSetting(void);
void Init_ModeSetting(void);
extern void InitDDCEEP(void);
void ReadBlackLitTime(void)
{ NVRam_ReadTbl(BLackLitTimeAddr, (BYTE*)(&BLTime), 4);
}
void SaveBlackLitTime(void)
{ NVRam_WriteTbl(BLackLitTimeAddr, (BYTE*)(&BLTime), 4);
}
void Init_MonitorSetting(void)
{ UserPrefBrightness=65;
UserPrefContrast=DefContrast;
UserPrefAdcRedGain=0x80;
UserPrefAdcGreenGain=0x80;
UserPrefAdcBlueGain =0x80;
UserPrefAdcRedOffset=0x80;
UserPrefAdcGreenOffset=0x80;
UserPrefAdcBlueOffset=0x80;
UserPrefRedColor=DefRedColor;
UserPrefGreenColor=DefGreenColor;
UserPrefBlueColor=DefBlueColor;
UserPrefColorTemp=CTEMP_6500K;
UserPrefSharpness=DefSharpness; //FENDY
UserPrefTransultDef=No_Translucent;
UserPrefRedColor9300K=Def9300RedColor;
UserPrefGreenColor9300K=Def9300GreenColor;
UserPrefBlueColor9300K=Def9300BlueColor;
UserPrefRedColor6500K=Def6500RedColor;
UserPrefGreenColor6500K=Def6500GreenColor;
UserPrefBlueColor6500K=Def6500BlueColor;
UserPrefRedColor5800K =Def5800RedColor;//fendy add
UserPrefGreenColor5800K=Def5800GreenColor;
UserPrefBlueColor5800K =Def5800BlueColor;
UserPrefBrightness9300K=65;
UserPrefContrast9300K =DefContrast;
UserPrefBrightness6500K=65;
UserPrefContrast6500K =DefContrast;
UserPrefBrightness5800K=65; //fendy add
UserPrefContrast5800K =DefContrast;
Save9300KSetting();
Save6500KSetting();
Save5800KSetting();//fendy add
SaveUserKSetting();
UserPrefLanguage=DefLanguage;
UserPrefOsdHStart=DefOsdHStart;
UserPrefOsdVStart=DefOsdVStart;
UserPrefOsdTime =DefOsdTime;
UserPrefOsdSize =DefOsdSize; //tony 14/11/03
UserPrefInputType=Input_656Video;
UserPrefVolume =MidVol;
UserPrefPictureMode= Res_720x400;
// UserPrefSavedModeIndex=UserModeNumber;
UserPrefPWM0Cmin=0x00;
UserPrefPWM0Cmax=0xB0;
NVRam_WriteByte(nvrMonitorAddr(PWM0Cmin), UserPrefPWM0Cmin);
NVRam_WriteByte(nvrMonitorAddr(PWM0Cmax), UserPrefPWM0Cmax);
//fendy add
UserPrefGammaDef=GammValue0;
MonitorFlags=DefMonitorFlags;
MonitorSetting.checksum=ChecksumValue;
}
void Init_ModeSetting(void)
{ UserPrefHTotal=StandardModeHTotal;
UserPrefHStart=StandardModeHStart;
UserPrefVStart=StandardModeVStart;
UserPrefPhase=0x1F;
UserPrefAutoTimes=0;
ModeSetting.checksum=ChecksumValue;
}
void CheckColorValueRange(void)
{ if (UserPrefContrast>MaxContrastValue || UserPrefContrast<MinContrastValue)
UserPrefContrast=DefContrast;
if (UserPrefContrast9300K>MaxContrastValue || UserPrefContrast9300K<MinContrastValue)
UserPrefContrast9300K=DefContrast;
if (UserPrefContrast6500K>MaxContrastValue || UserPrefContrast6500K<MinContrastValue)
UserPrefContrast6500K=DefContrast;
}
void CheckMonitorSettingRange(void)
{ CheckColorValueRange();
MSBankNo%=3;
UserPrefBrightness%=101;
UserPrefBrightness9300K%=101;
UserPrefBrightness6500K%=101;
#if EnablesRGB
UserPrefBrightnesssRGB%=101;
#endif
UserPrefColorTemp%=CTEMP_Nums;
UserPrefLanguage%=LANG_Nums;
if (UserPrefVolume<MinVol||UserPrefVolume>MaxVol)
UserPrefVolume=(MinVol+MaxVol)/2;
UserPrefInputType%=Input_Nums;
#if DisplayModeSelect // sail add 20040805
UserPreDisplayMode%=5;
UserPrefTextModeBrightness%=101;;
UserPrefWebModeBrightness%=101;;
UserPrefMovieModeBrightness%=101;;
#endif
}
void CheckModeSettingRange(void)
{ if (abs(UserPrefHTotal-StandardModeHTotal)>60)
UserPrefHTotal=StandardModeHTotal;
if (UserPrefHStart>2*StandardModeHStart)
UserPrefHStart=StandardModeHStart;
if (UserPrefVStart>2*StandardModeVStart)
UserPrefVStart=StandardModeVStart;
UserPrefPhase&=0x3F;
if (UserPrefAutoTimes==0 || abs(UserPrefHStart-UserPrefAutoHStart)>50)
UserPrefAutoHStart=UserPrefHStart;
}
void SaveMonitorSetting(void)
{ NVRam_WriteTbl(MonitorSettingAddr, (BYTE*)&MonitorSetting, MonitorSettingSize);
}
void SaveModeSetting(void)
{ NVRam_WriteTbl(nvrModeBaseAddr(SrcModeIndex), (BYTE*)&ModeSetting, ModeSettingSize);
}
//printData("Save Index %d", SaveIndex);
void ReadMonitorSetting(void)
{ BYTE tempValue;
BYTE MonitorRetryTimes=10;
CheckBoard();
do{
NVRam_ReadByte(nvrMonitorAddr(checksum), &tempValue);
//printData("MT %d",MonitorRetryTimes);
}
while((tempValue!=ChecksumValue)&&MonitorRetryTimes--);
if (tempValue==ChecksumValue)
{ NVRam_ReadTbl(MonitorSettingAddr, (BYTE*)&MonitorSetting, MonitorSettingSize);
#if DEBUG_ENABLE
printMsg("monitor setting found");
#endif
}
else
{ Init_MonitorSetting();
UserPrefColorTemp=CTEMP_6500K;
Read6500KSetting();
SaveMonitorSetting();
}
CheckMonitorSettingRange();
SrcInputType=UserPrefInputType;
#if MTV512
mStar_WriteDDC1();
mStar_WriteDDC2();
#endif
}
void GetModeSaveIndex(void)
{ ModeInfoType modeInfo;
BYTE i;
WORD hFreq, vFreq;
if (!UserModeFlag) //for preset mode, save all preset modes
{
SaveIndex=SrcModeIndex;
#if DEBUG_ENABLE
printData("Preset=%d", SaveIndex);
#endif
return;
}
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)<16 && abs(vFreq-modeInfo.VerFreq)<8 && (SrcFlags&0x13)==modeInfo.Flags)
break;
}
if (i>=UserModeNumber)
{ MaxSavedModeIndex=(MaxSavedModeIndex+1)%UserModeNumber;
SaveIndex=MaxSavedModeIndex;
modeInfo.HorFreq=hFreq;
modeInfo.VerFreq=vFreq;
modeInfo.Flags=SrcFlags&0x13;
NVRam_WriteTbl(nvrModeInfoAddr(SaveIndex), (BYTE*)&modeInfo, ModeInfoSize);
NVRam_WriteByte(nvrModeAddr(checksum), 0);
}
else
SaveIndex=i;
#if DEBUG_ENABLE
printData("User=%d", SaveIndex);
#endif
}
void ReadModeSetting(void)
{ BYTE tempValue;
if (UserModeFlag)
GetModeSaveIndex();
else
SaveIndex=SrcModeIndex;
NVRam_ReadByte(nvrModeAddr(checksum), &tempValue);
if (tempValue==ChecksumValue)
{
NVRam_ReadTbl(nvrModeBaseAddr(SaveIndex), (BYTE*)&ModeSetting, ModeSettingSize);
#if DEBUG_ENABLE
printMsg("mode setting found");
#endif
}
else
{ Init_ModeSetting();
SaveModeSetting();
#if DEBUG_ENABLE
printMsg("mode setting found fail");
#endif
}
CheckModeSettingRange();
}
code ColorTempSaveType InitEEPC9300K = {65,DefContrast,Def9300RedColor,Def9300GreenColor,Def9300BlueColor,};
code ColorTempSaveType InitEEPC6500K = {65,DefContrast,Def6500RedColor,Def6500GreenColor,Def6500BlueColor,};
code ColorTempSaveType InitEEPC5800K = {65,DefContrast,Def5800RedColor,Def5800GreenColor,Def5800BlueColor,};
code ColorTempSaveType InitEEPCUserK = {65,DefContrast,DefRedColor,DefGreenColor,DefBlueColor,};
BYTE code InitEEPADCBack[] = {0x70,0x70,0x70,0x80,0x80,0x80,};
void InitialEEPADCBack(void)
{
BYTE i;
for (i = 0; i < sizeof(InitEEPADCBack);i++)
NVRam_WriteByte(AdcRedGainSaveAddr+i,InitEEPADCBack[i]);
}
void InitialCUserKEEP(void)
{
BYTE i,tmp;
for (i = 0; i < ColorTempSaveSize ;i++)
{
tmp = ((BYTE *)&InitEEPCUserK)[i];
NVRam_WriteByte(FactoryCUserKColorTempSaveAddr+i,tmp);
}
}
void InitialC6500KEEP(void)
{
BYTE i,tmp;
for (i = 0; i < ColorTempSaveSize ;i++)
{
tmp = ((BYTE *)&InitEEPC6500K)[i];
NVRam_WriteByte(FactoryC6500KColorTempSaveAddr+i,tmp);
}
}
void InitialC5800KEEP(void)
{
BYTE i,tmp;
for (i = 0; i < ColorTempSaveSize ;i++)
{
tmp = ((BYTE *)&InitEEPC5800K)[i];
NVRam_WriteByte(FactoryC5800KColorTempSaveAddr+i,tmp);
}
}
void InitialC9300KEEP(void)
{
BYTE i,tmp;
for (i = 0; i < ColorTempSaveSize ;i++)
{
tmp = ((BYTE *)&InitEEPC9300K)[i];
NVRam_WriteByte(FactoryC9300KColorTempSaveAddr+i,tmp);
}
}
void EraseEEPROM(void)
{
NVRam_WriteByte(nvrMonitorAddr(checksum), 0);
SrcFlags&=~bUserMode; //vick add
for (SrcModeIndex=0; SrcModeIndex<NumberOfMode; SrcModeIndex++)
{ NVRam_WriteByte(nvrModeAddr(checksum), 0);
}
SrcFlags|=bUserMode;
for (SrcModeIndex=0; SrcModeIndex<NumberOfMode; SrcModeIndex++)
{ NVRam_WriteByte(nvrModeAddr(checksum), 0);
}
SrcFlags&=~bUserMode;
InitialCUserKEEP();
InitialC6500KEEP();
InitialC9300KEEP();
InitialC5800KEEP();
InitialEEPADCBack();
Delay1ms(100);
printMsg("erase board");
#if MTV512
InitDDCEEP();
#endif
}
Bool CheckBoard(void)
{ BYTE tempValue;
BYTE BoradRetryTimes=10;
Bool NewBoard=FALSE;
do{
NVRam_ReadByte(CheckBoardAddr, &tempValue);
//printData("BT %d",BoradRetryTimes);
}
while((tempValue!=BoardChecksum)&&BoradRetryTimes--);
if (tempValue!=BoardChecksum)
{ EraseEEPROM();
BLTime=0;
SaveBlackLitTime();
NVRam_WriteByte(CheckBoardAddr, BoardChecksum);
NewBoard=TRUE;
}
else
ReadBlackLitTime();
return NewBoard;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -