📄 ircmd.~c
字号:
/*************************************************************
** FILE
** ircmd.c
**
** DESCRIPTION
** splitted from ir.c, now all the IR (or global) functions
** are implemented here.
**
** Create: JJ
** Maintain: Kenny 2000/09/29
** Terry 2003.02.24 move file header to ircmd_h.h
** move util code to ircmd_util.c
** move amp. code to ircmd_amp.c
**
****************************************************************/
#include "ircmd_h.h"
#include "gpio.h"
#include "asf_if.h"
#include "lbaif.h"
#include "sinf.h"
#include "timer.h"
//#ifdef OP_UI
//#include "menu_func.h"
//#include "infobanner_func.h"
//#include "infobanner_def.h"
//#endif//
#ifdef JPG_EFFECT
#include "jpegeffect.h"
#endif
#ifdef USER_LOGO
#include "userlogo.h"
#endif
#ifdef SDRAM_16Mb_Mode
#include "memmap.h"
#include "memmap0.h"
#endif
#ifdef SPHE8202_ALL_TYPE_CARD_WRITE
extern BYTE card_browse_sign;//dingzhy 4-11-18 9:40
#endif
//dtb in 20030915
#ifdef SUPPORT_MIDI
#include "fsmidi.h"
#ifdef SUPPORT_MIDI_MENU_SEL
#include "fsMidiUI.h"
#endif
#endif
#ifdef SUPPORT_MP4
//#include "drm.h"
#ifdef DIVX_DRM
#include "DRM_UI.h"
#endif
#include "avi_if.h"
#endif
#ifdef SUPPORT_MULTI_PARTITION//liweihua 2004-11-2 20:45
#include "playmode.h"
#endif
#ifdef DVB1000_OSD_MENU //Maoyong 2004-10-19 14:32
#include "dvbmenu.h"
#include "sp_dtv.h"
#endif
#ifdef VOL_LED//HIMAGE1251
BYTE nLed_index=0;
#endif
#ifdef UPGRADE_TRAYOUT //joshua add 04-07-13
extern int trayout_flag;
#endif
#ifdef ONLY_SOUND_FIELD_KEY//zhaoyanhua add 03-10-29 15:37
#include "dsp3_if.h"
#define MAX_PAGE_ITEM 4
#define MAX_ITEM_SEL 11
BYTE surround_type = 0;
extern const UINT8 sound_item[MAX_PAGE_ITEM][MAX_ITEM_SEL];//include in sound.c
#endif
#ifdef ONLY_EQ_KEY//zhaoyanhua add 03-10-29 15:34
#include "dsp3_if.h"
#define MAX_PAGE_ITEM 4
#define MAX_ITEM_SEL 11
#define MAX_BAND 7
#define MAX_MUSIC 7
BYTE EQ_type = 0;
extern const UINT8 sound_item[MAX_PAGE_ITEM][MAX_ITEM_SEL];//include in sound.c
extern const UINT8 music_osd_set[MAX_MUSIC][MAX_BAND];
extern void SettingEqLevel(BYTE *);
extern void SettingEQType(BYTE type);
void SetEQ(void);
#endif
#if 0//def CNTR_5SPK_VOLUME
static int tVolumeL,tVolumeR; //wangfeng 2004-2-9 16:16
#endif
#ifdef MODIFY_OSD_SHOW_NEW_STYLE_WINDOW
extern void osd_init_newstyle_window_NTSC(void);
extern void osd_init_newstyle_window_PAL(void);
#endif
#ifdef IR_SWITCH_CD_USB_CF_OTHER //dingzhy 04-10-22
EXTERN BYTE now_valid_type;
#endif
#ifdef SUPPORT_PROLOGIC_II//zhaoyanhua add 2004-2-11 13:51
extern void setup_OffPrologic_II(void); //setup_tab.c
extern int setup_IsPrologicOn();
#endif// ifdef SUPPORT_PROLOGIC_II
#ifdef AUDIO_2CH_5_1CH//zhaoyanhua add 03-10-29 15:30
#define AUDIO_2CH 1
#define AUDIO_5_1CH 2
BYTE ChannelFlag = AUDIO_2CH;
extern void AudioSet2chOutput(void);//setup_tab.c
extern void AudioSet5_1chOutput(void);//setup_tab.c
extern void AudioSetPrologic_IIOutput(void);//setup_tab.c
extern int setup_IsSpkDownmixOff(void);
extern int setup_IsSpkStereo(void);
extern UINT8 setup_GetPrologicII(void);
#endif
#ifdef DIV_GOTO_DISPLAY//zhaoyanhua add 03-10-24 20:12
BYTE SearchPage = 0;
extern void ShowSearchPage(BYTE page,BYTE need_hi);
#endif
#ifdef HANYANG_LR_CHANGE_PAGE
extern void FSGUI_File2DirArea(void);
#endif
#ifdef SETUP_ON_OPEN_VALID
BYTE OpenFlag=0; //dingzhy for real open sign
#endif
#ifdef OFF_PROLIGIC_WHEN_TURN_KEY//zhaoyanhua add 2003-12-11 11:14
extern UINT8 setup_GetPrologicII(void);
#endif
#ifdef TWO_KEY_SWITCH_TWO_SUBTITLE //added by wangwei,2004-9-29 13:47
extern void sup_select_subtitles(int n);
extern void sup_select_channel_2(int chn);
int twoSubTTFlag = 0;
int IDTWO = 0;
#endif //TWO_KEY_SWITCH_TWO_SUBTITLE
#ifdef DYNAMIC_SPECTRUM //fengjl 3-10-29 20:56
extern BYTE band_onoff;
#endif
#ifdef NEW_PARENTAL_GUI//zhaoyanhua 2003-11-29 9:40
BYTE one_key_pass_play = 0;
#endif
#ifdef ROTATE_NOT_ZOOM//zhaoyanhua 2003-12-9 16:38
extern UINT8 Is_Rotate_State(void);
#endif
#if defined(SUPPORT_BASS_TREBLE)//xyy 2004-3-8
extern void ddx_ircmd_BassAdjust(int updown);
extern void ddx_ircmd_TrebleAdjust(int updown);
#endif
#ifdef JPEG_THUMBNAIL_MENU //Maoyong 2004-8-13 20:09
extern BYTE ThunmnailChkValidPrevNext(BYTE rx);
#endif
#ifdef USER_MPEG_LOGO //maoyong 2004.02.20
extern BYTE mpeg_logo_onoff;
#endif
#ifdef POLLING_10MS_SAVE_RESUME //Maoyong 2004.03.01
#define DVD_RSM_WRITE_SIZE (sizeof(same_disc_vob11_pos) + sizeof(pDSV->rsm_info[0]) + sizeof(resumeMSF) )
BYTE rsm_I2c_write_cnt = DVD_RSM_WRITE_SIZE;
#endif
#ifndef DVDRELEASE
//#define IRCMD_DBG 1
#endif
#ifndef IRCMD_DBG
#undef printf
#undef print_block
#define printf(f, a...) do {} while (0)
#define print_block(x,y) do {} while (0)
#endif
#include "ircmd_util.c"
#include "rsm_util.h"
#ifdef SUPPORT_REP_READ //Maoyong 2004.06.07
#include "read.h"
#include "func.h"
#endif
#ifdef DYNAMIC_SPECTRUM //zhaoyanhua add 03-11-1 15:30
void ClearShowSpectrum(void);
#endif
#ifdef NEWSTYLE_WINDOW
#include "osd_arc.h"
#endif
#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
#include "cardfs.h"
extern CARD_FILE cardFile;//liweihua 2004-4-5
extern CARD_INFO cardP;
#if defined(CF_CARD_WRITE) || defined(FAT_Write_UI)//|| defined(WRITE_USB)//liweihua mod 20031219
BYTE Select_Media;
BYTE pressnum_flag;
extern void show_switch(BYTE Select_Media); //wuxiaofeng
//extern void show_switch(void); //wuxiaofeng
#endif
#endif
#ifdef FAT_FILE_MODE
extern UINT16 fat_play_mode;
extern BYTE mode_menu_id;
#endif
#ifdef SUPPORT_SPI
#include "spi.h"
#endif
extern int setup_IsSpkDownmixOff(void);
extern void osd_init_prog(void);
extern void sound_init(void);
extern void sound_init_2(void);//wanghaoying 20030910
extern void run_save_total_sel(void);
extern void run_set_variable(void);
extern void run_set_variable(void);
extern void set_default_value(void);
extern void setup_SetPScan(void);
extern void SetIDETimeOut(UINT); //wanghaoying 2003-8-12 16:08 to declaration
extern void setup_eq_display(UINT8 val);
extern void sound_set_EQ_again(void);//nono 4-7-22 18:09
#ifdef NEWSTYLE_WINDOW
extern void browse_DrawRightItem(void);
extern void osd_draw_region_arc(ARC_REGION_LOC *loc_var,BYTE updown);
extern void osd_init_newstyle_window(void);
extern void exe_show_time(void);
extern void osd_draw_rect(UINT32 xStart, UINT32 yStart, UINT32 xLen, UINT32 yLen, BYTE bkColor);
extern void exit_browse_func(void);
//zhaoyanhua add 2003-12-7 19:01
extern void updateAudioLanguage(void);
extern void updateSubtitle(void);
extern void updateRepeatMode(void);
extern void UpdateAngleInfo(void);
#ifdef CLEAR_KEY_IN_WINDOW //Maoyong add 2004.02.18
extern void browse_func_clear(void);
#endif
#endif
#ifdef CD_PLAYER //liweihua add 2003-8-19 20:25
extern void show_cdplayer(void);
extern void osd_init_cdplayer(void);
#endif
#ifdef VIRTUAL_KEYBOARD //liweihua 2003-9-16
extern void show_virtual_keyboard(void);
extern void hl_keyboard_button(BYTE SelectID);
extern void osd_draw_virtual_keyboard(int xStart, int yStart,BYTE r);
#endif
#ifdef USE_PROLOGIC_II_KEY
extern BYTE prologic_val;//clead 2003-8-7
extern set_prologic_val(BYTE prologic_mode);
#endif
#ifdef IR_KEY_SET_VIDEO_MODE
extern void set_video_val(BYTE video_mode);
#endif//IR_KEY_SET_VIDEO_MODE
#ifdef CF_GPIO_CONTROL_COLOR
BYTE vfd_color; //wangap 20031031
#endif
#if defined(DISPLAY_REMAIN_TIME) //shawn 0227
int display_and_time=0;
BYTE display_flag = 0;
#endif
#ifdef SUPPORT_MIDI
extern int iMidiSpeed;
#endif
#ifdef DVD_SEQ_PLAY
extern BYTE dvd_menu_play;//wanghaoying for warning msg//terry,2002/5/2 04:02PM,new dvd play mode
#endif
#ifdef DOUBLE_TITLE//susu add 2003-8-22 9:03
extern void exe_double_title(void);
extern void exit_double_title(void);
#endif
#ifdef SPHE1000
extern BYTE from4189;
extern BYTE support_dvb_flag;
#endif
#ifdef DVB_SETUP
extern void SP_SetVolume(UINT8 volume);
#endif
#ifdef EASTWIN
extern UINT8 bINVERTER_POWER , bAMP_IS_ON, bPOWER_ON_MUTE_EXE;
#endif
/*Here deleted by xyy 2004-8-5*/
#if defined(NEXT_FORWARD_IN_A_KEY)||defined(NEW_NEXT_FORWARD_IN_A_KEY)
extern int rep_ir_times;
extern BYTE key_data_flag;
#endif
#ifdef SUPPORT_MP4
#include "irconfig.h"
int IsUserControlDisabledByTrickyPlay( UINT32 uiKey )
{ // 2004/10/07 yltseng
if( ( GetCurrentFileType() == CDROM_MP4 ) && ( !AVI_SUPPORT_TRICKY_PLAY() ) &&
( ( play_state >= VCD_STATE_NORMAL ) && ( play_state <= VCD_STATE_SLOW ) ) )
{
UINT16 aInvalidKey[] = {
IRC_BW_SLOW, IRC_AB, IRC_GOTO
#ifdef TWO_FUN_IN_ONE_VFD_KEY
IRC_VFD_NEXT, IRC_VFD_PREV,
#endif
};
int i = 0;
for( ; i <(int)(sizeof( aInvalidKey ) / sizeof( UINT16 )); i++ )
{
if( uiKey == aInvalidKey[i] )
return 1;
}
}
return 0;
}
#endif
/*Marked by maoyong 2004-9-24 9:51
//terry,2004/1/30 03:14PM
void call_full_scrn_fun(IRCMDFUNC *fun)
{
UINT32 i = 0x01, j;
for(j = 0; i < FULLOSD_MASK;)
{
#ifdef SUPPORT_FUNCTION_MENU
if((full_scrn & SETUP_PLUS) || (setup_menu_plus_timer))
{
fun[2]();
return;
}
else
#endif //end #ifdef SUPPORT_FUNCTION_MENU
if(full_scrn & i)
{
fun[j]();
return;
}
j++;
i <<= 1;
}
}
*/
/*
** IRCMD
*/
UINT32 ircmd_callback_check_generic(UINT32 func)
{
return func;
}
/*
** FUNCTION
** ircmd_post_func(UINT32 func)
**
** DESCRIPTION
** post a system command.
*/
//static void ircmd_post_func(UINT32 func)//kenny 2001/5/16 mark it
void ircmd_post_func(UINT32 func)
{
SetIDETimeOut(SHORT_TMOUT);//printf("set srv timeout tm = %d\n",SHORT_TMOUT);//terry,2003/7/17 11:17PM
#ifdef DISP_REGION_BOTTOM// feeling ,these funcs would change the disp region
if(func == ( (CMD_FUNC|CMD_FUNC_SELECT) )//these func would cause the display bottom to up, or up to bottom
||(func == (CMD_FUNC|CMD_FUNC_PLAY))
||(func == (CMD_FUNC|CMD_FUNC_MENU))
||(func == (CMD_FUNC|CMD_FUNC_STOP))
||(func == (CMD_FUNC|CMD_FUNC_RETURN)) )
{
/*if ((pFsJpeg->ControlArea == CNT_AREA_FILE) &&
((pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG)
#ifdef SUPPORT_NESGAME
|| (pFsJpeg->gifsFuncBtn == FS_FUNC_GAME)
#endif
#ifdef SUPPORT_FILE_SYSTEM_MODE
|| (pFsJpeg->gifsFuncBtn == FS_FUNC_OTHER)
#endif
#ifdef SUPPORT_MIDI
|| (pFsJpeg->gifsFuncBtn==FS_FUNC_MIDI)
#endif
))*/
{
if(t_disp)
{
osd_init();
DispCookOSD0(1);
}
}
}//end if(func == ( (CMD_FUNC|CMD_FUNC_SELECT) )
#endif
if (func)
{
if (ircmd_callback_check==NULL)
ircmd_callback_check = ircmd_callback_check_generic;
func = ircmd_callback_check(func);
#ifdef SUPPORT_MIDI_MENU_SEL //dtb
if(gIsMidiSelMenu) //(Is_MIDI_STATE())&&
{
//xlluo add for show invaild flag 04-5-9
extern BYTE bIsShowInvalid;
if(bIsShowInvalid==TRUE)
{
ir_select_number=0;
bIsShowInvalid =0;
invalid_key();
show_dvd_err();
}else if (bIsShowInvalid ==2)
{//show nothing
ir_osd_post_show =0;
bIsShowInvalid =0;
return;
}
// ;//null //ouyang 2004.07.31
} else
#endif
if(func==0)
{
ir_select_number=0;
invalid_key();
show_dvd_err();
}
}
if( (func)&&(!(func&0x20000)) )
{
if(cd_type_loaded==CDROM)
e_msf=0;
#ifdef SUPPORT_WMA
#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)//liweihua 2004-9-7 11:27
if((GetCurrentFileType() == CDROM_WMA) && (media_type == MEDIA_CARD))
AVD_SetMediaTimeout();
#endif
if (GetCurrentFileType() != CDROM_WMA)
#endif
AVD_SetMediaTimeout();//terry,2001/6/8 03:15PM ,we wait kernel code finish
#ifdef MONE_TIMEOUR_SRC
printf("ircmd_post_func timeout\n");
#endif
if(play_state==VCD_STATE_PAUSE){ //Jeff 20011004
chg2normal_play(PAUSE2NORM,TRANSFER);
}
if(!(func&0x10000))
PostCommand(func);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -