📄 sysmain2.c
字号:
{
//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;
#ifdef FILE_MODE_WRITE//added by wangwei,2005-1-9 16:13
detect_CD = 0;
#endif//FILE_MODE_WRITE
}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())
{
#ifdef FILE_MODE_WRITE//added by wangwei,2005-1-9 16:21
printf("detect_CD = %x\n",detect_CD);
detect_CD = 1;
#endif//FILE_MODE_WRITE
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
else if(((test_ready_ret==ATAPI_NO_MEDIA)||(test_ready_ret==ATAPI_MEDIA_UPSIDE_DOWN)||(test_ready_ret==ATAPI_UNKNOWN_MEDIA)\
||(test_ready_ret==ATAPI_ILLEGAL_MODE))&&(no_disk_cnt>1)&&!CDOpened())//zhongshan modified 05/01/17 if media err ,will not show "play" for a long time.
{
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
#ifdef FILE_MODE_WRITE//added by wangwei,2005-1-9 16:21
printf("detect_CD = %x\n",detect_CD);
detect_CD = 1;
#endif//FILE_MODE_WRITE
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
#ifdef HDMI_SMC_CLE//for HDDVD Non CF config.chenzhao on 2004-12-1 21:27
regs0->fm_gpio_len = 10
| (0xf << 4); // Set FMGPIO_B[26:0] enable
#else
regs0->fm_gpio_len = 11 // Set FMGPIO_B[26:0] turn on
| (0xf << 4); // Set FMGPIO_B[26:0] enable
#endif//HDMI_SMC_CLE
#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
{
#ifdef PULIANG_EJECT_MODE //yaowh add for puliang 04-12-17
BYTE I2c_Data;
BYTE I2C_Clear=0;
#endif
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
#ifdef PULIANG_EJECT_MODE //yaowh add 04-12-17
ReadFromI2c(0xa0,0xfc,&I2c_Data,1);
if((I2c_Data==0x80))
{
call_ir_func(IRC_EJECT);
WriteToI2c(0xa0,0xfc,&I2C_Clear,1);
}else
#endif
{
#if !(defined(SPHE1000)||defined(PMP_UI))
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;
ControlDvbDvdMic(); //Maoyong 2005-1-18 16:33 turn off MIC when DVB state
#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 SUPPORT_MIDI //xlluo 2004-12-28
#include "fsmidi.h"
#ifdef SUPPORT_MIDI_MENU_SEL
#include "fsmidiui.h"
#endif
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -