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

📄 ddcci.c

📁 NT68617源程序代码集合
💻 C
📖 第 1 页 / 共 2 页
字号:
				}
				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

⌨️ 快捷键说明

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