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

📄 osdtv501.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 2 页
字号:
#define __OSDTV501___

#include "Header\Include.h"

#if(_OSD_TYPE == _OSD501)
#if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)

//------------------------------------------------------------
void OSDTVProc()
{
    switch(ucOsdState)
    {
        case _MENU_NONE:                MTVNoneProc();          break;

        case _M_COLOR:
        case _M_SOUND:
        case _M_FEATURE:
        case _M_SOURCE_INFO:
        case _M_INSTALL:		
        case _M_EXIT:                   MTVMainMenuProc();      break;

        case _M_BRIGHTNESS:
        case _M_CONTRAST:
        case _M_SHARPNESS:
        case _M_SAUTRATION:
        case _M_HUE:
        case _M_COLOR_EXIT:             MVideoColorProc();      break;

        case _M_VOLUME:
        case _M_SOUND_EXIT:             MSoundProc();            break;

        case _M_INPUT_SOURCE:
        case _M_LANGUAGE:
		case _M_RESET:
        case _M_FEATURE_EXIT:           MVideoFeatureProc();    break;

        case _M_CHANNEL:
        case _M_SKIP:
        case _M_AFC:
        case _M_FINE_TUNE:
        case _M_SYSTEM:
        case _M_AUTO_SEARCH:
        case _M_MANUAL_ADJUST:
        case _M_INSTALL_EXIT:          MTVMenuProc();          break;

        case _M_BRIGHTNESS_ADJ:         MBrightnessProc();      break;
        case _M_CONTRAST_ADJ:           MContrastProc();        break;
        case _M_SHARPNESS_ADJ:          MSharpnessProc();       break;
        case _M_SAUTRATION_ADJ:         MSautrationProc();      break;
        case _M_HUE_ADJ:                MHueProc();             break;

        case _M_VOLUME_ADJ:             MVolumeAdjProc();       break;
        case _M_INPUTSOURCE_ADJ:        MInputSourceProc();     break;			
        case _M_LANGUAGE_ADJ:           MLanguageAdjProc();     break;

        case _M_CHANNEL_ADJ:            MChannelProc();         break;
        case _M_SKIP_ADJ:               MSkipProc();            break;
        case _M_AFC_ADJ:                MAFCProc();             break;
        case _M_FINE_TUNE_ADJ:          MFineTuneProc();        break;
        case _M_SYSTEM_ADJ:             MTVSystemProc();        break;
        case _M_MANUAL_ADJUST_ADJ:      MTVManualAdjustProc();  break;


        case _M_SP_VOLUME:              MSPVolumeProc();        break;
        case _M_SP_BRIGHTNESS:          MSPBrightProc();       break;
		case _M_CHANNEL_SWAP:           tvChannelSwapProc();    break;
        default:
               break;
    }
}
//------------------------------------------------------------
//-------------------------------------------------------------------------
//
// ucOption:   0x01: Only show ucTvNumber          _SHOW_CH_TV_NUMBER
//             0x02: Show tv type                  _SHOW_CH_TV_TYPE
//             0x04: Show sound type               _SHOW_CH_SOUND_TYPE
//
//-------------------------------------------------------------------------
void CShowTVNumber(BYTE ucTvNumber, BYTE ucOption)//gg
{
    unsigned char x;
    unsigned char y;

    x = 0;
	y = 1;

    COsdFxDisableOsd();
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(0,2,0,0,0x01);		
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);

    if(ucOption & _SHOW_CH_TV_NUMBER)
    {
		if(_GET_INPUTCHSWITCH_STATE())
		{
        Gotoxy(x,0,BYTE_DISPLAY);   
       	PrintfDec(ucTvNumber);
		x++;
			if(ucTvNumber < 10)
				{
        		Gotoxy(x,0,BYTE_DISPLAY);
				if(ucOption & _SHOW_CH_INPUT_SWITCH_ON)    
        		OutputChar('-');
				else
				OutputChar(0x20);
				x++;
				}
		}
		else
		{
        Gotoxy(x,0,BYTE_DISPLAY);         
        PrintfDec(ucTvNumber);
        x++;
		}
    }

	x = 0;

    if(ucOption & _SHOW_CH_TV_TYPE)
    {
		Gotoxy(x,y,BYTE_DISPLAY);   
        RightAlignTextOut((unsigned char code *)sTVType[ucTVType],8,y);
        y++;
    }

    if(ucOption & _SHOW_CH_SOUND_TYPE)
    {
		Gotoxy(x,y,BYTE_DISPLAY);   
        RightAlignTextOut((unsigned char code *)sTVSoundType[CLoadChannelSoundType(stVDCColor.CurrentChannel)], 8, y);
        y++;
    }
}
//-------------------------------------------------------------------------
void CShowAutoSearchSlider(BYTE ucCurrentValue)
{
    SLIDER(ucCurrentValue);
}
//----------------------------------------------------------------------------------------------------
bit CStopAutoSearch(void)
{
   BYTE ucKeyState = CKeyScan();

   if (_LEFT_KEY_MASK == ucKeyState)
      return 1;//while stop auto search

   return 0; // Continue auto search
}
//----------------------------------------------------------------------------------------------------
void CShowAutoSerachTotal(BYTE ucSearchTotal)
{
    Gotoxy(14,16,BYTE_DISPLAY);
    PrintfDec(ucSearchTotal);
}
//----------------------------------------------------------------------------------------------------

void MTVNoneProc()
{
     switch(ucKeyMessage)
     {
         case VK_MENU:        MTVNoneMenu();       break;
         case VK_LEFT:        MTVNoneLR(1);        break;
         case VK_RIGHT:       MTVNoneLR(0);        break;
//FENIXADD
         case VK_UP:    		 
				SET_MUTE_STATE(STATE_MUTEON); 	  
				MUTE_ON();
				CTimerDelayXms(80); 
				CTimerDelayXms(80);
				CPrevChannel();
				SET_MUTE_STATE(STATE_MUTEOFF);
				MUTE_OFF();	   break;
         case VK_DOWN:   
				SET_MUTE_STATE(STATE_MUTEON);
		 		MUTE_ON();
				CTimerDelayXms(80);
				CTimerDelayXms(80);
				CNextChannel();
				SET_MUTE_STATE(STATE_MUTEOFF);
				MUTE_OFF();     break; 
//FENIXEND
//################################################################
#if(IR_ENABLE)
		 case _IR_TVTYPE_KEY_MESSAGE: 		//fenix add mannuladjchannel
		 				 CTuningCurrentChannel(0,stVDCColor.CurrentChannel);//CTVChannelManualAdjust(0); 
						 printMsg("TV MANUL ADJUST+");//FENIX TV MANUL ADJUST-
						 break;

		 case _IR_SOUND_KEY_MESSAGE:  		//fenix add mannuladjchannel 
						 CTuningCurrentChannel(1,stVDCColor.CurrentChannel);//CTVChannelManualAdjust(1); 
						 printMsg("TV MANUL ADJUST-");//FENIX TV MANUL ADJUST-
						 break;

		 case _IR_RETURN_KEY_MESSAGE:	//FENIX ADD FOR SOUND CHANNEL CHANGE
					if(bAMP_SELECT)		 
						bAMP_SELECT = 0;
					else
						bAMP_SELECT = 1;
		   
						 break;

		 case _IR_DISPLAY_KEY_MESSAGE:  	//fenix add swap
						 pData[14] = 0;
						 pData[15] = 0;							
						 _SET_INPUTCHSWITCH_STATE(_OFF);
						 _SET_INPUTCH_STATE(_GET_ONE_NUM);
						 STVInputCHSwitch();
						 ucOsdState = _M_CHANNEL_SWAP;
						 break;

		 case _IR_DISP_KEY_MESSAGE: 	//gg
		 				 CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE); 
						 break;

		 case _IR_MUTE_KEY_MESSAGE:
		 				 CSetMuteState();
						 break;

		 case _IR_RECALL_KEY_MESSAGE:
		 				 tvChannelRecall();
						 break;

		 case _IR_NUM0_KEY_MESSAGE:  
		 case _IR_NUM1_KEY_MESSAGE: 
		 case _IR_NUM2_KEY_MESSAGE: 
		 case _IR_NUM3_KEY_MESSAGE: 
		 case _IR_NUM4_KEY_MESSAGE:
		 case _IR_NUM5_KEY_MESSAGE:
		 case _IR_NUM6_KEY_MESSAGE:
		 case _IR_NUM7_KEY_MESSAGE:
		 case _IR_NUM8_KEY_MESSAGE:
		 case _IR_NUM9_KEY_MESSAGE:
        		 irSetChennel();                                break;
    	 case _IR_NUM10_KEY_MESSAGE:    
		 		 STVInputCHSwitch();              
				 break;

#endif
//################################################################
	 }
}
//---------------------------------------------------------------------------
void MTVNoneMenu()
{
     ucOsdState = _M_COLOR;
     InitOSDFrame();
     DrawMainIcon(tTVMainIcon);
     MainMenuItemState(0,1);
     DrawMenuItem(tVideoColorPage);
     COsdFxEnableOsd();
}
//---------------------------------------------------------------------------
void MTVNoneLR(unsigned char LR)
{
     if(LR)
     {
         EnterSPVolume();
     }
     else
     {

         EnterSPVolume();//EnterSPBright();		//fenix disable SPBright
     }
}
//---------------------------------------------------------------------------




void MTVMainMenuProc()
{
//############################ fenix add fine tune ################		//gg
	FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);
//##########
     switch(ucKeyMessage)
     {
         case VK_MENU:        break;//MTVMainMenuMenu(_UP);       break;
         case VK_LEFT:        MTVMainMenuLR(1);        break;
         case VK_RIGHT:       MTVMainMenuLR(0);        break;
//FENIXADD
         case VK_UP:         MTVMainMenuMenu(_UP);	       break;
         case VK_DOWN:       MTVMainMenuMenu(_DOWN);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MTVMainMenuMenu(unsigned char ucUD)
{
    switch(ucOsdState)
    {
		
       	case _M_COLOR:          if(ucUD) ucOsdState = _M_HUE_ADJ;
								else     ucOsdState = _M_BRIGHTNESS_ADJ;             
								fDrawCurrentLine(tVideoColorItem);					 break;

       	case _M_SOUND:          if(ucUD) ucOsdState = _M_VOLUME_ADJ;
								else     ucOsdState = _M_VOLUME_ADJ;             
								fDrawCurrentLine(tVgaSoundItem);					 break;

       	case _M_FEATURE:		//gg1
								//fenix target
	 							ucInputSourceTemp = stSystemData.InputSource;	//gg
//								printData("ucInputSourceTemp0 =%x",ucInputSourceTemp);

						        if(ucUD) ucOsdState = _M_RESET;
								else 	 ucOsdState = _M_INPUTSOURCE_ADJ;             
								fDrawCurrentLine(tVideoFeatureItem);				 break;

       	case _M_INSTALL:        if(ucUD) ucOsdState = _M_MANUAL_ADJUST_ADJ;
								else 	 ucOsdState = _M_CHANNEL_ADJ;             
								fDrawCurrentLine(tInstallItem);					 break;	//fenix

        case _M_EXIT:
             // Close OSD
             ucOsdState = _MENU_NONE;
             COsdFxDisableOsd();
             CCheckShowHinit();
             return;
    }

}
//---------------------------------------------------------------------------
void MTVMainMenuLR(unsigned char LR)
{
    // 1 . clear old item
    unsigned char ucPos = CurrMenuPos(tTVMainItem);
    MainMenuItemState(ucPos,0);
    // Clear Old Screen
    CLEAR_CLIENTOSD();


    // 2. change item
    if(LR)
    {
        NextMenuItem(tTVMainItem);
    }
    else
    {
        PrevMenuItem(tTVMainItem);
    }
    // 3. draw item
    ucPos = CurrMenuPos(tTVMainItem);
    MainMenuItemState(ucPos,1);

    // Draw New Page
    switch(ucOsdState)
    {
        case _M_COLOR:          DrawMenuItem(tVideoColorPage);          break;
        case _M_SOUND:          DrawMenuItem(tVgaSoundPage);               break;
        case _M_FEATURE:        DrawMenuItem(tVideoFeaturePage);        break;
        case _M_INSTALL:        DrawMenuItem(tInstallPage);            break;		//fenix
        case _M_EXIT:           DrawMenuItem(tExitPage);                break;
    }
}
//---------------------------------------------------------------------------




void MTVMenuProc()
{
    
	 switch(ucKeyMessage)
     {
         case VK_MENU:        break;//MTVMenuMenu();       break;
         case VK_LEFT:        MTVMenuMenu();	       break;
         case VK_RIGHT:       CStopAutoSearch(); 			   break;
//FENIXADD
         case VK_UP:        MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MTVMenuMenu()
{
    switch(ucOsdState)
    {
	      case _M_AUTO_SEARCH:
            CTvAutoSearch();
            // Clear auto search msg
            OSDLine(15,1,31,0x00,BYTE_DISPLAY);
            OSDLine(16,10,10,0x00,BYTE_DISPLAY);
            break;
    }
}
//---------------------------------------------------------------------------
void MChannelProc()
{
	CDrawChannel();
     switch(ucKeyMessage)
     {
         case VK_MENU:        MChannelMenu();       break;
         case VK_LEFT:        MChannelLR(1);
						      FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);		break;
         case VK_RIGHT:       MChannelLR(0);
		 					  FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);       break;
//FENIXADD
         case VK_UP:        MenuItemUD(tInstallItem,1);        break;	
         case VK_DOWN:       MenuItemUD(tInstallItem,0);        break;
//FENIXEND
     }
}
//---------------------------------------------------------------------------
void MChannelMenu()
{
     ucOsdState = _M_CHANNEL;
     CLR_SLIDER();
}
//---------------------------------------------------------------------------
void MChannelLR(unsigned char LR)
{	
	SET_MUTE_STATE(STATE_MUTEON);
	MUTE_ON();
//############### fenix disable channel lr sound ######################
	CTimerDelayXms(80);
	CTimerDelayXms(80);
	CTimerDelayXms(80);
	CTimerDelayXms(80);
//######################################################################

    ucPrevChannel = stVDCColor.CurrentChannel;

	stVDCColor.CurrentChannel = ValueInRangeChange(0,CloadMaxChannelNumber(),stVDCColor.CurrentChannel,LR,1);
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    CDrawChannel();
    CEepromSaveVideoColor();

	SET_MUTE_STATE(STATE_MUTEOFF);
	MUTE_OFF();
}
//---------------------------------------------------------------------------
void CDrawChannel(void)
{
     Gotoxy(5,15,BYTE_DISPLAY);
     OutputChar(0x3b);
     Gotoxy(27,15,BYTE_DISPLAY);
     OutputChar(0x3c);
     Gotoxy(16,15,BYTE_DISPLAY);
     PrintfDec(stVDCColor.CurrentChannel);
	 OutputChar(0x20);
}
//---------------------------------------------------------------------------





void MSkipProc()
{
	 CDrawSkip();
     switch(ucKeyMessage)
     {
         case VK_MENU:        MSkipMenu();       break;
         case VK_LEFT:        MSkipLR(1);        break;
         case VK_RIGHT:       MSkipLR(0);        break;
//FENIXADD

⌨️ 快捷键说明

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