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

📄 osdctrl.c

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	       	case USER_G:
	       		adjUser_G(val,SHOW);
	       		return;
	       	case USER_B:
	       		adjUser_B(val,SHOW);
	       		return;
#if WITH_AUDIO
       		case MAIN_EXIT:
                        adjVolume(val,SHOW);
                        return;
#endif
//==================================== FACTORY ==========================================
		case BLACK_LEVEL:
			if (eepData.blacklevel & 0x80)
			{
				if (val == -1)
				{
					if ((eepData.blacklevel & 0x7F) < 0x7F)
						eepData.blacklevel++;
				}
				else
				{
					if ((eepData.blacklevel & 0x7F) != 0)
						eepData.blacklevel--;
					else
						eepData.blacklevel = 0x01;
				}
			}
			else
			{
				if (val == 1)
				{
					if (eepData.blacklevel < 0x7F)
						eepData.blacklevel++;
				}
				else
				{
					if (eepData.blacklevel != 0)
						eepData.blacklevel--;
					else
						eepData.blacklevel = 0x81;
				}
			}
			setBlackLevel();
			eepDataOut(EEPDATASTART+(&eepData.blacklevel-&eepData), (unsigned char *)&eepData.blacklevel, 1);
			factoryUpdataSHOW();
	       		return;

		case GAIN_R:
		case GAIN_G:
		case GAIN_B:
		case OFFSET_R:
		case OFFSET_G:
		case OFFSET_B:
		case C1_R:
		case C1_G:
		case C1_B:
		case C1_BRI:
		case C1_CON:
		case C2_R:
		case C2_G:
		case C2_B:
		case C2_BRI:
		case C2_CON:
			factoryAdjData(val);
			factoryUpdataSHOW();
	       		return;

		case SET_PAGE:
		case SET_ADDH:
		case SET_ADDL:
		case SET_DATAH:
		case SET_DATAL:
			factoryAdjREGData(val);
			factoryUpdataSETREG();
			return;

		case BURN_IN:
			eepData.MascotFlag ^= FLAG_BURNIN;
			eepDataOut(EEPDATASTART+(&eepData.MascotFlag-&eepData), (unsigned char *)&eepData.MascotFlag, 1);
			factoryUpdataSHOW();
	       		return;

 	}
}










/****************************************
* Show NoSync information on screen     *
*****************************************/
/*void osdCableNotConnected(void)
{
	if(eepData.language==5)
		load_CableNotConnected_font_data();
	menuDraw();
	PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,CableNotConnected1MenuData[eepData.language],sizeof(CableNotConnected1MenuData[0]) / sizeof(char));		
	PortDataOut((MainMenuCols+1)*6+7,UPDATE_CODE,CableNotConnected2MenuData[eepData.language],sizeof(CableNotConnected2MenuData[0]/sizeof(char)));		
   	enableOSD();
}
*/
/**********************************************
* Show Out of Range information on screen     *
***********************************************/
void osdOutOfScanRange(void)
{
	if(eepData.language==5)
		load_notsupport_font_data();
	menuDraw();
	PortDataOut((MainMenuCols+1)*5+6,UPDATE_CODE,input_notMenuData[eepData.language],sizeof(input_notMenuData[0]) / sizeof(char));		
	PortDataOut((MainMenuCols+1)*6+10,UPDATE_CODE,supportedMenuData[eepData.language],sizeof(supportedMenuData[0]/sizeof(char)));		
   	enableOSD();
}


/**********************************************
* Show Auto Tune information on screen     *
***********************************************/
void osdAutoConfig(void)
{
	if(eepData.language==5)
		load_pleasewait_font_data();

	if(cursor == AUTOCONFIG_YES || cursor == RESET_YES)
	{
		subClear();
		PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,pleaseWaitData[eepData.language],sizeof(pleaseWaitData[0]/sizeof(char)));
	}
	else if(cursor == 0x00)
	{
		if(eepData.language==5)
			load_autoconfig_font_data();
		menuDraw();
		PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,AutoConfigData[eepData.language],sizeof(AutoConfigData[0]) / sizeof(char));		
		PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,pleaseWaitData[eepData.language],sizeof(pleaseWaitData[0]/sizeof(char)));		
	}
   	enableOSD();
}

/****************************************
* Show NoSync information on screen     *
*****************************************/
void osdNoSignal(void)
{
	load_nosignal_font_data();
	menuDraw();
	PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,nosignalData[eepData.language],sizeof(nosignalData[0]) / sizeof(char));
   	enableOSD();
}

/****************************************
* Show NoSync information on screen     *
*****************************************/
void osdINTO_ISP(void)
{
	menuDraw();
	PortDataOut((MainMenuCols+1)*5+10,UPDATE_CODE,IntoISPData,8);
   	enableOSD();
}

#define LOGOXPOS		(MAX_OSD_HPOS - MIN_OSD_HPOS)/2 - 8
#define LOGOYPOS		(MAX_OSD_VPOS - MIN_OSD_VPOS)/2 + 18




void setDigitalContrastRGB(void)
{
	if (eepData.colorPos == COLOR_6500)		
	{
		eepData.userR = eepData.color6500R;
		eepData.userG = eepData.color6500G;
		eepData.userB = eepData.color6500B;		
	}
	else if (eepData.colorPos == COLOR_7500)		
	{
		eepData.userR = eepData.color7500R;
		eepData.userG = eepData.color7500G;
		eepData.userB = eepData.color7500B;
	}
	else if (eepData.colorPos == COLOR_NATIVE)		
	{
		eepData.userR = 50;
		eepData.userG = 50;
		eepData.userB = 50;
	}

	#if RB_SWAP
		setDigitalContrast(SELECTR,eepData.userB);
		setDigitalContrast(SELECTG,eepData.userG);
		setDigitalContrast(SELECTB,eepData.userR);
	#else
		setDigitalContrast(SELECTR,eepData.userR);
		setDigitalContrast(SELECTG,eepData.userG);
		setDigitalContrast(SELECTB,eepData.userB);
	#endif	
}


void setDigitalContrast(unsigned char color,unsigned char value)
{

	ival = value * 150;
	ival /= 100;
	ival += (eepData.contrast + 3);

	if (color == SELECTR)
		RegByteOut(0x80, ival);
	else if (color == SELECTG)
		RegByteOut(0x81, ival);
	else if (color == SELECTB)
		RegByteOut(0x82, ival);

	RegByteOut(0x83, 0x44);//sam 20030305 for new MVPL
	RegByteOut(0x84, 0x04);//sam 20030305 for new MVPL 		
}


/*
void setDigitalBrightness(unsigned char color,unsigned char value)
{
	int data val;
    val = value - DEF_Dbrightness;
	val *= 127;
	val /= DEF_Dbrightness; 

	ival = (unsigned int)val;
	if (ival >= 0x80) ival = 0x17f - ival ;

	if (color == SELECTR)
		RegByteOut(0x52, (unsigned char)ival);    
	else if (color == SELECTG)
		RegByteOut(0x53, (unsigned char)ival);    
	else if (color == SELECTB)
		RegByteOut(0x54, (unsigned char)ival);      
}

*/


/**********************************************
* set RGB color                               *
***********************************************/
void setColorRGB(bit flag)
{
	if (flag == DEF_DATA)     //default value from rom table
	{
        RegByteOut(TDA_RGAIN, DEF_gain );  
        RegByteOut(TDA_GGAIN, DEF_gain );   
	RegByteOut(TDA_BGAIN, DEF_gain );
    
        RegByteOut(TDA_RCLAMP, DEF_clamp);
        RegByteOut(TDA_GCLAMP, DEF_clamp);
        RegByteOut(TDA_BCLAMP, DEF_clamp);	
	}
	else
	{	
    	setColorR();
    	setColorG();
    	setColorB();

	}
}


void setColorR()
{
#if USE_GAMMA

	int gainVal,clampVal;
	
	gainVal = eepData.contrast-DEF_contrast+eepData.gainR;

	if (gainVal > MAX_gain) gainVal = MAX_gain;
	else if (gainVal < MIN_gain) gainVal = MIN_gain;
    RegByteOut(TDA_RGAIN, gainVal);
    
 
    clampVal = eepData.clampR + ( eepData.gainR - gainVal)*6/5; 
    
    
    if (clampVal > MAX_clamp) clampVal = MAX_clamp;
    else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
    RegByteOut(TDA_RCLAMP, clampVal);    
#if (DEBUGMSG>=3)
        printf("setColorR:  gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif

#else
	RegByteOut(TDA_RGAIN, eepData.gainR);
	RegByteOut(TDA_RCLAMP, eepData.clampR);    
#endif     
}

void setColorG()
{
#if USE_GAMMA

	int gainVal,clampVal;
	
	gainVal = eepData.contrast-DEF_contrast+eepData.gainG;

	if (gainVal > MAX_gain) gainVal = MAX_gain;
	else if (gainVal < MIN_gain) gainVal = MIN_gain;
    RegByteOut(TDA_GGAIN, gainVal);
    
 
    clampVal = eepData.clampG + ( eepData.gainG - gainVal)*6/5; 
    
    
    if (clampVal > MAX_clamp) clampVal = MAX_clamp;
    else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
    RegByteOut(TDA_GCLAMP, clampVal);    
#if (DEBUGMSG>=3)
        printf("setColorG:  gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif    
#else
	RegByteOut(TDA_GGAIN, eepData.gainG);
	RegByteOut(TDA_GCLAMP, eepData.clampG);    

#endif  
}


void setColorB()
{
#if USE_GAMMA

	int gainVal,clampVal;
	
	gainVal = eepData.contrast-DEF_contrast+eepData.gainB;

	if (gainVal > MAX_gain) gainVal = MAX_gain;
	else if (gainVal < MIN_gain) gainVal = MIN_gain;
	

	RegByteOut(TDA_BGAIN, gainVal);
	clampVal = eepData.clampB + ( eepData.gainB - gainVal)*6/5; 
    

    if (clampVal > MAX_clamp) clampVal = MAX_clamp;
    else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
    RegByteOut(TDA_BCLAMP, clampVal);    

#if (DEBUGMSG>=3)
        printf("setColorB:  gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif
#else
	RegByteOut(TDA_BGAIN, eepData.gainB);
	RegByteOut(TDA_BCLAMP, eepData.clampB);    

#endif
}







#if USE_GAMMA

void setGamma(unsigned char colorsel,unsigned char gamma)
{
	unsigned char data i,j;


	for (i = 0;i < 16;i++) {
		for (j = 0;j < 16;j++) {

			ival = ((i<<4)+j)<<6;
			ival1 = ival/(64+DEF_gammaRGB-gamma);	

   			if (ival1 > 255) ival1 = 255;
			buff[j] = ival1;
		}
		RegByteOut(0xc3,0x01);

		if (colorsel == SELECTR)
			PortDataOut(i<<4, PORT_GAMMA_R, buff, 16);  
		else if (colorsel == SELECTG)
			PortDataOut(i<<4, PORT_GAMMA_G, buff, 16);  		
		else if (colorsel == SELECTB)
			PortDataOut(i<<4, PORT_GAMMA_B, buff, 16);  
	}
	OSDNoDelay = 1;
}

#endif // USE_GAMMA

void setBlackLevel(void)
{
	RegByteOut(0x52, eepData.blacklevel);    
	RegByteOut(0x53, eepData.blacklevel);    
	RegByteOut(0x54, eepData.blacklevel);   
}


#if WITH_AUDIO
/************************************************
* Volume adjustment                         *
*************************************************/
void adjVolume(char delta, bit show)
{
    int val;

    val = eepData.volume + delta;
    
    if (val >= MIN_volume && val <= MAX_volume)
    {
        eepData.volume = val;
        
        setVolume(eepData.volume);

    	if (show)
    	{
			if (cursor == HOT_VOLUME )   
			{ 
			     PortDataOut((MainMenuCols+1)*5+12, UPDATE_CODE, volumeData[eepData.language], sizeof(volumeData[0]) / sizeof(char));
                        }
			else
			{
                             PortDataOut((MainMenuCols+1)*5+12, UPDATE_CODE, volumeData[eepData.language], sizeof(volumeData[0]) / sizeof(char));
			}
              	        DisplayScrollBar((unsigned int)(MAX_volume-MIN_volume), eepData.volume-MIN_volume);

		if (cursor == HOT_BRIGHTNESS)
		{
			PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
			SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);

⌨️ 快捷键说明

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