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

📄 osdtv003.c

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

#include "Header\Include.h"
#if(OSD_TYPE == OSD003)

#if(_VIDEO_TV_SUPPORT)
//------------------------------------------------------------
void OSDTVProc()
{
#if(_AUTO_POWER_DOWN)
    if (MENU_SHOW_CHANNEL_SATAE == ucOsdState)
    {
        if (_NONE_KEY_MESSAGE != ucKeyMessage)
            ucOsdState = _MENU_NONE;
        else
            return;
    }
#endif
    
    switch(ucOsdState)
    {
        
    case _MENU_NONE:                 MTVNoneProc();               break;
    case MENU_ITEM_BRIGHT:
    case MENU_ITEM_CONTRAST:
    case MENU_AV_HUE:
    case MENU_AV_SATURATION:
    case MENU_TV_SYSTEM:
    case MENU_SOUND_SYSTEM:
    case MENU_AUTO_SEARCH: 
    case MENU_MANUAL_SEARCH:
    case MENU_TUNING:
    case MENU_CHANNEL:
    case MENU_SWAP:
    case MENU_SKIP:
    case MENU_BLUE:
    case MENU_AUTO_POWER_DOWN:
    case MENU_ITEM_LANGUAGE:
    case MENU_ITEM_AUTO:
    case MENU_ITEM_RESET:
    case MENU_ITEM_CLOSE:            MTVMainProc();               break;
        
    case MENU_ITEM_BRIGH_ADJ:        MBrightAdjProc();            break;
    case MENU_ITEM_CONTRAST_ADJ:     MContrastAdjProc();          break;
    case MENU_AV_HUE_ADJ:            MAVHueAdjProc();             break;
    case MENU_AV_SATURATION_ADJ:     MAVSaturationAdjProc();      break;
        
    case MENU_TV_SYSTEM_ADJ:         MTVSystemAdjProc();          break;
    case MENU_SOUND_SYSTEM_ADJ:      MSoundSystemAdjProc();       break;
    case MENU_AUTO_SEARCH_ADJ:       MAutoSearchAdjProc();        break;
    case MENU_MANUAL_SEARCH_ADJ:     MManualSearchAdjProc();      break;
    case MENU_TUNING_ADJ:            MTuningAdjProc();            break;
    case MENU_CHANNEL_ADJ:           MChannelAdjProc();           break;
    case MENU_SWAP_ADJ:              MSwapAdjProc();              break;
    case MENU_SKIP_ADJ:              MSkipAdjProc();              break;
    case MENU_BLUE_ADJ:              MBlueAdjProc();              break;
    case MENU_AUTO_POWER_DOWN_ADJ:   MAutoPowerDownAdjProc();     break;
    case MENU_ITEM_LANGUAGE_ADJ:     MLanguageAdjProc();          break;
        
        // Shorcut key proc
#if(_IR_ENABLE)        
    case ITEM_SHORTCUT_INPUTCH_NUM:  SInputCHNumber();            break;
    case MENU_VOLUME_SP:             MVolumeAdjProc();            break;
#endif        
    default:                                                      break;
    }
}
//------------------------------------------------------------

void MTVNoneProc()//GG	
{
    switch(ucKeyMessage)
    {
    case VK_MENU:        MTVNoneMenu();                 break;
	
    //case VK_LEFT:        MTVNoneLR(1);                  break;
    //case VK_RIGHT:       MTVNoneLR(0);                  break;
    case VK_LEFT:           stVDCColor.CurrentChannel = 0;
							MVolumeAdjLR(1);
//        					CTvAutoSearch();	//fenix
  						    break;
    case VK_RIGHT:        	stVDCColor.CurrentChannel = 0;
							MVolumeAdjLR(0);
//   					     	CTvAutoSearch();	//fenix
   							break;
    case VK_ENTER:       MTVNoneEnter();                break;
        
#if(_IR_ENABLE)        
        // Add adjust volume menu
        // Shortcut key proc
    case VK_IR_MUTE:
        SSetMuteState();
        ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
        break;

    case VK_IR_VOLDEC:
		MVolumeAdjLR(1);
      	break;
    case VK_IR_VOLINC:
		MVolumeAdjLR(0);
//        GotoAdjustVolume(); 
        break;
        
    case VK_IR_DISPLAY:
        CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
        break;
        
    case VK_IR_CHINC:
        CNextChannel();
        ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
        break;
        
    case VK_IR_CHDEC:
        CPrevChannel();
        ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
        break;
        
    case VK_IR_NUM0:
    case VK_IR_NUM1:
    case VK_IR_NUM2:
    case VK_IR_NUM3:
    case VK_IR_NUM4:
    case VK_IR_NUM5:
    case VK_IR_NUM6:
    case VK_IR_NUM7:
    case VK_IR_NUM8:
    case VK_IR_NUM9:
        STVInputCHNumber();                              break;
    case VK_IR_INPUTCH:  STVInputCHEnter();              break;
    case VK_IR_RETURN:  
						 stVDCColor.CurrentChannel = 0;
			             CTvAutoSearch();	//fenix
						 break;
	// STVReturnCH();                  break; 
#endif
    }
    
#if(_AUTO_POWER_DOWN)
    if (_NONE_MSG == ucOsdEventMsg && _MENU_NONE == ucOsdState && 0xff != ucAutoPowerDownTime)
        CShowTimer(); // Show auto power down timer
#endif
}
//------------------------------------------------------------
void MTVNoneMenu()
{
    InitOSDFrame();
    SelectState();
    DrawBrightPage();
    ucOsdState = MENU_ITEM_BRIGHT;
    ShowPageIndex(1,17);     
    COsdFxEnableOsd();
}
//------------------------------------------------------------
void MTVNoneLR(unsigned char LR)
{
    if(LR)
    {
        CPrevChannel();
        /*
        GotoAdjustBrightness();
        ShowPageIndex(1,17);*/
    }
    else
    {
        CNextChannel();
    }
    
    ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}    
//------------------------------------------------------------
void MTVNoneEnter()
{     
}
//------------------------------------------------------------

#if(_IR_ENABLE)        
//----------- Shortcut key proc ---------------------------
#define _INPUT_NO_NUMBER       0
#define _INPUT_ONE_NUMBER      1
#define _INPUT_TWO_NUMBER      2
#define _INPUT_THREE_NUMBER    3
void STVInputCHEnter(void)
{
    BYTE ucInputState    = _GET_INPUTCH_STATE()+1;
    
    // Reset input number and state
    ucCurrentInputNumber = 0;
    ucCurrentInputState  = _INPUT_NO_NUMBER;  // 0: no input number   1: input one number     2: input two number    3: input three number
    
    if (ucInputState > 3)
    {   // Input state err reset input state to input one channel -
        ucInputState = 1;
        _SET_INPUTCH_STATE(0);
        CEepromSaveOsdUserData();
    }
    
    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(30,30,38,1,0x01);
    
    Gotoxy(5, 1, BYTE_DISPLAY);         
    for(;ucInputState > 0;ucInputState--)
        OutputChar(0x2d);  // Show "-"
    
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
}

//---------------------------------------------------------
void SInputCHNumber(void)
{
    BYTE ucInputState = _GET_INPUTCH_STATE() + 1;
    
    switch(ucKeyMessage)
    {
    case VK_IR_NUM0:
    case VK_IR_NUM1:
    case VK_IR_NUM2:
    case VK_IR_NUM3:
    case VK_IR_NUM4:
    case VK_IR_NUM5:
    case VK_IR_NUM6:
    case VK_IR_NUM7:
    case VK_IR_NUM8:
    case VK_IR_NUM9:
        SInceptNumber(ucKeyMessage & 0x0f);
        break;
        
    case VK_IR_INPUTCH:
        ucInputState = ValueInRangeChange(1, 3, ucInputState, 1, 1);
        _SET_INPUTCH_STATE(ucInputState-1);
        CEepromSaveOsdUserData();
        
        // Reset input number and state
        ucCurrentInputNumber = 0;
        ucCurrentInputState  = 0;  // 0: no input number   1: input one number     2: input two number    3: input three number
        break;
    }
    
    SShowCurrentInputState(ucInputState);
    
    if (ucInputState == ucCurrentInputState)
    {
        BYTE ucMaxChannel = CloadMaxChannelNumber();
        
        ucOsdState = _MENU_NONE;
        CTimerDelayXms(200);
        
        ucPrevChannel =  stVDCColor.CurrentChannel;
        stVDCColor.CurrentChannel = (ucCurrentInputNumber > ucMaxChannel) ? ucMaxChannel : ucCurrentInputNumber;
        CSetTVChannel(stVDCColor.CurrentChannel);
        CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
        
        ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
    }
}

//---------------------------------------------------------
void SInceptNumber(const BYTE ucNumber)
{
    switch(ucCurrentInputState)
    { 
    case _INPUT_NO_NUMBER: // not input number
        ucCurrentInputNumber = ucNumber;
        ucCurrentInputState  = _INPUT_ONE_NUMBER;
        break;
        
    case _INPUT_ONE_NUMBER: // Input on number alrady
    case _INPUT_TWO_NUMBER: // Input two number alrady
        ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
        ucCurrentInputState  = (ucCurrentInputState == _INPUT_TWO_NUMBER) ? _INPUT_THREE_NUMBER : _INPUT_TWO_NUMBER;
        break;
        /*
        case _INPUT_TWO_NUMBER: // Input two number alrady
        ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
        ucCurrentInputState  = _INPUT_THREE_NUMBER;
        break;*/
    }
}

//---------------------------------------------------------
void SShowCurrentInputState(BYTE ucInputState)
{
    Gotoxy(5, 1, BYTE_DISPLAY); 
    
    switch(ucCurrentInputState)
    {
    case _INPUT_NO_NUMBER: // not input number
        for(;ucInputState > 0;ucInputState--)
            OutputChar(0x2d);  // Show "-"
        OutputChar(0x00);  // Show " "
        OutputChar(0x00);  // Show " "
        break;
        
    case _INPUT_ONE_NUMBER: // Input on number alrady
        CShowFiveNumber(ucCurrentInputNumber,1);
        break;
        
    case _INPUT_TWO_NUMBER: // Input two number alrady
        CShowFiveNumber(ucCurrentInputNumber,2);
        break;
        
    case _INPUT_THREE_NUMBER: // Input three number alrady
        CShowFiveNumber(ucCurrentInputNumber,3);
        break;
    }
}

//---------------------------------------------------------
void STVInputCHNumber(void)
{
    STVInputCHEnter();
    ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
    SInputCHNumber();
}

//---------------------------------------------------------
void STVReturnCH(void)
{
    pData[0]                  = stVDCColor.CurrentChannel;
    stVDCColor.CurrentChannel = ucPrevChannel;
    ucPrevChannel             = pData[0];
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
    ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}
#endif

//--------- TV MAIN PROC ----------------------------------
void MTVMainProc()
{
    switch(ucKeyMessage)
    {
    case VK_MENU:     
        CTvAutoSearch();//   MTVMainMenu(); 
										      break;
    case VK_LEFT:        MVolumeAdjLR(1);	break;
							//MTVMainLR(1);        break;	//fenix
    case VK_RIGHT:        MVolumeAdjLR(0);	break;       
							//MTVMainLR(0);        break;	//fenix
    case VK_ENTER:       MTVMainEnter();      break;
    }
}
//------------------------------------------------------------

void MTVMainMenu()
{
    
    AdjustState();
    // Enter Sub Item
    switch(ucOsdState)
    {
    case MENU_ITEM_BRIGHT:
        SLIDER1(BRIGHTNESS_GUAGE);
        ucOsdState = MENU_ITEM_BRIGH_ADJ;
        break;
    case MENU_ITEM_CONTRAST:
        SLIDER1(CONTRAST_GUAGE);
        ucOsdState = MENU_ITEM_CONTRAST_ADJ;
        break;
    case MENU_AV_HUE:
        SLIDER1(HUE_GUAGE);
        ucOsdState = MENU_AV_HUE_ADJ;
        break;
    case MENU_AV_SATURATION:
        SLIDER1(SATURATION_GUAGE);
        ucOsdState = MENU_AV_SATURATION_ADJ;
        break;
    case MENU_TV_SYSTEM:
        ucOsdState = MENU_TV_SYSTEM_ADJ;
        break;
    case MENU_SOUND_SYSTEM:
        ucOsdState = MENU_SOUND_SYSTEM_ADJ;
        break;
    case MENU_AUTO_SEARCH:       											   	
//	printData("MaxChannelNumber = %x",CloadMaxChannelNumber());			//fenix
        stVDCColor.CurrentChannel = 0;
//        CTvAutoSearch();
        ClearClientDisplay();
        SelectState();
        DrawAutoSearchPage();
        ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
        //   ucOsdState = MENU_AUTO_SEARCH_ADJ;
        break;
    case MENU_MANUAL_SEARCH:
        ucOsdState = MENU_MANUAL_SEARCH_ADJ;
        break;
    case MENU_TUNING:
        ucOsdState = MENU_TUNING_ADJ;
        break;
    case MENU_CHANNEL:
        ucOsdState = MENU_CHANNEL_ADJ;
        break;
    case MENU_SWAP:
        ucPrevChannel = stVDCColor.CurrentChannel;
        ucOsdState = MENU_SWAP_ADJ;
        break;
    case MENU_SKIP:
        ucOsdState = MENU_SKIP_ADJ;
        break;
    case MENU_BLUE:
        ucOsdState = MENU_BLUE_ADJ;
        break;
    case MENU_AUTO_POWER_DOWN:
        ucOsdState = MENU_AUTO_POWER_DOWN_ADJ;
        break;
        
    case MENU_ITEM_LANGUAGE:
        ucOsdState = MENU_ITEM_LANGUAGE_ADJ;
        break;
    case MENU_ITEM_RESET:              
        DoReset();
        SelectState();
        break;
    case MENU_ITEM_CLOSE:
        COsdFxDisableOsd();
        ucOsdState = _MENU_NONE;
        break;

⌨️ 快捷键说明

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