📄 mst705Ȧ
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: IrFunc.c
[Date]: 05-Feb-2004
[Comment]:
Remote control function routines.
[Reversion History]:
*******************************************************************************/
#define _IRFUNC_C_
#include <intrins.h>
#include "types.h"
#include "keypaddef.h"
#include "global.h"
#include "ir.h"
#include "UserPref.h"
#include "menu.h"
#include "irfunc.h"
#include "msosd.h"
#include "tv.h"
#include "debug.h"
#include "power.h"
/*
BYTE IRKeyToNumber( BYTE ucCode )
{
switch( ucCode )
{
case IRKEY_0: return 0;
case IRKEY_1: return 1;
case IRKEY_2: return 2;
case IRKEY_3: return 3;
case IRKEY_4: return 4;
case IRKEY_5: return 5;
case IRKEY_6: return 6;
case IRKEY_7: return 7;
case IRKEY_8: return 8;
case IRKEY_9: return 9;
}
return 0xFF;
}
*/
#ifdef DVD_INTERFACE
code BYTE ComkeyMap[]={
#ifndef USE_SETUP_MENU_SAMER_KEY
//IRKEY_OSD_MENU,
#endif
IRKEY_TFTMODE,
IRKEY_INPUT,
//IRKEY_POWER,
IRKEY_OSD_MENU,
#ifdef USE_2314_CTRL_DVD_VOL
//IRKEY_VOL_UP,
//IRKEY_VOL_DOWM,
IRKEY_MUTE,
#endif
#ifdef USE_2314_TONE
IRKEY_TREB,
//IRKEY_BASS,
//IRKEY_SURROUND,
IRKEY_TONE,
#endif
};
BYTE bIrComKeyFunction(BYTE ucIrCode )
{
BYTE i;
BYTE ucKeyPass;
//BYTE ucIrKeyPad ;
ucKeyPass=IRKEY_DUMY;
if((g_ucMenuPageIndex==FactoryMenu)/*||(g_ucMenuPageIndex==RootMenu)*/
||((g_ucMenuPageIndex>=PictureMenu) &&(g_ucMenuPageIndex<=ClockMenu)))
{
return(ucIrCode);
}
for(i=0; i<sizeof(ComkeyMap); i++)
{
if(ComkeyMap[i] == ucIrCode)
{ //is commond key
return(ucIrCode);
}
}
printf("\r\ir code <%x>", ucIrCode); //hhuang
if(IsYPbPrInUse())
{
printf("\r\nDVD KEY <%x>", ucIrCode); //hhuang
if(g_ucMenuPageIndex<=ShowSourceMenu)
{
ucKeyPass=ucIrCode;
}
if(ucKeyPass != IRKEY_DUMY)
{ //is dvd key
IRSendInital(ucKeyPass);
printf("\r\nSEND IR <%x>", ucKeyPass); //hhuang
{
ucIrCode=IRKEY_DUMY;
}
}
}
#ifdef TV_ENABLE
else if((IsTVInUse()))
{
if(ucIrCode==IRKEY_CH_UP)
{
ucIrCode=IRKEY_OSD_UP;
}
else if(ucIrCode==IRKEY_CH_DOWN)
{
ucIrCode=IRKEY_OSD_DOWN;
}
if((g_ucMenuPageIndex<PictureMenu)||(g_ucMenuPageIndex>ClockMenu))
{
if(ucIrCode==IRKEY_OSD_RIGHT) ucIrCode=IRKEY_DUMY;
}
}
#endif
#ifdef RADIO_ENABLE
if(IsFMInUse()||(IsAMInUse())/*&&(g_ucMenuPageIndex==ShowRadioInfodMenu)*/)
{
if((ucIrCode == IRKEY_VOL_UP) ||(ucIrCode == IRKEY_VOL_DOWM)) return ucIrCode;
ucIrKeyPad=irChangeNunKey();
if(ucIrKeyPad!=0xff){
printf("\r\nradio num key <%x>", ucIrKeyPad); //hhuang
printf("\r\nradio state <%x>", _bTunerPreMode); //hhuang
vTunerKeyMap(ucIrKeyPad);
ucIrCode=IRKEY_DUMY;
return(ucIrCode);
}
for(i=0;i<sizeof(RadioIrkeyTbl)/2;i++)
{
if(RadioIrkeyTbl[i*2+1]==ucIrCode)
{ //is commond key
vTunerKeyMap(RadioIrkeyTbl[i*2]);
irDecodeRepaeat(IR_DELAY_TIME0);
ucIrCode=IRKEY_DUMY;
return(ucIrCode);
}
}
}
#endif
return(ucIrCode);
}
#endif
void irDecodeCommand(void)
{
BYTE ucRepeatFlag = 0;
BYTE ucirkeypad = KEY_NOTHING;
if (!_testbit_(g_bIrDetect))
return ;
#if (IR_FORMAT == IR_RC5 )
if(!g_bIrCommand)
return;
#endif
// ucTmp = IRKeyToNumber( g_ucIrCode );
#ifdef DVD_INTERFACE
if(g_ucIrCode != 0xff)
{
g_ucIrCode = bIrComKeyFunction(g_ucIrCode);
}
#endif
switch (g_ucIrCode)
{
case IRKEY_0:
ucirkeypad=KEY_IR_0;
break;
case IRKEY_1:
ucirkeypad=KEY_IR_1;
break;
case IRKEY_2:
ucirkeypad=KEY_IR_2;
break;
case IRKEY_3:
ucirkeypad=KEY_IR_3;
break;
case IRKEY_4:
ucirkeypad=KEY_IR_4;
break;
case IRKEY_5:
ucirkeypad=KEY_IR_5;
break;
case IRKEY_6:
ucirkeypad=KEY_IR_6;
break;
case IRKEY_7:
ucirkeypad=KEY_IR_7;
break;
case IRKEY_8:
ucirkeypad=KEY_IR_8;
break;
case IRKEY_9:
ucirkeypad=KEY_IR_9;
break;
case IRKEY_100:
ucirkeypad=KEY_IR_100;
break;
case IRKEY_OSD_MENU:
ucirkeypad=KEY_MENU;
ucRepeatFlag=_BIT0;
break;
case IRKEY_OSD_LEFT:
ucirkeypad=KEY_LEFT;
ucRepeatFlag=_BIT0;
break;
case IRKEY_OSD_RIGHT:
ucirkeypad=KEY_RIGHT;
ucRepeatFlag=_BIT0;
break;
case IRKEY_OSD_UP:
ucirkeypad=KEY_UP;
ucRepeatFlag=_BIT0;
break;
case IRKEY_OSD_DOWN:
ucirkeypad=KEY_DOWN;
ucRepeatFlag=_BIT0;
break;
case IRKEY_POWER:
ucirkeypad=KEY_POWER;
ucRepeatFlag=_BIT0;
break;
case IRKEY_DISPLAY:
ucirkeypad=KEY_IR_ShowINFO;
ucRepeatFlag=_BIT0;
break;
case IRKEY_MUTE:
ucirkeypad=KEY_IR_MUTE;
ucRepeatFlag=_BIT0;
break;
case IRKEY_INPUT:
ucirkeypad=KEY_SOURCE;
ucRepeatFlag=_BIT0;
break;
#if CALENDAR_ENABLE
case IRKEY_CALENDAR:
ucirkeypad=KEY_IR_CALENDAR;
ucRepeatFlag=_BIT0;
break;
#endif
#if GAME_ENABLE
case IRKEY_GAME:
ucirkeypad=KEY_IR_GAME;
ucRepeatFlag=_BIT0;
break;
#endif
default:
ucRepeatFlag=_BIT0;
break;
} // End of switch
if(g_bIrRepeat)
{
EventRepeatProcess(ucirkeypad, 2);
}
else
{
EventProcess(ucirkeypad);
}
if(ucRepeatFlag&_BIT0)
{
irDecodeRepaeat(IR_DELAY_TIME0);
}
else if(ucRepeatFlag&_BIT1)
{
irDecodeRepaeat(IR_DELAY_TIME1);
}
else
{
irDecodeEnd();
}
}
/////////////////////////////////////////////////////
#if TV_ENABLE
void irDecodeNumKey(void)
{
if (_testbit_(g_bIrKeyNumEnd))
{
//printf("\r\n g_bIrKeyNumEnd = %x", g_bIrKeyNumEnd);
if (IsTVInUse()) // TV only
{
Osd_Hide();
Power_TurnOffPanel();
Set_InputTimingChangeFlag();
Set_ShowSourceFlag();
TV_SelectChannel( g_ucIrNumKey );
}
else // clear key flag
{
g_bIrNumKeyStart = 0;
g_bIrKeyNumEnd = 0;
g_ucIr100Key = 0;
ResetOsdTimer();
}
} // if IR key end
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -