📄 polling.c
字号:
/*
** FILE
** polling.c
**
** DESCRIPTION
** polling hardware response.
**
** HISTORY
**
*/
//#define MONE_TIME_DISP
//#define MONE_TIMEOUT
//#define MONE_MAKE_PICTURE
//#define MONE_DECODE
//#define MONE_DECODE_TIMING
//#define MONE_DECODE_ABV
//#define MONE_SKIP
//#define MONE_AUDIO_PART2
//#define MONE_FRAMERATE_PAUSE
//#define VFD_TIME_GOP
//#define MONE_STACK_OVERFLOW
#include "config.h"
#include "global.h"
#include "regmap.h"
#include "memmap.h"
#include "avd.h"
#include "util.h"
#include "stc.h"
#include "audio.h"
#include "cd.h"
#include "cddsp.h"
#include "ringbuf.h"
#include "dsa.h"
#include "sig.h"
#include "vfd.h"
#include "func.h"
#include "hwsetup.h"
#include "cfont.h"
#include "epp.h"
#include "iop.h"
#include "gpio.h"
#include "osd.h"
#include "set.h"
#include "servo.h"
#include "avapi.h"
#include "dma.h"
#include "cdfunc.h"
#include "ircmd.h"
#include "irconfig.h"
#include "cpu.h"
#include "stdlib.h"
#include "zigzag.h"
#include "framebuf.h"
#include "osdutil.h"
#include "fs9660.h"
/*
** FUNCTION PROTOTYPE DECLARATION
*/
//in osdutil.c
//extern void show_goto(BYTE);
#ifdef COMPRESS_MODULE
extern UINT16 IsFuduDrvLoad(void);
#endif
//in cddsp.c
extern int polling_cddsp(void);
//extern void setup_func_select(void);
extern void DispDiscTite(BYTE); //ZHX 061603
//in ogt.c
//extern int polling_ogt(void);
#ifdef SAMSUNG_SERVO
extern BYTE servo_recover_gotof;
#endif
//in ircmd.c
#if VFD_DRIVER==SPL10 //zhg 2002/10/16
extern BYTE Select_Dir_flag; //zhg 2002/09/26 13:50
#endif
#ifdef DIGITAL_DIRECT_SELECT
extern BYTE ircmd_post_func(UINT32);
#endif
extern void get_cdkit_time(BYTE);
extern void redraw_prog_page(void);
extern BYTE prog_page_action;
extern void __swap(void *func);
extern BYTE c_pos;
extern UINT16 mic_amplitude; //jhuang
//#ifdef SUPPORT_OGT
//extern UINT16 OGT_timer; //Joseph 20030226 modify for OGT display issue
//#endif
extern void set_dis_pic_id(BYTE);
void polling_gamepad(void);
#ifdef SUPPORT_CHECK_PIC_DECODE
void polling_pic_decode(void);
#endif
#if VFD_DRIVER==SPL10 //zhg 2002/10/16
//in vfd_turnkey.h
extern void UI_show_trk(BYTE mode);
//in vfd.c
extern BYTE vfdr_1s_timer;
#endif
#ifdef DEBUG_VFDSEG
int debug_lcd; //ZHX 033103
#endif
/*
** FUNCTION
** polling_timeout()
**
** DESCRIPTION
** check if timeout
**/
int polling_timeout()
{
if(timeout_playback)
{
if((get_rtc() >> 4) > timeout_playback)
{
if(GetIntrMask() & INTR_TIMEOUT)
{
SetIntrFlag(GetIntrFlag() | INTR_TIMEOUT);
}
AVD_SetMediaTimeout();
timeout_playback = 0;
}
}
return 0;
}
/*
** FUNCTION
** polling()
**
** DESCRIPTION
** pooling system status and issue decoding if able.
**/
#if VFD_DRIVER==SPL10 //zhg 2002/10/16
extern UINT16 stop_poweroff_timer;
#endif
int polling(void)
{
UINT32 diff;
UINT32 timenow;
static BYTE timer_10ms = 0, timer_1ms = 0 /*, indx = 0 */ ;
BYTE t_indx;
#ifdef MONE_STACK_OVERFLOW
int *p = (int *)(0xafff3d28);
#endif
timenow = regs0->stc_15_0;
diff = timenow ^ stc_polling;
stc_polling = timenow;
#ifdef SUPPORT_CD_DEBUG
GPIO_M_SET(2, 1); /* cd debug start */
GPIO_E_SET(2, 0);
if(GPIO_I_GET(2))
{
epp_write_wait("enter debug tool\n");
cd_debug_tool();
}
#endif
#ifndef SUPPORT_COMBO /* polling DSA interface */
polling_dsat(0);
#endif
#ifndef UNIX
if((diff & 0x0000fff8) == 0)
return 0; /* mask by 0xffe0 */
#endif
#ifndef SUPPORT_COMBO
//polling_dsar(0);//jhuang not used 2003/2/24
#endif
#if 1//ndef EMU_DEMO_BOARD
if(!(regs0->stamp & (1 << 14))) /* for power down */
{
for(timenow = 0; timenow < 5; timenow++)
{
if(regs0->stamp & (1 << 14))
break;
else if(timenow == 4)
{
int i;
GPIO_O_SET(38, 1);
while(1)
{
regs0->reset = 0x01;
for (i=0;i<0xfffff;i++);
}
}
}
return 0;
}
#endif
/* filter-entry (32 * 90kHz) */
#ifndef UNIX
if((diff & 0x0000ffe0) == 0)
return 0; /* mask by 0xffe0 */
#endif
/*EDO step motion,check cddsp when AVD not paused*/// 2003/3/24
#ifdef SUPPORT_ESP
if( (CDActive() && (!IsAVDPaused())) || (shock_state & (SHOCK_ENABLE/*|SHOCK_PAUSE*/)) )
#else
if(CDActive() && (!IsAVDPaused())) /* polling CDDSP interface */
#endif
polling_cddsp();//for CDDA ESP shock pause->play smooth
#ifdef SUPPORT_EPP_DBG
polling_epp();
#endif
if((!IsRPicStart && IsVPicEnd) || (GetIntrFlag() & INTR_TRACK_CHANGE)) //bondy 2002/4/3
{
if(GetIntrMask() & INTR_TIMEOUT)
{
polling_timeout();
if(IsAVDMediaTimeout())
{
if(switch_to_menu == 1)
{
set_dis_pic_id(0);
switch_to_menu = 0;
}
AVD_SetMediaInterrupt();
if((sys_cmd == 0) && (timeout_playback == 0))
PostCommand(CMD_FUNC | CMD_FUNC_TIMEOUT);
}
}
}
#ifdef SUPPORT_ESP
if(!(shock_state & SHOCK_ENABLE))
#endif
if(do_dec_video()) /* try decoding video frame */
{
;
}
/* 1 ms polling intrval */
if(TimeUp_1MS())
{
#if VFD_DRIVER==SPL10 //zhg 2002/10/16
vfd_BlinkHandle();
#endif
#ifdef SUPPORT_MP3_BUFFER_FULL_STOP /*move from servo code */
if(pause_flag == ESP_CDDSP_BUFFER_FULL) /* Buffer Full */
{
pause_flag = ESP_CDDSP_SERVO_SLEEP; /* In Sleep Mode */
cd_func_stop();
}
#endif
#ifdef SUPPORT_ESP/*矪瞶VCD ESP SHOCK粄﹚/铬瓂/钡瓂拜肈*/
if(speed_chg_end && (shock_state & SHOCK_ENABLE_VCD))
{
do_vcd_esp();
}
#endif
#ifdef NEW_SKATE_TRACK_HANDLE//jhuang 2003/3/11
#ifdef SUPPORT_ESP
if(!(shock_state & (SHOCK_ENABLE_VCD | SHOCK_ENABLE)))/*VCD ESPぃ祇ネ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -