ircmd_mode.c

来自「凌阳8202T的红外接收代码及LED屏的驱动代码」· C语言 代码 · 共 1,089 行 · 第 1/3 页

C
1,089
字号
	        #ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
	       	printf_w("has Card in............\n");
            #endif
            
            now_valid_type = (detect_type & 0x1e);
            storage_type = now_valid_type;
            detect_result_last = storage_type;
            
	        SwitchMedia(CARD2CARD);
	        usb_card_state = HAS_CARD_AND_SWITCH_TO_CARD;
	    }
	}   
}
#endif//#ifdef ONLY_CARD_NO_USB


/**************************************************************************
 *  Function Name: osd_clear_and_init                                     *
 *  Purposes:                                                             *
 *    Just as the function name.                                          *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *    NULL                                                                *
 *  Returns:                                                              *
 *    NULL                                                                *
 **************************************************************************/

void osd_clear_and_init(void)
{
    if(full_scrn&SETUP)
        ExitSetupPage(0);
    
    full_scrn = 0;  
	t_disp = 0;    
    ClearOsdMsg(0);
    osd_init();
    osd_tog_region(2,OSD_OFF);
}
    
/**************************************************************************
 *  Function Name: mode_switch_reset_var                                  *
 *  Purposes:                                                             *
 *    reset some system variables when switch mode.                       *
 *  Descriptions:                                                         *
 *    Copy from stop_init()                                               *
 *  Arguments:                                                            *
 *    NULL                                                                *
 *  Returns:                                                              *
 *    NULL                                                                *
 **************************************************************************/

void mode_switch_reset_var(void)
{
    
#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
    printf_w("reset_mode_var\n");
#endif
    
#ifdef  SUPPORT_BOOK
    extern BYTE    bookIndex;
    bookIndex=0;
#endif

    index_y=0;
    
    adv_search_time = 0 ;
    video_slow=0;
    avd_slow_state(video_slow);
    avd_play_state();
    goto_active = 0;
    bIntro=0;  

    
    reset_status();  

    prog_func_clear(); 
    resumeMSF = 0;
    resumeTRK = 0;

    rep_track = 0;
}


#ifdef  SUPPORT_DVD_DVB_USB_CARD_FREE_CHANGE //tianye 200607

#define CARD_DEVICE   0x1e

void   DVB_TO_DVD_NO_READ(void);
void   DVD_TO_USB(void);
void   DVD_TO_CARD(void);
void   USB_CARD_TO_DVD(void);
void   DVD_TO_STOP(void);
void  SYSTEM_CHANGE_TO_DVD(void);
void  SYSTEM_CHANGE_TO_DVB(void);
void  SYSTEM_CHANGE_TO_USB(void);
void  SYSTEM_CHANGE_TO_CARD(void);
void  SYSTEM_SOURCE_CHANGE(UINT8  sys_source_tpye);

void   DVD_TO_STOP()
{
	osd_clear_and_init();
	#ifdef STOP_LOADER
	//Jack marked "If" 06/02/20 
	//if( !((play_state==VCD_STATE_OPEN) || ((play_state==VCD_STATE_STOP)&&!resumeMSF) || (system_state==SYSTEM_NODISC)) )
	{
		delay_srv_10ms(5);
		//printf_w("START_STOP_DO_LOAD_POWER_OFF............\n");
		//Jack modified to atapi_p_start_stop_unit(Immed_1,START_STOP_DO_LOAD_POWER_OFF) 06/02/20
		#if 0//def TRAY_AVAILABLE//It seems that this will cause some servo bug,so markd again 06/02/22
		atapi_p_start_stop_unit(START_STOP_DO_LOAD_POWER_OFF);
		#else
		stop_loader();
		#endif
		delay_srv_10ms(100);
	}
	#endif

	//if(system_state != SYSTEM_OPEN)
	{
		AVD_SetMediaTimeout();
		ircmd_post_func(CMD_FUNC|CMD_FUNC_OPEN);
	}

	#ifdef TRAY_AVAILABLE
	if(CDOpened())
	{
		close_tray(1);
		delay_srv_10ms(100);
	}
	#endif

	#ifdef SUPPORT_DVB_DESKTOP_STOP_SERVO_WHEN_TUNEON  ///YANGLI ADD FOR STOP SERVO,2005-12-28 15:00
		atapi_p_start_stop_unit(4);
		stop_servo_flag = 1;
	#endif 

}


void   DVB_TO_DVD_NO_READ()
{    
         flag_no_check_servo = 1;
	  system_state = SYSTEM_TS ;
         ircmd_dvb_dvd();
         flag_no_check_servo =  0;
}
void   DVD_TO_USB()
{
	DVD_TO_STOP();
	#ifdef FIX_CARD_USD_OSD_ERR  
	polling_storage();
	#endif// end=>  #ifdef FIX_CARD_USD_OSD_ERR 

	#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
	printf_w("media_type:%d...detect_result_last:%d...now_valid_type:%d...\n",media_type,detect_result_last,now_valid_type);
	printf_w("detect_type:%d............storage_type:%x\n",detect_type,storage_type);
	#endif
    
	media_type = MEDIA_CARD;
	source_play_mode=USB_PLAY_MODE;
	
	if( !(/*IsCardMediaExist()&&*/(detect_type&USB_DEVICE)) )
	{
		if((detect_type&CARD_DEVICE) && (system_state==SYSTEM_BROWSE))
		{
			AVD_SetMediaTimeout();
			ircmd_post_func(CMD_FUNC | CMD_FUNC_OPEN);
		}
		
		#ifdef    SUPPORT_OTHER_LANGUAGE_STRING
		psprintf(RegionValStr[REGION1], osd_other_str[osd_font_mode][USB_NOT_FOUND]); 
		#else //else => #ifdef    SUPPORT_OTHER_LANGUAGE_STRING	 
		psprintf(RegionValStr[REGION1], "USB NOT FOUND");
		#endif//end=> #ifdef    SUPPORT_OTHER_LANGUAGE_STRING	
		PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);

		usb_card_state = SWITCH_TO_USB_BUT_HAS_NO_USB;
		media_type = MEDIA_CARD;
		cd_type_loaded = CDUNKNOWN;
		play_state = VCD_STATE_IDLE;
		no_disk_cnt = DETECT_TIMES;
	}
	else 
	{   
		#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
		printf_w("has USB in............\n");
		#endif
            
		now_valid_type = USB_DEVICE;
		storage_type = USB_DEVICE;
		detect_result_last = storage_type;

		SwitchMedia(CD2CARD);
		usb_card_state = HAS_USB_AND_SWITCH_TO_USB;
	}   
	#ifdef FIX_STATE_CHANE_NOT_READ_USB  
	force_detached();
	#endif// end=>  #ifdef FIX_STATE_CHANE_NOT_READ_USB 
	source_play_mode=USB_PLAY_MODE;   
}
void   DVD_TO_CARD()
{
	DVD_TO_STOP();
	#ifdef FIX_CARD_USD_OSD_ERR  
	polling_storage();
	#endif// end=>  #ifdef FIX_CARD_USD_OSD_ERR 

    	#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
    	printf_w("media_type:%d...detect_result_last:%d...now_valid_type:%d...\n",media_type,detect_result_last,now_valid_type);
    	printf_w("detect_type:%d............storage_type:%x\n",detect_type,storage_type);
    	#endif
    
	media_type = MEDIA_CARD;
	
	if(!(detect_type&CARD_DEVICE))
	{
		if((detect_type&USB_DEVICE) && (system_state==SYSTEM_BROWSE))
		{
			AVD_SetMediaTimeout();
			ircmd_post_func(CMD_FUNC | CMD_FUNC_OPEN);
		}	       	

		#ifdef    SUPPORT_OTHER_LANGUAGE_STRING
		psprintf(RegionValStr[REGION1], osd_other_str[osd_font_mode][CARD_NOT_FOUND]); 
		#else //else => #ifdef    SUPPORT_OTHER_LANGUAGE_STRING	 
		psprintf(RegionValStr[REGION1], "CARD NOT FOUND");
		#endif//end=> #ifdef    SUPPORT_OTHER_LANGUAGE_STRING	

	        PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
	        usb_card_state = SWITCH_TO_CARD_BUT_HAS_NO_CARD;
	}
	else
	{
		#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB
		printf_w("has Card in............\n");
		#endif
            
		now_valid_type = (detect_type & CARD_DEVICE);
		storage_type = now_valid_type;
		detect_result_last = storage_type;

		SwitchMedia(CARD2CARD);
		usb_card_state = HAS_CARD_AND_SWITCH_TO_CARD;
	}
	
	#ifdef FIX_STATE_CHANE_NOT_READ_USB  
	force_detached();
	#endif// end=>  #ifdef FIX_STATE_CHANE_NOT_READ_USB 
	source_play_mode=CARD_PLAY_MODE;
	 
}

void   USB_CARD_TO_DVD()
{
	if(((detect_type&USB_DEVICE)||(detect_type&CARD_DEVICE)) && (system_state==SYSTEM_BROWSE))
	{
		AVD_SetMediaTimeout();
		//ircmd_post_func(CMD_FUNC | CMD_FUNC_OPEN);
		polling();
	}
       system_state = SYSTEM_OPEN;
	no_disk_cnt = DETECT_TIMES;
	media_type = MEDIA_CD;
	usb_card_state = USB_CARD_NO_CHANGE;
	mode_switch_reset_var();
	ShowTitle();
	#if defined(CHECK_PORTABLE_OPCLSW)||defined(TOP_DOOR_LOADER)
	regs0->sft_cfg4 &= ~((0x03)<<2);    //Enable GPIO For COVER SW

	if(check_eject_sw())
	{
		play_state = VCD_STATE_OPEN;
		ircmd_trayout();
	}
	else
	#endif//else close tray and read disc
	{
		atapi_open_tray();  //Maoyong 2004-8-10 11:00
		//atapi_close_tray(0);
		ircmd_trayin();
		play_state = VCD_STATE_CLOSE;   
	}		
	source_play_mode=DVD_PLAY_MODE;
}

void  SYSTEM_CHANGE_TO_DVD(void)
{
	switch(source_play_mode)
	{
		case CARD_PLAY_MODE:
		{
			USB_CARD_TO_DVD(); 			
			break; 
		}
		case DVB_T_MODE:
		{
			ircmd_dvd_usb_card_avin_dvb();
			break; 
		}
		case USB_PLAY_MODE:
		{
			USB_CARD_TO_DVD(); 
			break; 
		}		 
		default: 
			break; 
	}


}
void  SYSTEM_CHANGE_TO_DVB(void)
{	   
	switch(source_play_mode)
	{
		case DVD_PLAY_MODE:
		{
			GPIO_MUTE();
		       DVD_TO_STOP(); 
		       system_state = SYSTEM_OPEN; 	 
		      #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = AV_IN_MODE;
			#else//else=> #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = CARD_PLAY_MODE;
			#endif//end=> #ifdef AV_IN_THROUGH_EXT_ADC
		       ircmd_dvd_usb_card_avin_dvb();
			break; 
		}
		case CARD_PLAY_MODE:
		{
			system_state = SYSTEM_OPEN;  
		      #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = AV_IN_MODE;
			#else//else=> #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = CARD_PLAY_MODE;
			#endif//end=> #ifdef AV_IN_THROUGH_EXT_ADC
		       ircmd_dvd_usb_card_avin_dvb();
			break; 
		}
		case USB_PLAY_MODE:
		{
			system_state = SYSTEM_OPEN;  
		      #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = AV_IN_MODE;
			#else//else=> #ifdef AV_IN_THROUGH_EXT_ADC
			source_play_mode = CARD_PLAY_MODE;
			#endif//end=> #ifdef AV_IN_THROUGH_EXT_ADC
		       ircmd_dvd_usb_card_avin_dvb();
			break; 
		}		 
		default: 
			break; 
	} 		  

}
void  SYSTEM_CHANGE_TO_USB(void)
{
	switch(source_play_mode)
	{
		case DVD_PLAY_MODE:
		{
			DVD_TO_USB(); 			
			break; 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?