?? ddcci.c
字號:
}
break;
case MCCS_AUTOCOLOR:
if(SysPar.InputSource != SOURCE_DVI_D && Value.word == 1){
AutoColorAdjust();
// Osd_Set(OSD_Mode_Auto);
// AdcCalibration();
// Osd_Set(OSD_MExit);
}
break;
case MCCS_COLOR_REQ:
if(Value.word <= 130){
temps = 3000 + (unsigned short)AbusBuffer[6] * 50;
if(AbusBuffer[6]== 0)
temps = SysPar.ColorTemp = COLOR_USER;
else if(temps > 7900)
SysPar.ColorTemp = COLOR_9300;
else
SysPar.ColorTemp = COLOR_6500;
LoadColorPar();
AdjCon(HIDE, 0);
// Eep_Write(eepAdd_SYSPAR + &SysPar.ColorTemp - &SysPar, 1, &SysPar.ColorTemp);
ActiveSave_SYSPAR();
//Nvram_SaveUserPreference();
}
break;
default:
ucActiveControl = 0;
break;
}
}
/*===============================================
===============================================*/
/*void DDCCI_Get_Timing_Report(void) //s1215
{
unsigned short Temp;
SourceAddr = HOST_ADDR;
AbusBuffer[1] = 0x06;
TimingOpCode = 0x4e;
TimingStatus = InputTimingPolarity;
Temp = SrcTimingCurrent.HFreq*10;
HSyncHighByte = (unsigned char)(Temp >> 8);
HSyncLowByte = (unsigned char)Temp;
Temp = SrcTimingCurrent.VFreq*10;
VSyncHighByte = (unsigned char)(Temp >> 8);
VSyncLowByte = (unsigned char)Temp;
cCheckSum = 0x50;
}*/
void DDCCI_Save_Current_Setting(void)
{
// Nvram_WriteADC_Color();
// Nvram_WriteUser_Color();
// Nvram_WritePreset_Color();
// EepSavePar(); //save the value
// Nvram_WriteCustomerSetting();
SaveAllPar();
}
//========================================================
void DDCCI_Get_Paged_VCP_Reply(void)
{
Union Value;
SourceAddr = HOST_ADDR;
CmdLength = 0x89;
cReplyLength = 0x08+1;
ReplyCode = VESA_PAGED_VCP_REPLY;
ResultCode = VCP_FEATURE_NOERROR;
VcppTypeCode = VCP_FEATURE_MOMENTARY;
cCheckSum = 0x50;
switch(VCPPage)
{
case PAGE0:
switch(PageOpCode)
{
case MCCS_BRIGHTNESS:
Value.word = DEF_CONTRAST;
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = 0x00;
VcppPresentLowByte = (uint16)SysPar.Brightness;//((uint16)SysPar.Brightness * 120)/100 + 20;//(uint16)SysPar.Brightness*100/(SysPar.Bri_Max - SysPar.Bri_Min);
break;
case MCCS_CONTRAST:
Value.word = DEF_CONTRAST;
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = 0x00;
VcppPresentLowByte = (uint16)SysPar.Contrast;//(uint16)SysPar.Contrast * 140 /100 + 140;//(uint16)SysPar.Contrast*100/(SysPar.Con_Max - SysPar.Con_Min);
break;
case MCCS_COLOR_SEL:
VcppMaxHighByte = 0x00;
VcppMaxLowByte = 0x0b;
VcppPresentHighByte = 0x00;
switch(SysPar.ColorTemp){
case COLOR_6500:
VcppPresentLowByte = MCCS_6500K;
break;
case COLOR_9300:
VcppPresentLowByte = MCCS_9300K;
break;
case COLOR_USER:
VcppPresentLowByte = MCCS_DISPLAY_NATIVE;
break;
}
break;
}
break;
}
}
/*===============================================
===============================================*/
void DDCCI_Set_Paged_VCP_Reply(void)
{
Union Value,Value_From_Host;
Value_From_Host.b[0] = AbusBuffer[6];
Value_From_Host.b[1] = AbusBuffer[7];
SourceAddr = HOST_ADDR;
CmdLength = 0x89;
cReplyLength = 0x08+1;
ReplyCode = VESA_PAGED_VCP_REPLY;
ResultCode = VCP_FEATURE_NOERROR;
VcppTypeCode = VCP_FEATURE_MOMENTARY;
cCheckSum = 0x50;
switch(VCPPage)
{
case PAGE0:
switch(PageOpCode)
{
case MCCS_BRIGHTNESS:
Value.word = SysPar.Brightness;
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
SarSetBri(SysPar.Brightness);
break;
case MCCS_CONTRAST:
Value.word = SysPar.Contrast;
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
// UserPreference.Contrast = Value.b[1];
// WriteContrast(Value.b[1]);
// SetContrast();
//Contrast(ADJ_WRT);
// sRGB(SysPar.Contrast, SysPar.R_Gain, SysPar.G_Gain, SysPar.B_Gain);
AdjCon(HIDE,0);
break;
case MCCS_COLOR_SEL:
// UserColorSrc.DigitalGain[UserPreference.ColorTemp] = CurrentColor;
VcppMaxHighByte = 0x00;
VcppMaxLowByte = 0xFF;
VcppPresentHighByte = 0x00;
VcppPresentLowByte = Value_From_Host.b[1];
switch(Value_From_Host.b[1])
{
case MCCS_5000K:
// UserPreference.ColorTemp = Color5000;
// CustomerSetting.ColorTemp = Color5000;
// LoadColor(Color5000);
break;
case MCCS_6500K:
SysPar.ColorTemp = COLOR_6500;
// CustomerSetting.ColorTemp = Color6500;
// LoadColor(Color6500);
break;
case MCCS_7500K:
// UserPreference.ColorTemp = Color7500;
// CustomerSetting.ColorTemp = Color7500;
// LoadColor(Color7500);
break;
case MCCS_8200K:
// UserPreference.ColorTemp = Color8200;
// CustomerSetting.ColorTemp = Color8200;
// LoadColor(Color8200);
break;
case MCCS_9300K:
SysPar.ColorTemp = COLOR_9300;
// CustomerSetting.ColorTemp = Color9300;
// LoadColor(Color9300);
break;
case MCCS_DISPLAY_NATIVE:
SysPar.ColorTemp = COLOR_USER;
// CustomerSetting.ColorTemp = ColorUser;
// LoadColor(ColorUser);
// break;
default: break;
}
// SetContrast();
AdjCon(HIDE, 0);
break;
case MCCS_RED_VIDEO_GAIN:
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value_From_Host.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
// ColorDataBuf.ColorTemp[UserPreference.ColorTemp].RedGain=Value_From_Host.b[1];
// Contrast(ADJ_WRT);
// sRGB(SysPar.Contrast, SysPar.R_Gain, SysPar.G_Gain, SysPar.B_Gain);
AdjRgain(HIDE,0);
break;
case MCCS_GREEN_VIDEO_GAIN:
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value_From_Host.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
// sRGB(SysPar.Contrast, SysPar.R_Gain, SysPar.G_Gain, SysPar.B_Gain);
AdjGgain(HIDE,0);
break;
case MCCS_BLUE_VIDEO_GAIN:
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value_From_Host.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
// sRGB(SysPar.Contrast, SysPar.R_Gain, SysPar.G_Gain, SysPar.B_Gain);
AdjBgain(HIDE,0);
break;
case MCCS_AUTOSETUP:
VcppMaxHighByte = Value.b[0];
VcppMaxLowByte = Value.b[1];
VcppPresentHighByte = Value.b[0];
VcppPresentLowByte = Value_From_Host.b[1];
if(Value_From_Host.b[1]==0x01){
Value_From_Host.b[1]=0x01;
if(SysPar.InputSource != SOURCE_DVI_D){
AutoImagerAdjust();
// Nvt_AutoFunctionHandler( );
}
}
break;
}
break;
}
}
/*===============================================
===============================================*/
void CapabilitiesRequest(uint8 offsetH,uint8 offsetL)
{
#define UseLiOnTbl 0
code unsigned char VCP_CapTbl_VGA[]={
"(prot(monitor)"
"type(LCD)"
"model(V17A)"
"cmds(01 02 03 07 0C E3 F3)"
"vcp(02 04 05 06 08 0E 10 12 14(02 05 08) 16 18 1A 1E 1F 20 30 3E 52 "
"62 6C 6E 70 "
"AC AE B6 C0 C6 C8 C9 CC(01 02 03 05 06 08 0A) "
"D6(01 04) DC(00 03 04 05) DF)"
"mswhql(1)mccs_ver(2.1)asset_eep(64)mpu(01))"
};
code unsigned char VCP_CapTbl_DVI[]={
"(prot(monitor)"
"type(LCD)"
"model(V17A)"
"cmds(01 02 03 07 0C E3 F3)"
"vcp(02 04 05 08 10 12 14(02 05 08) 16 18 1A 52 60(01 03) 62 6C 6E 70 "
"AC AE B6 C0 C6 C8 C9 CC(01 02 03 05 06 08 0A) "
"D6(01 04) DC(00 03 04 05) DF)"
"mswhql(1)mccs_ver(2.1)asset_eep(64)mpu(12))"
};
uint8 i;
uint16 l,offset;
if(SysPar.InputSource == SOURCE_DVI_D){
l = sizeof(VCP_CapTbl_DVI);//-1;
}else{
l = sizeof(VCP_CapTbl_VGA);//-1;
}
// offset = ((unsigned short)offsetH) *256 + offsetL;
offset = ((unsigned short)offsetH)<<8 | (unsigned short) offsetL;
SourceAddr = HOST_ADDR;
ReplyCode = 0xE3;
AbusBuffer[3]=offsetH;
AbusBuffer[4]=offsetL;
if(offset >= l){
// l = 32;
CmdLength = 0x83;//0x80 + 32 + 3;
// for(i=0;i<l;i++)
// AbusBuffer[5+i] = 0x20; // SPACE
}else{
l = l - offset;
if(l > 32){
l = 32;
CmdLength = 0x80 + 32 + 3;
}else{
CmdLength = 0x80 + 3 + l;
}
for(i=0;i<l;i++){
if(SysPar.InputSource == SOURCE_DVI_D)
AbusBuffer[5+i] = VCP_CapTbl_DVI[offset+i];
else
AbusBuffer[5+i] = VCP_CapTbl_VGA[offset+i];
}
}
cCheckSum = 0x50;
}
void DDC2Bi_Handler(void)
{
if(bCmdReady==TRUE){
bCmdReady=FALSE;
// if(ucOSDType == ATTENTION_MSG){
// Osd_Set(OSD_MExit);
// PrepareForSleep();
// Led_AmberState();
// ScalerPowerDown();
// }
switch(Ddc2biCmd){
case VESA_GET_VCP_FEATURE:
DDCCI_Get_VCP_Feature();
break;
case VESA_SET_VCP_FEATURE:
DDCCI_Set_VCP_Feature();
break;
// case VESA_GET_TIMING_REPORT:
// DDCCI_Get_Timing_Report();
// break;
case VESA_SAVE_CURRENT_SETTING:
DDCCI_Save_Current_Setting();
break;
case VESA_CAPABILITIES_REQUEST:
CapabilitiesRequest(OFFSET_H,OFFSET_L);
break;
// case VESA_TIMING_REPORT:
// SourceAddr = HOST_ADDR;
// CmdLength = 0x80;
// cReplyLength = 1;
// break;
// case NVT_FACTORY_FEATURE:
// DDCCI_Customer_Command();
// break;
case VESA_GET_PAGED_VCP:
DDCCI_Get_Paged_VCP_Reply();
break;
case VESA_SET_PAGED_VCP:
DDCCI_Set_Paged_VCP_Reply();
break;
// case NVT_FAST_DDCCI:
// SourceAddr = 0x51;
// CmdLength = 2;
// ReplyCode = OpCode ^ 0xFF;
// cCheckSum =0x50;
// switch(OpCode){
// case NVT_FAST_ENABLE:
// break;
// case NVT_FAST_DISABLE:
// break;
// }
// break;
case AUTOALI_CMD:
// Autoalignment_Handler();
break;
default: // not-support
// SourceAddr = HOST_ADDR;
// CmdLength = 0x80;
// cReplyLength = 1;
break;
}
bDeviceReady = TRUE;
}
}
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -