?? ir_drv.c
字號:
case 0x033:
rx+=0x15;
break;
default:
break;
}
}
else if(((regs0->iop_data[6]>>6)&0x5f) == IR_ADDR_PATT4)
{
switch(rx)
{
case 0x2c:
rx+=0x30;
break;
default:
break;
}
}
return rx;
}
#endif //CLEAD 2004-3-23
#ifdef IR_GBM_PHILIPS //added by wangwei,2004-8-16 20:09
UINT16 gbm_philips_ir_move(UINT16 rx)
{
desay_philips_ir_move(rx);
}
#endif //IR_GBM_PHILIPS
/*
* call ir post function (ir parser)
*/
#if defined(DEBUG_IR_CODE)||defined(IR_PHILIPS)
static inline BYTE Call_Ir_Fun(UINT16 rx)
{
#ifdef DESAY_PHILIPS_IR
rx=desay_philips_ir_move(rx);
rx = ir_mapcode[(BYTE) rx];
#ifndef IR_TOOL
printf("\n ir(705) rx = %x \n",rx);
call_ir_func(rx);
#endif
#elif defined(IR_GBM_PHILIPS)
rx=gbm_philips_ir_move(rx);
#ifdef DEBUG_IR_CODE//gerry add it for philips ir,2004-8-4 16:41
watch_ir_id(rx);
return;
#endif
rx = ir_mapcode[(BYTE) rx];
#ifndef IR_TOOL
printf("\n ir(705) rx = %x \n",rx);
call_ir_func(rx);
#endif
#else
#ifdef DEBUG_IR_CODE//gerry add it for philips ir,2004-8-4 16:41
watch_ir_id(rx);
return;
#endif
rx = ir_mapcode[(BYTE) rx];
#ifndef IR_TOOL
printf("\n ir(705) rx = %x \n",rx);
call_ir_func(rx);
#endif
#endif
return rx;
}
#else
static inline BYTE Call_Ir_Fun(UINT16 rx)
{
if(rx >= MAX_IR_MAP) // Out of MAP range?
return 0;
#ifdef TEST_VFD_PANNEL_AND_KEY//lijd 2005-5-8 13:53
if(Test_Front_Panel_flag==1)
{
TestIrData=(BYTE)rx;
if(Test_Stop_flag!=1)
{
if((rx!=0x11)&&(rx!=0x26)) return 0;
}else if(Test_Stop_flag==1)
{
if(rx!=0x11) return 0;
}
}
#endif
rx = ir_mapcode[(BYTE) rx];
#ifdef MALATA_KEY
rx= malata_key_check(rx);
#endif //end-> #ifdef MALATA_KEY
#ifdef DMA_DVD_SWITCH
extern void DMA_DVD_Switch(UINT16 rx);
DMA_DVD_Switch(rx);
#endif
#ifndef IR_TOOL
printf("\n ir(705) rx = %x \n",rx);
call_ir_func(rx);
#endif
#ifdef TONIC_DVD
if(rx==IRC_KEYLOCK)
ircmd_keylock();
#endif
return 0;
}
#endif
#ifdef USE_VFDPORT_TRANDATA //linrc add 2004-3-27 16:40
#define USE_VFDPORT_TRANDATA_return(); return IRC_NULL;
#else
#define USE_VFDPORT_TRANDATA_return();
#endif
#ifdef SUPPORT_SPI
#define SUPPORT_SPI_return(); return IRC_NULL;
#else
#define SUPPORT_SPI_return();
#endif
#ifdef TCL_VFD_GPIO//2004-3-22 12:49 lijd
#define call_SUPPORT_TCL_LED(); tcl_led();
#else
#define call_SUPPORT_TCL_LED();
#endif
static inline void NEXT_FORWARD_IN_A_KEY_short_time(UINT16 rx)
{
#ifdef NEXT_FORWARD_IN_A_KEY
if(bIrSkipState)
{
bIrSkipCnt++;
if(bIrSkipCnt>5)
{
if(rep_ir_times==0)
{
#ifdef NEW_NEXT_FORWARD_IN_A_KEY
rx = IRC_PREV + bIrSkipState -1;
#else//#ifdef NEW_NEXT_FORWARD_IN_A_KEY
rx = IRC_BACKWARD + bIrSkipState -1;
#endif//#ifdef NEW_NEXT_FORWARD_IN_A_KEY
ircmd_pre_paser(rx);
}
bIrSkipState = 0;
bIrSkipCnt = 0;
rep_ir_times = 0;
}
}
#else
if(rx) {}
#endif//NEXT_FORWARD_IN_A_KEY
}
static inline void NEXT_FORWARD_IN_A_KEY_long_time(UINT16 rx)
{
#ifdef NEXT_FORWARD_IN_A_KEY
bIrSkipCnt = 0;
if(rep_ir_times<=2)
{
rep_ir_times=2;
#ifdef NEW_NEXT_FORWARD_IN_A_KEY
rx = IRC_BACKWARD + bIrSkipState -1;
#else//NEW_NEXT_FORWARD_IN_A_KEY
rx = IRC_PREV + bIrSkipState -1;
#endif//NEW_NEXT_FORWARD_IN_A_KEY
//printf("run rx:%d \n",rx);
ircmd_pre_paser(rx);
}else if(rep_ir_times>3)
{
rep_ir_times = 1;
}
#else
if(rx) {}
#endif
}
#if defined(SUPPORT_DVB_GUI_NEW)&&defined(DVB_IR_3D_ON)
static inline BYTE is_available_key_in_3D_state(BYTE rx __attribute__((unused)))
{
if((ir_mapcode[(BYTE) rx]==IRC_SELECT) || (ir_mapcode[(BYTE) rx]==IRC_PLAY_SELECT)
||(ir_mapcode[(BYTE) rx]==IRC_UP) || (ir_mapcode[(BYTE) rx]==IRC_DOWN)
||(ir_mapcode[(BYTE) rx]==IRC_LEFT) || (ir_mapcode[(BYTE) rx]==IRC_RIGHT)
||(ir_mapcode[(BYTE) rx]==IRC_3D)
)
return 1;
return 0;
}
static inline BYTE InDVB3DNow(BYTE rx __attribute__((unused)))
{
if(!(full_scrn&SOUND))
return 1;
/*
if((ir_mapcode[(BYTE) rx]==IRC_SETUP) || (ir_mapcode[(BYTE) rx]==IRC_DISPLAY)
#ifdef DVB_IR_SCAN_KEY //sunzhh add 20051117
|| (ir_mapcode[(BYTE) rx]==IRC_GOTO)
#endif
#ifdef SUPPORT_DVB_PREVIEW_9FRAMES //sunzhh add 20051117
|| (ir_mapcode[(BYTE) rx]==IRC_PREVIEW)
#endif
*/
if(!is_available_key_in_3D_state(rx))
{
cancel_sound();
return 1;
}
return 0;
}
#endif
#ifdef SLOW_SOME_KEY_IN_MALATA_IR
void slow_key_update();
void slow_key_update()
{
if(clear_key == 1)
{
// printf_w("@@@@@@@@@@@ clear_count ++; clear_count:%d\n",clear_count);//20051207 tiany debug
clear_count --;
if(clear_count < 1)
{
clear_key = 0;
clear_count = 0;
// printf_w("@@@@@@@@@@@ clear_key = 0; @@@@@@@@@@@@@@@\n");//20051207 tiany debug
}
}
else
{
clear_count = 0;
}
}
#endif
/*
** FUNCTION
** polling_ir
**
** DESCRIPTION
** polling IR interface and store received IR command
** to IR receive queue
*/
#ifdef XM_MODEL //fcr 2005-11-3 17:39
extern unsigned char XMkey_release_hold;
#endif
//============by linson 2008-7-9==============
#include".\iptv\Vod_Iptv_Data.h"
#include".\iptv\Vod_Iptv_network.h"
#include".\iptv\Vod_Iptv_osd.h"
#include".\iptv\Vod_Ir_drv.h"
#include ".\iptv\h\iptv.h"
#include".\iptv\Vod_iptv_data_process.h"
#include".\iptv\Vod_Iptv_Ircode.h"
#include".\h\kernel.h"
//暫停和繼續播放測試
#define FAST2NORM 0x01<<0
#define PAUSE2NORM 0x01<<1
#define SLOW2NORM 0x01<<2
#define REALPLAY 1
extern int AUDIF_Set_Volume(UINT8 x);
extern void AUDIF_Set_Channel(int chn);
extern int AUDIF_AutoDownload_Codec(UINT8 chn);
extern int mp4_aud_channel_flg;
extern UINT32 file_aud_num;
extern UINT32 nGotoPck;
extern BYTE audioNotContinuous;
extern UINT32 (*file_goto_next_frame)();
extern int file_set_audio_stream(int aud_strm_num);
extern int ircmd_sub_picture2(void);
extern void chg2normal_play(UINT8 md,UINT8 realplay);
extern UINT16 Subp_stream_Chg_VOB(UINT8);
//重啟系統
extern void __boot_entry();
//goto時間
extern UINT32 nGotoPck;
extern int disp_time;
extern UINT32 GET_MP4_TIME();
//=============by linson 2008-7-9==============
/*******************************************************************
關閉電源
********************************************************************/
void vod_ircmd_power(){
vod_Socket_Disonnect(0);
vod_Socket_Disonnect(1);
delay_1ms(100);
ircmd_power();
}
/*******************************************************************
如果獲得IR紅外遙控碼
********************************************************************/
BYTE polling_ir(void)
{
UINT16 rx;
UINT16 unCustId;
rx = regs0->iop_data[IR_PORT];
// ==================below by linson 2008-7-17=================
//如果系統沒有開通
if(vod_system_is_activated == VOD_SYSTEM_NOT_ACTIVATED){
regs0->iop_data[IR_PORT] = rx & (~IR_RDY);
return 0;
}
//如果是收費視頻
if(vod_isVideo & VOD_VIDEO_Y){
//收費視頻的通知窗口
if(vod_video_isCharges ==VOD_VIDEO_CHARGES_NOTICE){
//if(vod_video_time_waiting_paid >= 100)
// vod_video_time_waiting_paid = 0;
if(vod_video_time_waiting_paid < 80){
vod_video_time_waiting_paid ++;
}
else{
vod_osd_video_charges_notice();
vod_video_isCharges = VOD_VIDEO_CHARGES_WAIT_FOR_PAID;
vod_video_time_waiting_paid = 0;
//等待用戶確定
vod_isVideo = (VOD_VIDEO_Y | VOD_VIDEO_Y_CHARGE);
}
}
//等待用戶確定
if(vod_video_isCharges ==VOD_VIDEO_CHARGES_WAIT_FOR_PAID){
if(vod_video_time_waiting_paid < 100) {
vod_video_time_waiting_paid ++;
if(vod_video_time_waiting_paid == 100){
//暫停播放
Pause();
play_state=VCD_STATE_PAUSE;
vod_osd_video_display(VOD_VIDEO_PAUSE);
}
}
}
}
// ===================above by linson 2008-7-17=================
//===========below當接收到IR 命令時執行=======================
if ((rx & IR_RDY))
{
printf_w("IR data:%04x\n",rx);
// ===================below by linson 2008-7-19===================
//寫回寄存器,清除前2字節
regs0->iop_data[IR_PORT] = rx & (~IR_RDY);
rx = rx & VOD_IRC_MASK;
//如果不是以下系列的遙控器則不執行以下代碼
unCustId=IOP_IR_DATA();
//printf_w("unCustId:%04x\n",unCustId);
if(!(unCustId == IR_ADDR_PATT_1 )){
printf_w("unCustId:%04x\n",unCustId);
return 0;
}
//如果是在屏保狀態下
if(vod_osd_direction_moving_scr_saver){
vod_recovery_from_screen_saver();
return 1;
}
//如果不是在屏保狀態下,屏保時間間隔復位
vod_osd_time_interval_scr_saver = 0;
//從遙控器數組中取值
rx = vod_ir_mapcode_1[rx];
//關機
if(rx == VOD_IRC_POWER){
vod_ircmd_power();
return 1;
}
/*
//屏保
if(rx == 0x68){
vod_osd_time_interval_scr_saver = VOD_TIME_INTERVAL_SCR_SAVER ;
vod_polling_screen_saver();
}
*/
#ifdef HOTEL_IPTV_SYSTEM
//如果技師IR
if(vod_technician_ir_handle){
switch(vod_technician_ir_handle){
case(VOD_TECHNICIAN_IR_HANDLE_TIME_UP):
return vod_logo_technician_time_up(rx);
break;
case(VOD_TECHNICIAN_IR_HANDLE_ADD):
return vod_logo_technician_add_service(rx);
break;
case(VOD_TECHNICIAN_IR_HANDLE_START):
return vod_logo_technician_start_service(rx);
break;
case(VOD_TECHNICIAN_IR_HANDLE_BOOK_NULL):
return vod_logo_technician_book_null(rx);
break;
}
}
#endif
//======如果在播放視頻========
if(vod_isVideo & VOD_VIDEO_Y){
return vod_video_ir(rx);
}
//======如果沒有在播放視頻=============
if(vod_isVideo == VOD_VIDEO_N) {
//如果是設置IP地址
if(vod_network_setIP){
return vod_ir_set_ip(rx);
}
if(vod_logo_ir(rx))
return 1;
}
return 0;
// ===================above by linson 2008-7-19===================
}
//=============above 當接收到IR 命令時執行======================
return 0;
}
//=============below by linson 2008-7-30==============
/*******************************************************************
如果在LOGO顯示的狀態下
********************************************************************/
BYTE vod_logo_ir(UINT16 rx){
/*
//在線更新
if(rx == VOD_IRC_TEMP1){
vod_tx_s1_command_init();
vod_tx_s1_command.bType = REQUEST_FILEINFO_SYSTEM;
vod_tx_s1_command_filename = "rom.bin";
vod_tx_s1_state = VOD_TX_SYS_UPDATE;
vod_tx_s1_command_queue_push();
}
*/
switch(vod_current_logo){
case(VOD_LOGO_1):
return vod_logo_1(rx);
break;
case(VOD_LOGO_11):
return vod_logo_11(rx);
break;
case(VOD_LOGO_12):
return vod_logo_12(rx);
break;
case(VOD_LOGO_13):
return vod_logo_13(rx);
break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -