www.pudn.com > sunplus_mp3LOGO.rar > sysmain2.c
/*
** FILE
** sysmain2.c
**
** DESCRIPTION
** Main entry of DVD system firmware
**
** Maintain by terry , 2003.03.07
**
*/
#include "sysmain2_h.h"
#include "gpio.h"
#include "user_init.h"
#include "kinf.h"
#include "sinf.h"
#include "user_if.h"
#include "timer.h"
#ifdef POWER_ON_MUTE_MIC //axel 2004/2/26 04:10pm mute mic during initialization
#include "dsp3_if.h"
#endif
#include "mp3_logo.h"
#ifdef TP6317_PANNEL //yaowh add 04-10-25
extern BYTE TP6317_Power ; //flag
#endif
#ifdef SPHE1000
#ifdef DVB1000_NON_OS
#include "TunerDrv.h" //maoyong 2004-9-27 16:58
#include "sp_dtv.h"
#endif //DVB1000_NON_OS
//#define TEST_DVD
#define LINUX_USER_LOGO //MIKEY 2004.07.01
#endif //SPHE1000
#ifdef LINUX_USER_LOGO //MIKEY 2004.07.01
UINT8 f_check_user_logo=0;
UINT8 *user_logo_rom_addr=(UINT8 *)0x88080000;
UINT8 *user_logo_ram_addr=(UINT8 *)0x804e0000;
int user_logo_ram_size=(128*1024);
#define USER_LOGO_ROM_ADDR (user_logo_rom_addr)
#define USER_LOGO_RAM_ADDR (user_logo_ram_addr)
#define USER_LOGO_RAM_SIZE (user_logo_ram_size)
#endif
#if 1//def TEST_SERVO//nono 2004-3-30 19:13
#include "ircode.h"
#endif
#include "srv_test.c"
extern UINT8 volume_value;
#ifdef SUPPORT_RECEIVER //benson 2004/03/01
#include "dsp3_if.h"
#endif
#ifdef SUPPORT_APOGEE_AMP
#include "ddx8000.h"
#endif
#include "auddrv.h" //2004AUDDRV oliver 20041004 for using audio driver purpose
#ifdef SUPPORT_SPDIF_IN
#include "audif.h"
#endif
#ifdef SUPPORT_WMA
#include "asf_if.h"
#endif
//jslin //for QSI PIPO //20040901
#ifdef QSI_SHOW_ERR_RATE
#include "uart.h"
#endif
#ifdef DVB1000_OSD_MENU //Maoyong 2004-10-12 11:28
#include "dvbmenu.h"
#endif
//=========================
#if defined(SUPPORT_WMA) || defined(SUPPORT_MP4)
extern UINT32 nGotoPck;
#endif
//Maoyong 2004.03.05, move some resume relative declare/def to "rsm_util.h"
#ifdef CHECK_RECORD_DISK_PARENT_LVL //Maoyong 2004.03.04
extern BYTE CheckDiscParentLvl(void);
#endif
extern BYTE CheckLoadRsmInfo(void);
extern void RecordRsmPlay(void);
#if defined(AUDIO_2CH_5_1CH)&&defined(SUPPORT_PROLOGIC_II)//axel modified 2004/3/16 10:53am zhaoyanhua add 2003-12-17 9:47
extern int setup_IsSpkDownmixOff(void);//setup_tab.c
extern void AudioSet2chOutput(void);//setup_tab.c
#endif
#ifdef DYNAMIC_SPECTRUM //zhaoyanhua add 03-11-6 15:26
extern void Show3dspectrum(void);
#endif
#ifdef USER_MPEG_LOGO
extern UINT8 Is_User_Mpeg_Logo();
#endif
#ifdef CORTROL_VCD_ONF
extern int setup_IsVCD_OFF();
#endif
#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
extern BYTE IsCardMediaExist(void);
extern void SwitchMedia(BYTE direction);
#endif
#ifdef SUPPORT_REP_READ
#include "read.h"
#endif
#ifdef PROVIEW_GPIO_KEY
void set_proview_gpio_key(void);
#endif
void system_check_media_switch(void);
void system_check_source_switch(void);// for QSI disc\card switch //added by JS //20040727
#ifdef PMP_DVD //wthsin, 2004/11/9 07:19
UINT8 PMP_ENABLE=0;
extern void pc_usb_access_mode();
#endif //#ifdef PMP_DVD
#ifdef SUPPORT_Auo_Digital_panel
extern void init_auo_digital_panel(void);
#endif
#if defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE) //modefied by wangwei,2004-11-19 17:31(for storage no files screen refresh problem)
extern UINT8 MediaIsEmpty;
#define MEDIA_EMPTY 1
#define MEDIA_NOT_EMPTY 0
#endif
//=====================================================
//* debug option
//=====================================================
#ifndef DVDRELEASE
//#define SYSMAIN2_DBG 1
//#define MONE_LOGO
#endif
#undef FORCE_SKIP_VCD_MOSAIC//nono 4-6-9 0:35
#ifndef SYSMAIN2_DBG
#undef printf
#undef print_block
#define printf(f, a...) do {} while (0)
#define print_block(x,y) do {} while (0)
#endif
//=====================================================
//* var. and extern function decalare
//=====================================================
#include "sysmain2.h"
extern UINT8 Subp_stream_Chg(UINT8,int);
extern UINT16 Audio_stream_Chg_SVCD(UINT8);
//2004AUDDRV extern void init_mp3(void);
extern void do_mp3(void);
extern int AUDIF_Set_Play();//2004AUDDRV AudioSetPlay(); //huziqin 2004-2-26
extern int AUDIF_Set_Stop();//2004AUDDRV AudioSetStop(); //change type to int
extern void RsmInfo2Flash(int);
extern void LoadRsmInfo(void);
extern void LoadModual(UINT16);
extern void RS42Init();
extern void RS2420Init();
extern void DisplayScreenSaver();
#ifdef DVD_SERVO
extern UINT8 cServoWrongDataPass;
#endif
void SetDeInterlace(BYTE nVal);
extern void setup_SetSPDIFConfig();//nono 3-8-18 15:45
#ifdef CD_PLAYER //liweihua 2003-9-3
extern void show_cdplayer(void);
#endif
#if defined(CF_CARD_WRITE) || defined(SPHE8202_FAT_Write_Function)//|| defined(WRITE_USB)
extern BYTE read_card_sign,flag_cf2cd,flag_cd2cf; //xulf
#endif
#ifdef VIRTUAL_KEYBOARD//liweihua 2003-9-18
extern BYTE KeyID;
void hl_keyboard_button(BYTE SelectID);
void osd_draw_virtual_keyboard(int xStart, int yStart,BYTE r);
#endif
#ifdef LOGO_PLAY_MP3
int playindex;
#endif
BYTE logo_play_mp3_flag;
extern UINT8 power_on_mute;//terry 20030805
extern void set_video_default_offset(void);//wanghaoying 2003-8-12 20:21
extern void save_cmp_disc_info(UINT32 info1);//wanghaoying 2003-8-12 20:22
#ifdef SUPPORT_HDD_ACCESS
UINT8 f_force_browser=0;
UINT8 f_browser_mode=0;
#endif
#ifdef USE_PIN31_CONTROL_POWER_LED //gerry,2004-3-9 19:41
int gbm_gpio_led_flag;
#endif//USE_PIN31_CONTROL_POWER_LED
void show_osd_disc_type(void)
{//terry,2003/12/29 08:25PM
#if defined(JUST_SHOW_CD_TYPE)||defined(NOSHOW_CDROM_WHEN_DISP) //Not show CD Icon for NINTAUS Maoyong 2004.02.12
#ifdef NOSHOW_CDROM_WHEN_DISP//nono 2004-6-15 0:02
if(cd_type_loaded == CDROM)
#else
if(cd_type_loaded == CDDA)
#endif
{
osd_tog_region(REGION1, OSD_OFF);
return;
}
#endif
#ifdef GBM_DVD
PrintOsdMsg(osd_cd_id[cd_type_loaded],REGION1,2,0);
#elif defined(DVD_AUDIO) // alan, 2003/8/15 04:23PM, to distinguish DVD-VIDEO or DVD-AUDIO
#ifdef SHOW_DVD_ROM//NONO 4-2-10 19:08
if( (is_svo_dvd())&&(cd_type_loaded==CDROM) )
{
OSD1000ISP_STATUS(OSDISP_TYPE_DVDROM, OSDIR_CDTYPE);
psprintf(RegionValStr[REGION1], "DVDROM");
PrintOsdMsg(STR_OS_SPACE,REGION1, 1, 1);
}
else
#endif//SHOW_DVD_ROM
if (cd_type_loaded==CDDVD)
{
if (dAMG_LSN==0)
psprintf(RegionValStr[REGION1], "DVD-VIDEO");
else
psprintf(RegionValStr[REGION1], "DVD-AUDIO");
OSD1000ISP_STATUS(OSDISP_TYPE_DVD, OSDIR_CDTYPE);
PrintOsdMsg(STR_OS_SPACE,REGION1, 1, 1);
} else {
#ifdef DVD_SERVO
if ((cd_type_loaded == CDVCD10) && (is_svo_dvd()))
#else
if (cd_type_loaded == CDVCD10)
#endif
{
OSD1000ISP_STATUS(OSDISP_TYPE_DVD, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[CDDVD],REGION1,1,0);
}
else
{
OSD1000ISP_STATUS(cd_type_loaded, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[cd_type_loaded],REGION1,1,0);
}
}
#elif defined (FENGKAI_DVD)
///////clead 2003-8-27 17:31
printf("**--- cd_type_loaded:%d bDiscType:%d ---**\n",cd_type_loaded,bDiscType);
if((cd_type_loaded==CDSVCD)&&(bDiscType == CD_CVD))
{
OSD1000ISP_STATUS(OSDISP_TYPE_CVD, OSDIR_CDTYPE);
psprintf(RegionValStr[REGION1], "CVD");
PrintOsdMsg(STR_OS_SPACE,REGION1, 1, 1);
}else
{
OSD1000ISP_STATUS(cd_type_loaded, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[cd_type_loaded],REGION1,1,0);
}
#elif defined(SKYWORTH_DVD)
if(cd_type_loaded!=CDROM)
{
OSD1000ISP_STATUS(cd_type_loaded, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[cd_type_loaded],REGION1,1,0);
}
else
PrintOsdMsg(STR_OS_SPACE,REGION1,1,0);
#else//#ifdef GBM_DVD
#ifdef DVD_SERVO
if ((cd_type_loaded == CDVCD10) && (is_svo_dvd()))
#else
if (cd_type_loaded == CDVCD10)
#endif
{
OSD1000ISP_STATUS(OSDISP_TYPE_DVD, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[CDDVD],REGION1,1,0);
}
else
{
OSD1000ISP_STATUS(cd_type_loaded, OSDIR_CDTYPE);
PrintOsdMsg(osd_cd_id[cd_type_loaded],REGION1,1,0);
}
#endif//#ifdef GBM_DVD
}
//*******init ce2746 dac ******** wangap 2004/4/21
#ifdef CE2746
#define Chip_addr 0x6a
#define Register_addr 0x00
void init_ce2746()
{
int I2c_data1=0x01,I2c_data2=0x80;
WriteI2c(Chip_addr,Register_addr,I2c_data1,1);
delay_1ms(10);
WriteI2c(Chip_addr,Register_addr+1,I2c_data2,1);
}
#endif
//=====================================================
//* function decalare
//=====================================================
void InitVar(void)
{
//init pe engine
pe_run = 0;
// dVts_iso9600_addr = 0;//terry,2003/8/6 04:01PM
#ifdef TP6317_PANNEL //yaowh add 04-10-25
TP6317_Power = 0 ;
#endif
PE_ClearNav();
mpeg_audio=0;
dspWatchDog=DSP_WD_INIT;
#ifdef BAD_DISC_AUTO_STOP //terry,2003/8/31 12:00AM
bad_disc_auto_stop=0;
#endif
//init navigation
cd_subtype = CDROM_UNSUPPORT;
bDiscType=CDUNKNOWN;
still_timer=0;
#ifdef SUPPORT_MIX_MP3_CDDA
mp3_cd_end_trk = 0;
#endif
play_dir = 0;
Mp3ReadFinish=0;//mp3 ........
logo_play_mp3_flag=1;
fore_disp_time=-1;
jpg_slide_time = JPEG_SLIDE_TIME;//jpeg .......... wanghaoying 2003-8-26 20:21
#ifdef NO_BLACK_for_PIC_CD
pic_cd_first_play = 0;
#endif
bPbcOff=0; //vcd ..........
cd_trk_now=0;
cd_trk_hi=0xff;
cd_trk_lo_now=0;
cd_trk_lo=0;
dVMG_LSN = 0; //dvd.......
HL_exist=0;
read_sector=0;
dvd_error=0;
min_astn_id=0;//terry,2003/12/15 02:33PM
dvd_karaoke_mode = 0; //terry,2004/2/16 11:11AM
#ifdef DVD_AUDIO
dAMG_LSN = 0;
#endif
#ifdef TUNR_OFF_PARENTAL_LVL
bTurnOffParentalLVL=0; //terry,2002/9/20 11:40PM
#endif
#ifdef JUST_SHOW_CD_TYPE //Maoyong 2004.02.26
track_play_diff_time = 0;
#endif
#ifdef DVD_SEQ_PLAY
#ifdef AUTO_PLAY
extern BYTE auto_play_on();
if (auto_play_on())
dvd_menu_play = 0;
else
dvd_menu_play = 1;
#else
dvd_menu_play = 0;
#endif
#endif
// 2004/07/16 yltseng
wb_tag_init();
//init UI
init_ir_num();
goto_active=0;
mp3_user_select=0;
pFsJpeg->iso9660_file_cnt = 0;
disp_trk_now = 0;
Mp3_kbitrate=0;
bIntro=0;
//keep_cmd_code=0;
keep_cmd_code=IR_CODE_MAX_NUM;//2004-3-30 19:14
disc_st_time=0;
#if defined(IR_PLAY_RESUME) && defined(POWER_RESUME) //yw 021003
power_resumeflag = 0;
#endif
#ifdef SUPPORT_REP_READ //Maoyong 2004.06.03
InitRead();
#endif
#ifdef SUPPORT_BOOK
init_book();
#endif
goto_time = 0;//4-4-13 16:22
#ifdef OP_UI//zhaoyanhua 2004-5-24 17:35
prog_cnt = 0;
#endif
//nono move from ap_mian(): SYSTEM_READ_TITTLE.2004-2-27 12:00
coding_mode_now=AUDIF_CODING_MODE_NONE;//wangfeng 2003-12-19 17:44
#ifdef USE_PIN31_CONTROL_POWER_LED //gerry,2004-3-9 19:42
gbm_gpio_led_flag=0;
#endif//USE_PIN31_CONTROL_POWER_LED
nOldFst = 0; //Maoyong 2004.05.25 move from labif.c
#ifdef SUPPORT_WMA //Maoyong 2004.05.31 for WMA
asf_resume_pck = 0;
#endif
#if defined(SUPPORT_WMA) || defined(SUPPORT_MP4)
nGotoPck = 0;
#endif
//FS SWD
#ifdef SUPPORT_PLAY_SWD
START_POLLING_SWD = 0;
#endif
//OSD 16bit direct color
#ifdef SUPPORT_PS2
OSD_buffer_16bit = 0;
#endif
//initiate PS2 mouse
#ifdef SUPPORT_PS2
START_POLLING_PS2 = 0; //hold polling
mouse_pos_x = 180;
mouse_pos_y = 120;
mouse_btn_status = 0x0;
PS2_INIT_DONE = 0x0;
#endif
//==============================================
//for QSI source switch //added by JS //20040726
#if defined(QSI_PORTABLE_DVD) && defined(SUPPORT_CARD_STORAGE)
#ifdef SUPPORT_QSI_SOURCE_SWITCH
source_type_now = source_disc;
source_type_old = source_disc;
#endif
#endif
//==============================================
}
extern char _stextf[];
extern char _text_drv[], _text_drv_dvd[], _text_drv_ap[], _text_drv_iop[], _text_other[], _text_drv_cdrom[];
extern char _text_drv_srvdp[], _text_drv_ap2[], _text_drv_free[];
#include "kernel.h"
#define CUSTM_LOGO 0
#define SETUP_LOGO 1
UINT8 logo_type=CUSTM_LOGO;
extern const unsigned char Setup_Logo[];
//
// show logo
//
// Terry,2003/9/13 12:20AM
// integration mpeg logo/new style setup logo function
void ShowTitle()
{
BYTE *p;
UINT32 unOffset;
#ifdef NEW_STYLE_SETUP //terry,2004/2/17 11:09AM
UINT8 setup;
#endif
#ifdef MONE_LOGO
printf("logo in\n");
#endif
#ifdef LINUX_USER_LOGO //MIKEY 2004.07.01
if(f_check_user_logo==0) {
printf("INFO: f_check_user_logo USER_LOGO_ROM_ADDR=[%x]\n", USER_LOGO_ROM_ADDR);
f_check_user_logo=1;
p = (BYTE *) USER_LOGO_ROM_ADDR;
memset((BYTE *) USER_LOGO_RAM_ADDR, 0, USER_LOGO_RAM_SIZE);
if(*(p+0x80)=='T' && *(p+0x81)=='M') {
//printf("INFO: cp USER_LOGO_RAM_ADDR=[%x] USER_LOGO_RAM_SIZE=[%x]\n", USER_LOGO_ROM_ADDR, USER_LOGO_RAM_SIZE);
memcpyS((BYTE *) USER_LOGO_RAM_ADDR, (BYTE *) USER_LOGO_ROM_ADDR, USER_LOGO_RAM_SIZE);
//printf("INFO: cp USER_LOGO_RAM_ADDR=[%x] USER_LOGO_RAM_SIZE=[%x] OK!!\n", USER_LOGO_ROM_ADDR, USER_LOGO_RAM_SIZE);
f_check_user_logo=2;
}
}
#endif
LoadModual(MODUAL_MPEG);
show_logo=1;
Abort();
unOffset = ((UINT32 *)_stextf)[MODUAL_ROM3];
#ifdef NEW_STYLE_SETUP
#ifdef SDRAM_16Mb_Mode//zhaoyanhua add 2003-8-7 10:12
if((prog_state == 4 )||(prog_state == 5))
#else
if((setup_state == 1 )||(setup_state == 3))
#endif//SDRAM_16Mb_Mode
setup =1;
else
setup =0;
#endif//NEW_STYLE_SETUP
set_vpp_disp_size(0,0);
#ifdef NEW_STYLE_SETUP
if(setup)
{
set_video_aspect();
p = Setup_Logo;
logo_type = SETUP_LOGO;
printf("==============>display setup logo\n");
}
else
#endif
#ifdef USER_MPEG_LOGO
// alan, 2003/9/24 11:33AM
if(Is_User_Mpeg_Logo()) p=(UINT8 *)(ROM_BASE_UNCACHED+768*1024); //Flash offset addr 0x90000(for 080)
else
#endif
{
#ifdef LINUX_USER_LOGO //MIKEY 2004.07.01
p = (BYTE *) USER_LOGO_RAM_ADDR;
if(*(p+0x80)=='T' && *(p+0x81)=='M')
f_check_user_logo=3;
else
#endif
p = DVDTitle;
printf("Manufacture Logo\n");
#ifdef DOUBLE_LOGO
if(OsdIsEnglish()) p=DVDTitle1;
#endif
#ifdef CD_PLAYER //liweihua 2003-9-3
if((cd_type_loaded==CDDA)&&(play_state!=VCD_STATE_OPEN))
p=CDPlayerTitle;
#endif
}
PlayRomSlide(p);
#ifdef LOGO_STARTUP_VPP_NOW
startup_vpp_now();//nono 4-6-10 0:25 for ZOOMING IN,show logo startup_vpp_now.
#endif//LOGO_STARTUP_VPP_NOW
MediaMainLoop();
PlayRomSlide(p);
MediaMainLoop();
#ifdef NEW_STYLE_SETUP // alan, 2003/8/13 11:44PM
if(setup)
{//terry,0813
if(getVPP_TVsystem()) set_vpp_disp_size(720,540);
else set_vpp_disp_size(0,0);
}
#endif
#ifdef NEW_STYLE_SETUP
if(logo_type == CUSTM_LOGO)
#endif
tv_setup_misc(0);
reset_sup();
Sync();
show_logo=0;
set_video_default_offset();
startup_vpp();
#ifdef NEW_STYLE_SETUP
if(setup==0)
logo_type = CUSTM_LOGO;
#endif//#ifdef NEW_STYLE_SETUP
#ifdef MONE_LOGO
printf("logo out\n");
#endif
//gy 08/11 for MPE_LOGO
Clear_Mp3_Logo_End();
}
#ifdef LOGO_PLAY_MP3
void Show_Logo_Play_MP3()
{
extern const unsigned char LOGO_MP3[];
extern const unsigned char LOGO_MP31[];
int a;
static BYTE iCount;
/*Play Background MP3*/
#define PlayLen 3
//int b=sizeof(LOGO_MP3);
//printf("MP3 size=%d\n",b);
for(a=0;a=0)||(DiscType == CDDVD) )
#else
if(Res>=0)
#endif
{
Res=check_cdtype();
#ifdef SYSMAIN2_DBG
if (cd_type_loaded != CDDVD) {
printf("check_cdtype:after disc_init, DVD xxx, dVMG_LSN=%x\n", dVMG_LSN);
} else {
printf("check_cdtype:after disc_init, DVD ooo, dVMG_LSN=%x\n", dVMG_LSN);
}
printf("check_cdtype:Res=%d, cd_type_loaded=%x\n", Res, cd_type_loaded);
#endif//SYSMAIN2_DBG
disc_time=M2I(gettrkmsf_leadout()); //terry 891004
if(cd_type_loaded!=CDDVD)//terry,2003/8/7 03:57PM
save_cmp_disc_info(disc_time);
}
}else
{
Res=0;
}
}
if (is_user_opened())
Res = -1;
#ifdef SUPPORT_CD_TEXT
else
read_cd_text();
#endif
#ifdef DIP_CFG_ENABLE
SetDeInterlace(dip_sel);
#else
dip_enable = 0;
#endif
if( (cd_type_loaded==CDVCD10)&&( (cd_trk_hi<1)||(cd_trk_hi>100) ) )
{//terrry,2003/12/30 11:00AM
printf("toc err\n");
cd_trk_hi = 1;
cd_type_loaded=CDROM;
}
return Res;
}
//detect tray function subroutin
UINT8 is_user_opened(void)
{
//printf("no_disk_cnt:%x s:%x p:%x\n",no_disk_cnt,system_state,play_state);
if( (no_disk_cnt==DETECT_TIMES)||(system_state==SYSTEM_POWER) )
return TRUE;
else
{
return FALSE;
}
}
UINT8 is_test_unit(void)//2001/10/23
{
//if(no_disk_cnt!=DETECT_TIMES&&no_disk_cnt!=0)
//if((no_disk_cnt!=DETECT_TIMES&&no_disk_cnt!=0 )||(atapi_p_mechanism_status()==2)) //he qiang,4-2-11 1:07,avoid displaying "CLOSE" when should show "LOAD" on VFD when a poor disc is put in.
//if((no_disk_cnt!=DETECT_TIMES&&no_disk_cnt!=0 )||(atapi_p_mechanism_status()==2)||(atapi_p_mechanism_status()==1)) //he qiang,4-2-11 10:23,avoid displaying "CLOSE" when should show "LOAD" on VFD when a poor disc is put in.
if((no_disk_cnt!=DETECT_TIMES&&no_disk_cnt!=0 )||(atapi_p_mechanism_status()==ATAPI_DOOR_CLOSE)||(atapi_p_mechanism_status()==ATAPI_ERROR)) //he qiang,4-2-11 10:25,avoid displaying "CLOSE" when should show "LOAD" on VFD when a poor disc is put in.
return TRUE;
else
return FALSE;
}
void close_tray_init(void)
{
#ifdef WHEN_READTOC_AUTO_EXIT_SETUPPAGE
if((full_scrn&SETUP) || (full_scrn&CUSTM))
{
ExitSetupPage(1); //dingzhy for tonic auto close setup menu 2004-2-5 2:40
}
#endif
OSD1000ISP_STATUS(OSDISP_READ, OSDIR_GLOBAL);
PrintOsdMsg(STR_OS_READ,REGION1,0,0);
sys_cmd=(CMD_FUNC|CMD_FUNC_CLOSE);
CDSetStop();
play_state=VCD_STATE_CLOSE;
no_disk_cnt=DETECT_TIMES;
#if defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)//liweihua add 20031223
if(!(card_plug_state&USER_DO_PLUG_OUT)){
printf("ENTER COLSE TRAY INIT!\n");
card_plug_state |= USER_DO_PLUG_IN;
}
#endif
}
//BYTE gbCloseTrayFail = 0;//terry 2003-7-31 0:55
#if DISC_SYSTEM==DISC_SYSTEM_ATAPI
void test_atapi_drv_rdy(void)
{
int test_ready_ret;
UINT8 door;
test_ready_ret=atapi_p_test_unit_ready();//start up loader
delay_srv_10ms(15); //
door = atapi_p_mechanism_status();
if( door==ATAPI_DOOR_CLOSE )
{//tray close
#ifdef SYSMAIN2_DBG
printf("cnt: %x\n",no_disk_cnt);
#endif
if(no_disk_cnt==0)
{
close_tray_init();
}else if(no_disk_cnt==1)
{
#ifdef HOBO_DVD //Jefftest 20020930
if (test_ready_ret != 2)
play_state=VCD_STATE_CLOSE;
else
#endif
play_state=VCD_STATE_IDLE;
system_state=SYSTEM_NODISC;
}else
{//test
no_disk_cnt--;
if(test_ready_ret==0)//unit is ready or not
{
// set feature
#ifdef SYSMAIN2_DBG
printf("system read title\n");
#endif
#ifdef TONIC_DVD
if((full_scrn&SETUP) || (full_scrn&CUSTM))
{
ExitSetupPage(1); //dingzhy for tonic auto close setup menu 2004-2-5 2:40
}
#endif
OSD1000ISP_STATUS(OSDISP_READ, OSDIR_GLOBAL);
PrintOsdMsg(STR_OS_READ,REGION1,0,0);
drv_do_set_features();
if(!is_user_opened())
{
system_state=SYSTEM_READ_TITLE;
no_disk_cnt=0;
extern UINT8 old_cd_type; //2004/10/01 yltseng, set this value in order to let hostx_servo_buf_init() really reconfig/clear data
old_cd_type=0xff;
}
}
else if((test_ready_ret==ATAPI_NO_MEDIA)&&(no_disk_cnt>1)&&!CDOpened())//NO disc
{
if(no_disk_cnt>NO_DISC_TIMES)
{
no_disk_cnt-=NO_DISC_TIMES;
}else {
no_disk_cnt=1;
}
}
}
}else if( door==ATAPI_DOOR_CLOSE_ERR )//terry 2003-7-31 0:55
{
// printf("~~~~~~~~~~~open~~~~~~~~~~:%x\n",door);
// gbCloseTrayFail=0;//terry 2003-7-31 0:55
ircmd_trayout();
}else
{
no_disk_cnt=0;
#ifdef NO_DVD_SERVO //ycwen 2004/08/10
system_state=SYSTEM_NODISC;
#else
no_disk_cnt=0;
#endif
} //if(atapi_p_mechanism_status()==2)
}
#elif DISC_SYSTEM==DISC_SYSTEM_AVB
void test_avb_drv_rdy(void)
{
int test_ready_ret;
if(is_tray_close())
{//tray close
#ifdef SYSMAIN2_DBG
printf("cnt: %x\n",no_disk_cnt);
#endif
test_ready_ret=is_ready2play();
if(no_disk_cnt==0)
{//read disc
close_tray_init();
}else if(no_disk_cnt==1)
{//
play_state=VCD_STATE_IDLE;
system_state=SYSTEM_NODISC;
}else
{//test
no_disk_cnt--;
if(test_ready_ret)//unit is ready or not
{
no_disk_cnt=0;
// set feature
#ifdef SYSMAIN2_DBG
printf("system read title\n");
#endif
OSD1000ISP_STATUS(OSDISP_READ, OSDIR_GLOBAL);
PrintOsdMsg(STR_OS_READ,REGION1,0,0);
system_state=SYSTEM_READ_TITLE;
}
else if( is_no_disc()&&(no_disk_cnt>1)&&!CDOpened() )//NO disc
{
if(no_disk_cnt>NO_DISC_TIMES)
no_disk_cnt-=NO_DISC_TIMES;
else
no_disk_cnt=1;
}
}
}else
no_disk_cnt=0;
}
#endif
//terry,2003/8/14 12:22AM
void power_on_gpio_demute(int demute)
{
if( power_on_mute&&((system_state==SYSTEM_NODISC)||(demute)) )
{//terry,2003/8/14 12:10AM
if(system_state==SYSTEM_NODISC) AUDIF_Init_CDDA();//2004AUDDRV init_cdda();//terry,for bbk
power_on_mute=0;
#ifdef POWER_ON_MUTE_MIC //axel 2004/2/26 04:10pm mute mic during initialization
AUDIF_Set_MICVol(mic_volume);//2004AUDDRV AudioSetMICVol(mic_volume);
#endif
GPIO_DEMUTE();
setup_SetSPDIFConfig();//2003-8-15 20:56 for avoid SPDIF noise when power on.
}
}
/*
CheckRecordKey
CheckDiscParentLvl
Maoyong 2004.03.05 move to IR_VFD\rsm_util.h
*/
//
// interface setup
//
#if defined(SPHE8202_CARD_STORAGE)
//#define SPHE8202_216PIN //wthsin, 2004/2/23 10:49am
//#define SPHE8202_256PIN //wthsin, 2004/2/23 10:49am
extern void Card_gpio_init();
void setup_8202_card_storage_interface()
{
#if defined(CARD_SETUP_TYPE_1)||defined(CARD_SETUP_TYPE_2)
regs0->sft_cfg7 = regs0->sft_cfg7 | 0x2; // Set FM 256-PIN package
regs0->fm_gpio_mode = 8; // Set FM GPIO TABLE to ALL IN ONE case
regs0->fm_gpio_len = 12 // Set FMGPIO_B[41:0] turn on
| (0xf << 4); // Set FMGPIO_B[41:0] enable
#elif defined(CARD_SETUP_TYPE_3) ||defined(CARD_SETUP_TYPE_5)
regs0->sft_cfg7 = regs0->sft_cfg7 & (~0x2); // Set FM 256-PIN package
regs0->fm_gpio_len = 11 // Set FMGPIO_B[26:0] turn on
| (0xf << 4); // Set FMGPIO_B[26:0] enable
#elif defined(CARD_SETUP_TYPE_4)
regs0->sft_cfg7 = regs0->sft_cfg7 & (~0x2); // Set FM 256-PIN package
regs0->fm_gpio_len = 3 // Set FMGPIO_B[5:0] turn on
| (0x1 << 4); // Set FMGPIO_B[5:0] enable
//regs0->gpio_mode_B=0;
#endif
Card_gpio_init(); //wthsin, 2004/3/24 04:55pm
}
#endif
#if defined(SUPPORT_CARD_STORAGE)
void setup_card_storage_interface()
{
if(regs0->stamp==1) //Version-B ,wthsin 10/18
regs0->pcmcia_iorw_wait = 0x2222; // Must be 0x2222 in 8200B, setup and hold time for both ior, iow is 0xf,
else
regs0->pcmcia_iorw_wait = 0xffff;
regs0->wait_cyc1_0 = regs0->wait_cyc1_0 | 0x3f00; // maximum cs timing for R_CS2_B
regs0->wait_cyc3_2 = regs0->wait_cyc3_2 | 0x003f; // maximum cs timing for R_CS3_B
}
#endif
#if defined(SUPPORT_USB)&&defined(HOST_SL811HS) //wthsin, 2004/1/12 01:36pm
void setup_usbhost_sl811hs_interface()
{
regs0->oe_wait_cyc1_0=regs0->oe_wait_cyc1_0|0x3200;
regs0->we_wait_cyc1_0=regs0->we_wait_cyc1_0|0x3200;
regs0->wait_cyc1_0 = regs0->wait_cyc1_0 | 0x1f00; // maximum cs timing for R_CS2_B
regs0->rom1_base = 0x100; // rom2 n*64k-base ,pcmcia
regs0->rom2_base = 0x160; // rom2 n*64k-base ,pcmcia
regs0->rom3_base = 0x200; // rom3 n*64k-base ,pcmcia
regs0->rom_config = 0x7000; // pcmcia,rom2,3
}
#endif
//
// setup supporting for extra interfaces
//
void
init_extra_interface() //terry,2004/2/18 10:12AM
{
#if defined(SPHE8202_CARD_STORAGE)
setup_8202_card_storage_interface();
#elif defined(SUPPORT_CARD_STORAGE)
setup_card_storage_interface();
#elif defined(SUPPORT_USB)&&defined(HOST_SL811HS) //wthsin, 2004/1/12 01:36pm
setup_usbhost_sl811hs_interface();
#endif
}
void dvd_startup(void)//20040316
{
disc_time = 0xefff;//terry 891004
#ifdef TOP_DOOR_LOADER
#ifdef SUNPLUS_8202P_DEMOBOARD
regs0->sft_cfg4 &= ~((0x03)<<2); //Enable GPIO2,3 For COVER & TFT SW
#endif
bDoorStatus = GPIO_GET_DOOR_STATUS();
if (bDoorStatus==DOOR_OPEN) {
OSD1000ISP_STATUS(OSDISP_OC_OPEN, OSDIR_OPEN);
PrintOsdMsg(STR_OS_OPEN,REGION1,0,0);
//SERVO_LDOff();//maybe use it.
//SERVO_STSledHome();//maybe use it.
ircmd_trayout();
play_state=VCD_STATE_OPEN;
} else {
ircmd_trayin();
play_state=VCD_STATE_CLOSE;
}
#else
#if !defined(SPHE1000)
PrintOsdMsg(STR_OS_READ,REGION1,0,0);
#endif
play_state=VCD_STATE_CLOSE;
#endif //#ifdef TOP_DOOR_LOADER
#ifdef REPEAT_RESET_IOP //zhaoyanhua add 2004-2-13 13:59 //fengjl edit 2004-02-27 15:49
//only for DSS 555(VFD Driver: NEC 16312)
//This vfd is very strange! When power switch between on and off
//more than 20 times, it will not show VFD informaiton again!
//we found it that the data which IOP send to 16312 is abnormal,
//so reset IOP here.
reset_iop();
reset_ir();
reset_vfd();
#endif //ifdef REPEAT_RESET_IOP
#ifdef CE2746
init_ce2746();
#endif
//
// CONTROL FLOW
//
AVD_ResetMediaStatus();
ClearCommand();
no_disk_cnt=DETECT_TIMES;
#ifdef DVB1000_NON_OS
system_state=SYSTEM_TS;
#else
system_state=SYSTEM_OPEN;
#endif
//play_state=VCD_STATE_CLOSE;
sys_cmd=CMD_FUNC|CMD_FUNC_CLOSE;
// init_audio_dsp_coding_mode();
power_on=2;
}
/*
** FUNCTION
** main()
**
** DESCRIPTION
** main function... what else?
*/
#ifdef SUPPORT_RECEIVER
#include "sysmain_receiver.c" //huziqin 2004-3-12
#endif
#ifdef SUPPORT_POWER_OFF_CLOCK_FUNC //xyy 2004-10-11 17:18
#include "clock_func.c"
#endif
#ifdef DVB_SETUP
UINT8 eBuffer[128];
void SP_SetVolume(UINT8 volume);
#endif
#ifdef QSI_SHOW_ERR_RATE
#include "sysmain2_QSI.c"
#endif
#ifdef AUTO_ADJUST_TV_TYPE //lijd 2004-9-15 13:27
extern BYTE Adjust_TV_type ;
#endif
#ifdef QSI_SUPPORT_SLOT_TEST
extern BYTE SERVO_GetRunInState(void);
BYTE is_do_slot_test(void)
{
if(SERVO_GetRunInState()==PRODUCTION_RUNIN_ST_IS_SLOT_TEST)
{
return(1);
}
return(0);
}
#else
#define is_do_slot_test() 0
#endif
void ap_main(void) // benson update 2004/3/1 04:25¤U¤È
{
#ifdef DVB_SETUP
UINT8 i;
#endif
int Res,continue_run_nav,mode,cmd;
int test_ready_timer=DEV_RDY_TM;
#ifdef RECORD_PER_SECOND
resume_time_ourmind=0;
#endif
#ifdef LOGO_PLAY_MP3
BYTE old_system_state=0; //for mp3
BYTE play_mp3_flag=0;
int mp3_count=0;
#endif
#ifdef QSI_SUPPORT_SLOT_TEST //qsi: added by johnson 20040719
unsigned int slot_test_cnt=0;
#endif
#ifdef SYSMAIN2_DBG
printf("---------------- AP main , in ---------------\n");
#endif
#ifdef NO_DVD_SERVO
servo_turn_off();
#endif
#ifdef SUPPORT_APOGEE_AMP //huziqin 2004-2-26
//disable external amplifier
ddx_disableEPAD();
//mute all channels
ddx_masterMute(1);
ddx_initialization();
ddx_masterMute(0);
ddx_enableEPAD();
#endif
#ifdef SUPPORT_POWER_OFF_CLOCK_FUNC//xyy 2004-10-12
Pcf8563Init();
#endif
#ifdef SPHE1000
volume_init(); // barry move here
#ifdef DVB1000_NON_OS //Maoyong 2004-9-27 16:57
tuner_init();
FtaInit();
#endif
#endif
//
// set default audio coding-mode (download decoder)
delay_srv_10ms(30);//maybe we need more time,gerry,2004-4-15 13:53
AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DEFAULT);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DEFAULT);
#ifdef POWER_ON_MUTE_MIC //axel 2004/2/26 04:10pm mute mic during initialization
AUDIF_Set_MICVol(0);//2004AUDDRV AudioSetMICVol(0);
#endif
#ifdef MIC_2CHANNEL //gerry add it for setting mic vol,2004-7-6 9:34
#include "dsp3_if.h"
AUDIF_Set_MICVol2(setup_GetMICVol2()-2);//2004AUDDRV AudioSetMICVol_2(setup_GetMICVol2()-2);
AUDIF_Set_MICVol(setup_GetMICVol()-2);//2004AUDDRV AudioSetMICVol(setup_GetMICVol()-2);
#endif
//
// initialize interfaces
init_extra_interface();
//
// initialize servo
init_srv_test_mode();//terry,2003/9/10 12:17AM
//
// initialize hardware.
play_state=VCD_STATE_POWER;
#ifndef SPHE1000
volume_init();
#endif
//include tuner/amp/mic
#include "sysmain2_inc.h"
//
// start OSD
//
#if SUPPORT_OSD
#ifdef DYNAMIC_SPECTRUM //zhaoyanhua add 2003-12-4 9:26
if(bEqDisplay)
Show3dspectrum();
else
#endif//end DYNAMIC_SPECTRUM
osd_init();
#ifdef OP_UI//zhaoyanhua add 2004-2-26 10:28
InitMainMenu();
#endif//ifdef OP_UI
#endif
//had move to sysmain.c sleep_when_power_on(); Jeff mark 20040312
/*
#if defined(SLEEP_WHEN_POWER_ON) //20040206
{
volatile int *iMagic=(int *)(DATA_RAM_BASE|0x90);
if( *iMagic != 0x1234abcd)
{
ircmd_power();
}
*iMagic=0;
}
#endif
*/
// Simon: Receiver-related code here
// Receiver does not have to start in DVD mode
#ifdef SUPPORT_RECEIVER
receiver_startup();
#else
dvd_startup();
#endif
/*
move to sysmain.c
//WSF ADD 2004-7-27 20:32
*/
#ifndef AFTER_UPGRADE_TRAYOUT
#ifdef RESET_AFTER_UPGRADE
{
volatile int *iMagic = (int *)(DATA_RAM_BASE|0x80);
if (*iMagic == 0x1881) ircmd_trayout();
*iMagic = 0;
}
#endif
#endif
/*huziqin removed 2004-2-26*/
#ifdef GBM_DEFAULT_NTSC_CAPTION_OFF //gerry,2004-2-13 14:18
tv_l21_enable(0);
#endif//GBM_DEFAULT_NTSC_CAPTION_OFF
//#if defined(CARD_MASTER) && defined(SUPPORT_CARD_STORAGE)
//#include "sysmain2_car.h"
//power_on_init_car();
//#endif
#ifdef SUPPORT_UART_COMMAND
Inform_MCUOK();
#endif
#ifdef TONIC_DVD
ReadFromI2c(0xa0,0xff,&KeyLockStatus,1);
if(KeyLockStatus!=0&&KeyLockStatus!=1)
{
KeyLockStatus=0;
WriteToI2c(0xa0,0xff,&KeyLockStatus,1);
}
{
regs0->sft_cfg1 &= ~(0x1<< 2); // CS3 as GPIO3|
GPIO_M_SET(36,1);
GPIO_E_SET(36,0);
}
#ifdef SUPPORT_VFD_SHOW_P_SCAN
vfd_show_p_scan();
#endif
#endif//#ifdef TONIC_DVD
#ifdef JPEG_EXP_RATIO//terry,2004/2/6 04:24PM
vpp_set_expansion_ratio(14*8);
#endif
#ifndef SUPPORT_EXT_MCU //xyy add 2004-11-17
#ifdef SUPPORT_EXT_ADC//xyy 2004-4-12
GPIO_O_SET(EXT_ADC_RESET,1);
#endif
#endif
//----------------------------------------
#ifdef DVB_SETUP
for(i=0;i<128;i++) eBuffer[i]=0xff;
watchdog_onoff(0);//disable watchdog
for(i=0;i<128;i++)
ReadFromI2c(0xa0, i, &eBuffer[i] ,1);
watchdog_renew(0xffff);//reset watchdog
watchdog_onoff(1);//enable watchdog
#if 1 //set volume default //wnzhang
volume_value=eBuffer[66];
SP_SetVolume(eBuffer[66]);
#endif
//ReadFromI2c(0xa0,0, eBuffer,128);
//void SP_SetVolume(UINT8 volume)
//volume_value=eBuffer[66];
//SP_SetVolume(eBuffer[66]); //set default volume
#endif
//----------------------------------------
#ifdef PMP_DVD //wthsin add for PMP 2004/11/8
if(GPIO_I_GET(PC_USB_CONNECT_PIN))
{
system_state= SYSTEM_PC_USB_MODE;
}
PMP_ENABLE=1;
#endif //#ifdef PMP_DVD
#ifdef SUPPORT_Auo_Digital_panel
init_auo_digital_panel();
#endif
while (1)
{
#ifdef QSI_SUPPORT_SLOT_TEST
if(is_do_slot_test())
{
if(play_state==VCD_STATE_READTOC)
{
slot_test_cnt++;
psprintf(linebuf,"SLOT-IN/OUT TEST: %d", slot_test_cnt);
strcpy(RegionValStr[REGION2], linebuf);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
printf("ap_main>Eject disc! test cnt = %d\n",slot_test_cnt);
ircmd_trayout();
}
}
else if(slot_test_cnt!=0)
{
slot_test_cnt=0;
ClearOsdMsg(REGION2);
}
#endif
//printf("=====polling====\n");
polling();
#ifdef EASTWIN
regs0->sft_cfg3 |= ((0x01)<<1); //Enable AUD0(GPIO53) fix the audio noise bug
#endif
//
test_mode_chk_close_tray();//terry,2003/9/10 12:52AM
#ifdef SLOT_IN_LOADER
if ((system_state >= SYSTEM_READ_TITLE)) // for slot-in loader
#elif defined(SDRAM_16Mb_Mode)
if ((system_state >= SYSTEM_READ_TITLE) || (play_state == VCD_STATE_CLOSE)||(full_scrn & SETUP)||(full_scrn & CUSTM)||(full_scrn & PROGRAM) )
#else
if ((system_state >= SYSTEM_READ_TITLE) || (play_state == VCD_STATE_CLOSE)||(full_scrn & SETUP)||(full_scrn & CUSTM)
#ifdef SUPPORT_FUNCTION_MENU
||(full_scrn & SETUP_PLUS)
#endif
)
#endif
{
safe_srn_off();
}
else
{
#ifdef SDRAM_16Mb_Mode
if (cd_type_loaded==CDDVD)
{
psprintf(RegionValStr[REGION1], "");
PrintOsdMsg(STR_OS_SPACE,REGION1,1,0);
}
#endif
safe_srn_on();
}
#ifdef SYSMAIN2_DBG
if(old_state!=system_state)
{
old_state=system_state;
#ifndef IR_TOOL
printf("[%s,in][play_state:%x][sys_cmd:%x][cd_type:%x]\n",system_state_str[system_state],play_state,sys_cmd,cd_type_loaded);
#endif
}
#endif
#ifdef LOGO_PLAY_MP3
if(old_system_state!=system_state)
{
if(((old_system_state==SYSTEM_NODISC) &&(system_state==SYSTEM_OPEN))||((old_system_state==SYSTEM_IDLE) &&(system_state==SYSTEM_OPEN))||((old_system_state==SYSTEM_STOP)&&(system_state==SYSTEM_OPEN)))
play_mp3_flag=0;
old_system_state=system_state;
if((system_state==SYSTEM_NODISC)||(system_state==SYSTEM_OPEN)||(system_state==SYSTEM_STOP))
{
if(!play_mp3_flag)
{
//printf("MP3 INIT!---------\n");
AUDIF_Init_Audio();//2004AUDDRV init_audio();
AUDIF_Init_MP3();//2004AUDDRV init_mp3();
AUDIF_Set_Play();//2004AUDDRV AudioSetPlay();
playindex=0;
mp3_count=0;
play_mp3_flag=1;
}
}
}
else if((system_state==SYSTEM_NODISC)||(system_state==SYSTEM_OPEN)||(system_state==SYSTEM_STOP))
{
//gy 08/11 for MPE_LOGO
if((mp3_count>=500)&&(!(Is_Mp3_Logo_End())))
{
//printf("Show_Logo_Play_MP3\n");
Show_Logo_Play_MP3();
mp3_count=0;
}
else mp3_count++;
}
#endif
#ifdef SUPPORT_RECEIVER //huziqin 2004-3-12;move to sysmain_receiver.c
receiver_check_system_state();
#endif
#ifdef SUPPORT_POWER_OFF_CLOCK_FUNC //xyy 2004-10-11
check_system_clock_func();
#endif
switch(system_state)
{
#ifdef PMP_DVD //wthsin add for PMP 2004/11/8
case SYSTEM_PC_USB_MODE:
pc_usb_access_mode();
break;
#endif //#ifdef PMP_DVD
case SYSTEM_POWER:
/*removed by huziqin 2004-2-26*/
break;
case SYSTEM_NODISC:
#ifdef DVB1000_NON_OS //Maoyong 2004-10-25 14:32
if(DVD2DVB_switch_flag)
{
DVD2DVB_switch_flag = 0;
system_state = SYSTEM_TS;
break;
}
#endif
// remain=0; //wsf 2004-7-27 13:12
#ifdef OP_UI//zhaoyanhua add 2004-2-26 10:57
system_state = SYSTEM_SETTING;
#elif defined(GBM_SLOT_IN_LOADER_TEST) //gerry,2004-2-27 19:43
if(no_disk_cnt==1)
{
no_disk_cnt=0;
#ifdef POWER_RESUME //Jeff 20021022
RsmInfo2Flash(1);//clear memory
#endif
ircmd_eject_toggle();
}
#else//GBM_SLOT_IN_LOADER_TEST
if(no_disk_cnt==1)
{
int id;
if(play_state==VCD_STATE_IDLE)
{
OSD1000ISP_STATUS(OSDISP_NODISC, OSDIR_GLOBAL);
id=STR_OS_NODISC;
}
else
{
#if defined(FUSS_DVD) || defined(HOBO_DVD)
OSD1000ISP_STATUS(OSDISP_ERR_DISC, OSDIR_GLOBAL);
id=STR_OS_ERR_DISC;//nono 2-4-22 13:26 for fuss
#elif defined(CORTROL_VCD_ONF) //wangap add 2004/5/27
if( (
(bDiscType == CD_OKO)
||(cd_type_loaded==CDVCD20)
||(cd_type_loaded==CDVCD10)
||(cd_type_loaded==CDSVCD)
)
&&(setup_IsVCD_OFF()) )
{
OSD1000ISP_STATUS(OSDISP_ERR_DISC, OSDIR_GLOBAL);
id=STR_OS_ERR_DISC;
play_state=VCD_STATE_IDLE;
}
#else
OSD1000ISP_STATUS(OSDISP_STOP, OSDIR_STOP);
id=STR_OS_STOP;
#endif
}
#ifdef SLOT_IN_LOADER//terry,2004/4/7 06:20PM
OSD1000ISP_STATUS(OSDISP_STOP, OSDIR_STOP);
id=STR_OS_NODISC;
ircmd_eject_toggle();
#endif
#ifdef SHOW_SPECIAL_DISC_TYPE
if(read_disc_state == 0xf0)
{
read_disc_state = 0x0f;
id = STR_OS_ERR_DISC;
}
#endif
#if defined(QSI_PORTABLE_DVD) && defined(QSI_PLATFORM) //qsi: merge by johnson 20040712
id=STR_OS_NODISC;
ircmd_eject_toggle();
//qsi: modify by sharon
#endif
#ifdef ALWAYS_DISPLAY_NODISK //wthsin 03/08/15; for bbk,hq,3-11-22 14:13
PrintOsdMsg(id,REGION1,0,0);
#elif !defined(KENLOON_DVD) //yaowh add 04-07-30
PrintOsdMsg(id,REGION1,1,0);
#endif
no_disk_cnt=0;
#ifdef POWER_RESUME //Jeff 20021022
RsmInfo2Flash(1);//clear memory
#endif
srv_test_mode1_no_disc();//terry,2003/9/10 12:52AM
}
#endif//#ifdef OP_UI//zhaoyanhua add 2004-2-26 10:57
system_check_media_switch(); //Maoyong 2004.05.14
// probe if there is disc in loader
if (sys_cmd==(CMD_FUNC|CMD_FUNC_OPEN))
{
system_state=SYSTEM_OPEN;
}
break;
#if defined(SPHE1000) && !defined(TEST_DVD) && !defined(DVB1000_NON_OS) //Maoyong added 2004-9-27 9:04
case SYSTEM_DVD:
#else
case SYSTEM_OPEN:
#endif
system_check_media_switch(); //Maoyong 2004.05.14
#ifdef PROVIEW_GPIO_KEY
set_proview_gpio_key(void);
#endif
//system test drv ready
#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
if(media_type == MEDIA_CD)
#endif
{
if(safe_on)
test_ready_timer=test_ready_timer%DEV_RDY_TM_IN_SCRNER;
if(--test_ready_timer<0)
{
test_ready_timer=DEV_RDY_TM;
test_drv_rdy();
power_on=0;
power_on_gpio_demute(0);
}
srv_test_mode1_open();
}
#ifdef SUPPORT_POWER_OFF_CLOCK_FUNC //xyy 2004-10-11
if(switch_to_clockmode == 1)
{
system_state = SYSTEM_MODE_CLOCK_FUNC;
}
#endif
// Simon 12-16-2003
// This code is in both SYSTEM_STOP and SYSTEM_OPEN
#ifdef SUPPORT_RECEIVER
if (switch_modes_now == 1)
{
system_state = SYSTEM_MODE_CHANGE;
}
#endif
#ifdef QSI_SHOW_ERR_RATE
if(system_state != SYSTEM_OPEN) {
QSI_PIPO_pre_check(SYSTEM_OPEN);
}
#endif
break;
case SYSTEM_STOP:
state_stop_navigation();
system_check_media_switch(); //Maoyong 2004.05.14
#ifdef SUPPORT_POWER_OFF_CLOCK_FUNC //xyy 2004-10-11
if(switch_to_clockmode == 1)
{
system_state = SYSTEM_MODE_CLOCK_FUNC;
}
#endif
// Simon 12-16-2003
// If this code isn't in SYSTEM_STOP, sometimes user will have to hit the button twice
// before mode switch actually occurs (switching from DVD mode).
// This occurs because there are cases when system doesn't properly go to
// the OPEN state after ejecting (eg: ejecting right before VCD menu appears).
#ifdef SUPPORT_RECEIVER
if (switch_modes_now == 1)
{
// Fix startup problem
// Make sure loader is stopped before switching
//while (play_state == VCD_STATE_POWER)
//{
// printf("PS %d\n", play_state);
// play_state = VCD_STATE_OPEN;
//}
system_state = SYSTEM_MODE_CHANGE;
}
#endif
system_check_source_switch();//for QSI disc/card switch //added by JS //20040726
break;
case SYSTEM_READ_TITLE:
//printf("SYSTEM_READ_TITLE\n");
#ifdef SETUP_IN_READ_STATE//terry,2003/9/15 06:22PM
if(full_scrn&SETUP)
break;
#endif
//JSlin //for QSI PIPO //20040901
#ifdef QSI_SHOW_ERR_RATE
psprintf(linebuf, "SYSTEM_READ_TITLE [in]\n");
UART0_puts(linebuf);
#endif
//=========================
#ifdef LOGO_PLAY_MP3
play_mp3_flag=0;
#endif
//LoadModual(MODUAL_DVD);//terry,2004/2/6 04:23PM
InitVar();
EnableBuffer( TRUE );
// clear global variables, Robert 03/04/30
memset(pFsJpeg, 0, sizeof(FSJPEGDATA));
LoadModual(MODUAL_CDROM);
sys_cmd=(CMD_FUNC|CMD_FUNC_CLOSE); // robert 020917
Res=ReadCDTitle();
#ifdef DVD_SERVO
hostx_servo_buf_init();//correct servo buffer location
#endif
#ifdef SYSMAIN2_DBG
printf("read cd title leave\n");
#endif
#if defined(CORTROL_VCD_ONF) //wangap add for no support vcd 2004/5/27
if( (
(bDiscType == CD_OKO)
||(cd_type_loaded==CDVCD20)
||(cd_type_loaded==CDVCD10)
||(cd_type_loaded==CDSVCD)
)
&&(setup_IsVCD_OFF()) )
{
Res=-2;
}
#endif
switch(Res)
{
default:/*play*/
t_disp = 0;
remain= 0;
if(!(bInitPlayTrk&0x01))
{
#ifdef OP_UI//zhaoyanhua add 2004-2-26 10:53
system_state = SYSTEM_SETTING;
break;
#else
show_osd_disc_type();//terry,2003/12/29 08:25PM
system_state=SYSTEM_SETUP_BROWSER;
#endif//ifdef OP_UI
//Jeff 20010816
NP_SPSTN = 0xbf;
Subp_stream_Chg(1,1);
NP_ASTN = 0xf;
Audio_stream_Chg_SVCD(1);
//terry,2002/6/25 09:17PM
if(cd_type_loaded==CDDVD)
{
memset(pDSV, 0,sizeof(DataSaved));
#ifdef AUTO_ADJUST_TV_TYPE
Adjust_TV_type=1;
#endif
}
//Maoyong 2004.03.04 23:12, move and make into functions for record resume
if(!CheckLoadRsmInfo())
break;
LoadRsmInfo();
#ifdef CHECK_RECORD_DISK_PARENT_LVL
if(!CheckDiscParentLvl())
break;
#endif
RecordRsmPlay(); //Maoyong 2004.03.04, do record resume play now
}else //if(!(bInitPlayTrk&0x01))
{
system_state=SYSTEM_FINISH;
play_state=VCD_STATE_STOP;
bInitPlayTrk=0;
sys_cmd=0;
} //if(!(bInitPlayTrk&0x01))
break;
case -1:/*open*/
case -3:/*power off*/
system_state=SYSTEM_FINISH;
break;
case -2:/*no disc*/
no_disk_cnt=1;
system_state=SYSTEM_NODISC;
play_state=VCD_STATE_STOP;
#ifdef SHOW_SPECIAL_DISC_TYPE
read_disc_state = 0xf0;
#endif
//cd_func_stop();
break;
} //switch(Res)
// 2004/07/16 marked by yltseng
//EnableBuffer( FALSE );
//JSlin //for QSI PIPO //20040901
#ifdef QSI_SHOW_ERR_RATE
QSI_PIPO_pre_check(SYSTEM_READ_TITLE);
//psprintf(linebuf, "next SYSTEM STATE: [%d]\n", system_state);
//UART0_puts(linebuf);
//psprintf(linebuf, "SYSTEM_READ_TITLE [out]\n");
//UART0_puts(linebuf);
#endif
//=========================
break; //case SYSTEM_READ_TITLE:
#ifdef OP_UI//zhaoyanhua add 2004-2-26 10:24
//check if the disc is valid.
case SYSTEM_SETTING:
play_state = VCD_STATE_IDLE;
//play_state = VCD_STATE_WAITING_SET;//because when play_state ==READTOC, "play" is disable.
check_disc_valid();
if(SYSTEM_SETTING != system_state)
break;
#endif//ifdef OP_UI
//
// setup used browser.
//
case SYSTEM_SETUP_BROWSER:
#ifdef LOGO_PLAY_MP3
play_mp3_flag=0;
#endif
#if defined(USE_GAMEPORT_TO_DISCLIGHT)
check_light_status();
#endif
#ifdef DVD_SERVO
#ifdef CSWDP_0
cServoWrongDataPass = 0;
#else
cServoWrongDataPass = 1;
#endif
#endif
#ifdef FORCE_SKIP_VCD_MOSAIC//nono 4-5-5 12:38 for hyoptics VCD mosaic issue.
//#if 1//def ERROR_CONCEALMENT
//setup_error_mb_limit(4);//(ERROR_MB_LIMIT_NUM); // ERROR_MB_LIMIT_NUM*16 MB default=4
setup_error_concealment(0);//(ERROR_CONCEALMENT_MODE); // detect error and skip
//#endif////#if 1//def ERROR_CONCEALMENT
#endif//#ifdef FORCE_SKIP_VCD_MOSAIC
// jnable watchdog (default)
watchdog_renew(0xffff); // reset watchdog
watchdog_onoff(1); // enable watchdog
// disable watchdog (default)
// watchdog_onoff(0);
if(cd_type_loaded==CDDVD)
{
#ifdef BAD_DISC_SEQ_PLAY
bad_disc_seq_play = 1;//terry,2003/8/29 02:16AM
#endif
#if 0//def CSWDP_0
cServoWrongDataPass = 0;
#endif
// watchdog_renew(0xffff); // reset watchdog
// watchdog_onoff(1); // enable watchdog
browser = dvd_navigation;
}else if(cd_type_loaded==CDROM)
{
#ifdef SUPPORT_OSDID3
osd_init_OSDID3();
#endif
#if defined(AUDIO_2CH_5_1CH)&&defined(SUPPORT_PROLOGIC_II)//axel modified 2004/3/16 10:53am zhaoyanhua add 2003-12-17 9:47
//if MP3/WMA/MPG, must turn off PROLOGIC II.
if(setup_IsSpkDownmixOff())
AudioSet2chOutput();
#endif
// disable watchdog (default)
watchdog_onoff(0);
bInitPlayTrk=0;/*jhuang 891005 add,MP3 ignore bInitPalyTrk while tray open*/
browser = read_iso9660;
cd_trk_now = 1;// 2-6-13 23:40
}else if(cd_type_loaded==CDDA)
{
#ifdef CD_PLAYER //liweihua 2003-9-3
ShowTitle();
ClearOsdMsg(3);
show_cdplayer();
#ifdef VIRTUAL_KEYBOARD//liweihua 2003-9-18
ClearOsdMsg(4);
osd_draw_virtual_keyboard(0,0,4);
hl_keyboard_button(KeyID);
full_scrn |= KEYBOARD;
#endif
#endif
// disable watchdog (default)
watchdog_onoff(0);
AUDIF_Init_CDDA();//2004AUDDRV init_cdda();
#ifdef SUPPORT_ECC
RS42Init();
RS2420Init();
#endif
cd_trk_lo_now = cd_trk_lo;
browser = v11_navigation;
}else
{
//terry,2004/3/2 12:07PM
//Maoyong, 2004/03/04 changed for VCD10 resume play of all resume definition
#if defined(POWER_RESUME)|| defined(SAME_DISC_RESUME)||defined (RECORD_KEY)
if(resumeMSF)
{
goto_active=1;//terry,2004/3/2 11:59AM
psd_st.psd_list_id = 0xffff;
}
#endif
#ifdef VCD_CDG_PLAY_CONTROL_BY_SETUPMENU //linrc add 2004-11-4 20:19
extern BYTE VcdControlFlag(); //when "MNP" what define in setupmenu is on
if(VcdControlFlag()) //VCD & CDG play one TRK in one time....
psd_st.psd_list_id = 0xffff;
#endif
if (cd_type_loaded==CDVCD10)
psd_st.psd_list_id = 0xffff;
AUDIF_Init_MP3();//2004AUDDRV init_mp3();
if(psd_st.psd_list_id == 0xffff)
browser = v11_navigation;
else
{
psd_st.psd_list_id = 0; //PVD start entr
browser = psd_navigation;
#ifdef FORCE_SKIP_VCD_MOSAIC//nono 4-5-5 12:38 for hyoptics VCD mosaic issue.
//#if 1//def ERROR_CONCEALMENT
setup_error_mb_limit(2);//(ERROR_MB_LIMIT_NUM); // ERROR_MB_LIMIT_NUM*16 MB default=4
setup_error_concealment(0x03);//(ERROR_CONCEALMENT_MODE); // detect error and skip
//#endif////#if 1//def ERROR_CONCEALMENT
#endif//#ifdef FORCE_SKIP_VCD_MOSAIC
}
//terry,2002/9/6 12:01PM
//Às¬ì,ªìÅÊ
cd_trk_lo_now = cd_trk_lo;
#ifdef SUPPORT_HDD_ACCESS
f_browser_mode=0;
if (f_force_browser) {
printf("MIKEY_BUG: force setup browser = read_iso9660\n");
#ifdef HDD_MODIFY_INDEX_TEST
watchdog_onoff(0);
ReadFontFile();
watchdog_onoff(1);
#endif
browser = read_iso9660;
f_force_browser=0;
f_browser_mode=1;
f_browser_mode=cd_type_loaded;
cd_type_loaded = CDROM;
watchdog_onoff(0);
}
#endif //SUPPORT_HDD_ACCESS
if (cd_type_loaded!=CDVCD10)
cd_trk_lo_now++;
}
system_state=SYSTEM_BROWSE;
if(cd_type_loaded!=CDROM)
play_state =VCD_STATE_NORMAL;
break; //case SYSTEM_SETUP_BROWSER:
//
// start to browse.
//
case SYSTEM_BROWSE:
#ifdef PORTABLE_POWER_ON_MUTE
regs0->sft_cfg3 |=((0x01<<6));//CHENZZ FOR LRCK=1.for power on noise.
#endif
#ifdef QSI_SHOW_ERR_RATE
if(QSI_PIPO_TEST==0x1){
//psprintf(linebuf,"play_stste=%x\n", play_state);
//UART0_puts(linebuf);
if(QSI_PIPO_FLAG) {
QSI_PIPO_routine();
}
break;
}
#endif
#ifdef LOGO_PLAY_MP3
play_mp3_flag=0;
#endif
#if defined(SUPPORT_CARD_STORAGE)
if ( (media_type==MEDIA_CARD) && CARDIsPlugIn() ) {
if(play_state == VCD_STATE_CLOSE)//liweihua 2004-2-1
CardTestReady();
memset(pFsJpeg, 0, sizeof(FSJPEGDATA));//liweihua mark 2004-1-31
//axel clear mark for HJ card reader 2004/4/30 08:52pm
}
#endif
if(browser == read_iso9660) {
LoadModual(MODUAL_CDROM);
}
#ifdef TEST_SERVO//terry,2003/9/10 12:42AM
if((iTestServoMode==1)||(iTestServoMode==3))
srv_test_mode_play();
else
#endif
browser();
#ifdef SYSMAIN2_DBG
printf("brower out,sys_cmd:%x play_state:%x\n",sys_cmd,play_state);
printf("system_state=%x\n", system_state);
#endif
continue_run_nav=0;
mode=GET_CMD_MODE();
cmd=GET_CMD_SELECT();
if(bPbcOff && ((cd_type_loaded==CDVCD20)||(cd_type_loaded==CDSVCD)) )
{
cd_trk_lo_now = cd_trk_lo + 1;
if(cd_trk_now>cd_trk_hi || cd_trk_nowpbc off)&FF/FB from startup timeout*/
bPbcOff = 0;
}else
continue_run_nav=2;
}else if(mode==CMD_SELECT)
{
continue_run_nav=2;
}
else if (mode==CMD_FUNC)
{
if( (cmd==CMD_FUNC_GOTO)||(cmd==CMD_FUNC_PRG)||(cmd==CMD_FUNC_RESUME))//2-4-26 14:41
continue_run_nav=2;
else if(cmd==CMD_FUNC_PBC)
continue_run_nav=1;
}
if(continue_run_nav)
{
cd_trk_lo_now = cd_trk_lo + 1;
if(!IsPBCOn())
{
browser = v11_navigation;
if(continue_run_nav==1)
ClearCommand();
}
else
{
browser = psd_navigation;
}
}
else
{
#if defined(CF_CARD_WRITE)|| defined(SPHE8202_FAT_Write_Function)//||defined(WRITE_USB)
if(!flag_cf2cd&&!flag_cd2cf) //xulf
#endif
system_state = SYSTEM_FINISH;
#if defined(CF_CARD_WRITE)|| defined(SPHE8202_FAT_Write_Function)//||defined(WRITE_USB)
else //xulf
{
// flag_cd2cf=0; //wuxiaofeng moved to fs9660.c 03/09/15
// flag_cf2cd=0;
}
#endif
}
break; //case SYSTEM_BROWSE:
//
// system playback finished.
//
case SYSTEM_FINISH:
#ifdef SUPPORT_OSDID3//liweihua 2004-1-9 11:18
if(Is_MP3_STATE())
osd_init();
#endif
if(cd_trk_lo!=0xff) //jhuang 2000/11/16
stop_init();
if(GET_CMD_SELECT() == CMD_FUNC_POWER)
state_stop_navigation(); //jhuang add it 891010
else
{
system_state = SYSTEM_STOP;
#ifdef NEWSTYLE_WINDOW //xyy 3-7-23 13:32
if(full_scrn==MESSAGE)
#if defined(BBK_DVD)&&defined(DISC_INFO_KEY) //fengjl edit 2004-04-22 15:00
ircmd_disc_info();
#else
ircmd_goto();//exit goto mode
#endif
#endif
ShowTitle();
}
if(GET_CMD_SELECT() != CMD_FUNC_OPEN && GET_CMD_SELECT() != CMD_FUNC_CLOSE) /*jhuang add CMD_FUNC_CLOSE 891018*/
{
ClearCommand();//terry,2003/9/6 07:06PM
#ifdef STOP_LOADER //terry,2003/9/1 05:34PM
stop_loader();
#endif
}
else
{
flush_atapi();//terry,0515,let data tranfer finish
}
#ifdef DVB1000_NON_OS
if(DVD2DVB_switch_flag)
{
DVD2DVB_switch_flag = 0;
system_state = SYSTEM_TS;
}
#endif
break;
#if defined(SPHE1000) && !defined(TEST_DVD) && !defined(DVB1000_NON_OS) //Maoyong changed 2004-9-27 9:05
case SYSTEM_OPEN:
peek_message(&system_state);
break;
#endif
#if defined(SPHE1000) && !defined(TEST_DVD)
case SYSTEM_TS:
play_ts_stream();
break;
case SYSTEM_FILESTREAM:
play_file_stream();
break;
#endif
#ifdef QSI_SHOW_ERR_RATE
case SYSTEM_QSI_PIPO_TEST:
psprintf(linebuf,"SYSTEM_QSI_PIPO_TEST> play_stste=%x\n", play_state);
UART0_puts(linebuf);
if(QSI_PIPO_FLAG) {
QSI_PIPO_routine();
}
break;
#endif
} //switch(system_state)
#ifdef SYSMAIN2_DBG
if(old_state!=system_state)
{
old_state=system_state;
#ifndef IR_TOOL
printf("[%s,out][play_state:%x][sys_cmd:%x][cd_type:%x]\n",system_state_str[system_state],play_state,sys_cmd,cd_type_loaded);
#endif
}
#endif
} //while (1)
}
//terry,2004/2/6 04:23PM
//move do syc job function to other file
//benons move ap_main_receiver() 2004/3/1 03:22¤U¤È
#ifdef OP_UI
#include "menu_def.h"
#include "menu_func.h"
/*
*Funciton Description:
*
* check if the disc is valid.
*
* if no disc,prompt"Insert a disc"
* if the disc is incompatible, play is gray.
* if the disc is valid ,can play. Then set system_state SYSTEM_SETUP_BROWSER.
* zhaoyanhua 2004-2-26 11:12
*/
void check_disc_valid(void)
{
if(cd_type_loaded == CDROM)
{
ExitMainMenu();
system_state = SYSTEM_SETUP_BROWSER;
return;
}
else
ShowPlayState(0);
while(system_state == SYSTEM_SETTING)
{
polling();
if(sys_cmd == (CMD_FUNC|CMD_FUNC_OPEN))
{
system_state = SYSTEM_OPEN;
break;
}
}
}
#endif
//Maoyong 2004.05.14 moved here
#ifdef PROVIEW_GPIO_KEY
void set_proview_gpio_key(void)
{
#ifdef PROVIEW_GPIO_KEY_527
GPIO_E_SET(EJECT_KEY_GPIO, 0); //IN GPIO[5] OPEN
//GPIO_E_SET(PREV_KEY_GPIO, 0); //IN GPIO[4] PREV
GPIO_E_SET(PAUSEPLAY_KEY_GPIO, 0); //IN GPIO[18] PLAY
GPIO_E_SET(STOP_KEY_GPIO, 0); //IN GPIO[17] STOP
//GPIO_E_SET(NEXT_KEY_GPIO, 0); //IN GPIO[16] NEXT
#else
GPIO_E_SET(EJECT_KEY_GPIO, 0); //IN GPIO[5] OPEN
GPIO_E_SET(PREV_KEY_GPIO, 0); //IN GPIO[4] PREV
GPIO_E_SET(PAUSEPLAY_KEY_GPIO, 0); //IN GPIO[18] PLAY
GPIO_E_SET(STOP_KEY_GPIO, 0); //IN GPIO[17] STOP
GPIO_E_SET(NEXT_KEY_GPIO, 0); //IN GPIO[16] NEXT
#endif
}
#endif
/*********************************************************************
* call this function for card/cd switch process in special system state
* Maoyong 2004.05.18 changes for consideration of USB card reader.
*********************************************************************/
#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
void system_check_media_switch(void)
{
if(system_state == SYSTEM_STOP)
{
//check whether card is plugged in
if ( IsCardMediaExist() && (card_plug_state&USER_DO_PLUG_IN)//liweihua mod 2004-3-10
//#if defined(CF_CARD_WRITE)|| defined(SPHE8202_FAT_Write_Function)//||defined(WRITE_USB)
// && read_card_sign //xulf
//#endif
)
{
//#ifndef SUPPORT_USB//Maoyong 2004.05.18 for USB carder consideration
//CardTestReady();
//#endif //#ifdef SUPPORT_USB
//Maoyong 2004.05.25. now use OPEN cmd and switch meida in SYSTEM_OPEN,just for wirte
#if defined(CF_CARD_WRITE)|| defined(SPHE8202_FAT_Write_Function)//||defined(WRITE_USB)
if( read_card_sign && (media_type == MEDIA_CARD) && (MediaIsEmpty == MEDIA_NOT_EMPTY)) //modefied by wangwei,2004-11-19 17:31(for storage no files screen refresh problem)
{
CardTestReady();
}
#endif
}
else if(!IsCardMediaExist())
{
#if defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
polling_storage(); //polling_U_Disk(); //wthsin,2004/4/12 02:16pm
#else
polling_card_plug();//kenny 2003/1/26
#endif
drv_do_set_features(); //card plug out, do set feature to loader
//if((card_plug_state&USER_DO_PLUG_OUT)&&(media_type == MEDIA_CARD))
if(media_type == MEDIA_CARD) //Maoyong 2004.05.18 for USB card reader consideration
{
/*ClearOsdMsg(0);//liweihua 2004-3-17
no_disk_cnt=DETECT_TIMES;
system_state=SYSTEM_OPEN;
play_state=VCD_STATE_CLOSE;
sys_cmd=CMD_FUNC|CMD_FUNC_CLOSE*/
SwitchMedia(CARD2CD); //this will do more actions
}
media_type = MEDIA_CD;
}
}
else if(system_state == SYSTEM_OPEN)
{
if ((card_plug_state&USER_DO_PLUG_IN)&&CARDIsPlugIn()//liweihua mod 2004-3-10
#if defined(CF_CARD_WRITE)|| defined(SPHE8202_FAT_Write_Function)//||defined(WRITE_USB)
&& read_card_sign //xulf
#endif
)
{
//if(play_state == VCD_STATE_CLOSE)//liweihua add 2004-2-1
{
//8200 card power on run and 8202 cd to card switch will come here by CMD_FUNC_OPEN cmd
if(media_type == MEDIA_CARD)
{
//Maoyong 2004.05.25
#ifdef CARD_PLAY_STOP_LOADER
run_close_tray(1);
#endif
if(MediaIsEmpty == MEDIA_NOT_EMPTY) //modefied by wangwei,2004-11-19 17:31(for storage no files screen refreshing problem)
CardTestReady();
else
media_type = MEDIA_CD;
}
}
}
else
media_type = MEDIA_CD; //Jeff 20020726
#ifdef SUPPORT_SLOT_IN_LOADER
if( IsCardMediaExist() )//Maoyong 2004.05.18 for USB card reader consideration
{
CardTestReady();
}
#endif
}
else if(system_state == SYSTEM_NODISC) //no disc switch to card when card exist s
{
//if( (safe_on==0) && CARDIsPlugIn())
if( IsCardMediaExist() )//Maoyong 2004.05.18 for USB card reader consideration
{
if(MediaIsEmpty == MEDIA_NOT_EMPTY) //modefied by wangwei,2004-11-19 17:31(for storage no files screen refreshing problem)
CardTestReady();
}
//Maoyong mask 2004.05.25. when no disc & card, just waiting card/trayout here.
//if set SYSTEM_OPEN, will read disc again, though no disc.
#if 0
else //card not plug in
{
if(no_disk_cnt>1)
{
drv_do_set_features(); //card plug out, do set feature to loader
no_disk_cnt=DETECT_TIMES;
system_state=SYSTEM_OPEN;
//play_state=VCD_STATE_CLOSE; //fengjl mark 2004-04-27 11:25
sys_cmd=CMD_FUNC|CMD_FUNC_CLOSE;
}
}
#endif //#if 0
}
}
#else
void system_check_media_switch(void) {}
#endif //#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)
//==============================================
// for QSI disc\card switch \\added by JS \\20040727
#ifdef SUPPORT_QSI_SOURCE_SWITCH
void system_check_source_switch(void)
{
if(source_switch_flag) // source switched
{
#if defined(QSI_PORTABLE_DVD) && defined(QSI_PLATFORM) //qsi: modify by johnson 20040812
if(source_type_now == source_card)
{
SwitchMedia(CD2CARD);
}
else if(source_type_now == source_disc)
{
SwitchMedia(CARD2CD);
}
#else
if(source_type_now == source_card)
{
CardReset();
sys_cmd = (CMD_FUNC|CMD_FUNC_CLOSE);
}
else if(source_type_now == source_disc)
{
sys_cmd = (CMD_FUNC|CMD_FUNC_OPEN);
}
#endif
system_state = SYSTEM_NODISC;
play_state = VCD_STATE_IDLE;
cd_type_loaded = CDUNKNOWN;
source_switch_flag = 0;
}
else // source has not switched
{
if((source_type_now == source_card) && (!CARDIsPlugIn()))
{
sys_cmd = (CMD_FUNC|CMD_FUNC_CLOSE);
system_state = SYSTEM_NODISC;
play_state = VCD_STATE_IDLE;
cd_type_loaded = CDUNKNOWN;
}
}
}
#else
void system_check_source_switch(void) {}
#endif
//==============================================