ircmd_mode.c

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

C
1,089
字号


#ifdef IR_SWITCH_DVD_USB_CARD_AVIN_DVB
//Qiaohuilin:2005-9-22
#ifdef MUSTEK_LCD_DRIVE_BITEK
#include "LCD\OSD.h"
#include "LCD\YUV.H"
#endif
/**************************************************************************
 *  Function Name: ircmd_dvd_usb_card_avin_dvb                            *
 *  Purposes:                                                             *
 *    Switch Media play between DVD,USB,Card,AV_IN and DVB-T              *
 *  Descriptions:                                                         *
 *    1.If you use this function,system will not automatically detect USB *
 *    or Card.                                                            *
 *    2.You can freely switch system between the state below:DVD,USB,Card,*
 *    AV_IN and DVB-T in this function.                                   *
 *  Arguments:                                                            *
 *    NULL                                                                *
 *  Returns:                                                              *
 *    NULL                                                                *
 **************************************************************************/
 #ifdef FIX_STATE_CHANE_NOT_READ_USB  
 extern  void force_detached();
 #endif// end=>  #ifdef FIX_STATE_CHANE_NOT_READ_USB 
 #ifdef SUPPORT_DVB_DESKTOP_STOP_SERVO_WHEN_TUNEON  //yangli add for usb ,card stop servo,2006-2-16 16:30,
 extern int stop_servo_flag;
 #endif
#ifdef SUPPORT_DVB_BOOKING
extern UINT8 iCountTime;
#endif 
void ircmd_dvd_usb_card_avin_dvb(void)
{
    if(prog_cnt)  ///yangli ,2006-2-27 23:07
    {
        prog_cnt = 0; 
        prog_func_clear();  
    }
    printf_w("----------yang li 1 = %d --------\n",source_play_mode);
    #ifdef MODE_SWITCH_DELAY
   // if(usb_card_state == USB_CARD_WAS_PLUG_OUT)
     //   return;
        //counter_down = 2; 
    mode_key_delay_cnt = 3;//MODE_DELAY_CNT;
    #endif
    
    #ifdef SUPPORT_DVB_BOOKING
    if(iCountTime>0)
        return;
    #endif
    
    //by justin 2005/11/15   close the setup_menu if you want to change mode and setup menu is openning
	if(full_scrn&SETUP) 
	    ExitSetupPage(1);	
    
    //Jack highly notes:in reading CD/DVD TOC state ,we should not let this key can change system state!!
    //Otherwise will cause some inexplicable issues.
    #ifdef MUSTEK_K100D_MODEL
    if( (source_play_mode==DVD_PLAY_MODE) && ((system_state==SYSTEM_READ_TITLE)||((system_state==SYSTEM_OPEN)/*&&(play_state==VCD_STATE_CLOSE)*/)) )
    #else
     if( (source_play_mode==DVD_PLAY_MODE) && ((system_state==SYSTEM_READ_TITLE)||(CDOpened())/*||((system_state==SYSTEM_OPEN)&&(play_state==VCD_STATE_CLOSE))*/) )
    #endif
        return;
    
    GPIO_MUTE();
            
	if(source_play_mode == DVD_PLAY_MODE)
    {
        osd_clear_and_init();

   
       #ifdef SUPPORT_DVD_TO_USB_CARD_DVB_ENABLE_RESUME//tianye 200607
	  #ifdef SUPPORT_LAST_MEMERY
	   if(memery_resumeflag)
    	  #endif//end=> #ifdef SUPPORT_LAST_MEMERY
         {
            RsmInfo2Flash(0);
         }
	 #endif//end=> #ifdef SUPPORT_DVD_TO_USB_CARD_DVB_ENABLE_RESUME	 
	 //-------------------------------------------

		
        #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);
            #ifdef TRAY_AVAILABLE//It seems that this will cause some servo bug,so markd again 06/02/22
            stop_loader();
            #endif
            delay_srv_10ms(5);
            
        }
        #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(300);
		    printf_w("here  2=\n");
		}
		#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 
		

		#ifdef FIX_CARD_USD_OSD_ERR  
		polling_storage();
        #endif// end=>  #ifdef FIX_CARD_USD_OSD_ERR 

        #ifdef NO_USB_NO_CARD
		ircmd_dvb_dvd();
		#else
		switch_usb_card();
		#endif
		#ifdef FIX_STATE_CHANE_NOT_READ_USB  
		force_detached();
        #endif// end=>  #ifdef FIX_STATE_CHANE_NOT_READ_USB 
        #ifdef ONLY_CARD_NO_USB
        source_play_mode = CARD_PLAY_MODE;
        #elif defined(NO_USB_NO_CARD)
		source_play_mode = DVB_T_MODE;  
        #else
		source_play_mode = USB_PLAY_MODE;  
		#endif 
    }
	else if(source_play_mode == USB_PLAY_MODE)
    {           	
       	
		osd_clear_and_init();
		#ifdef ONLY_USB_NO_CARD
		ircmd_dvb_dvd();
		source_play_mode = DVB_T_MODE;
		#else
		switch_usb_card();
		source_play_mode = CARD_PLAY_MODE;	
		#endif
		
	}
	else if(source_play_mode == CARD_PLAY_MODE)
    #ifdef AV_IN_THROUGH_EXT_ADC
    {              
		osd_clear_and_init();
		
		ircmd_post_func(CMD_FUNC|CMD_FUNC_OPEN);
  	    //play_state = VCD_STATE_NORMAL;
	    //psprintf(RegionValStr[REGION2], "AV IN STATE");
        //PrintOsdMsg(STR_OS_SPACE, REGION2, 3, 1);
        
        source_play_mode = AV_IN_MODE;
        if(!(detect_type&0x1e))
        {
            system_state = SYSTEM_AVIN;
            usb_card_state = USB_CARD_NO_CHANGE;
            mode_switch_reset_var();
        }
        else
            usb_card_state = FROM_CARD_TO_AV_IN;
        
        //QiaoHuilin:2005-9-22
        #ifdef MUSTEK_LCD_DRIVE_BITEK
	    YUV_SetSourceMode(YUV_ID_CVBS_11);
        //	POR_PowerOn();//Sunpluss  advice      	
	    OSD_ShowMsg(OSD_MESSAGE,0,0,"    AV IN");
	    OSD_EnableWindow(OSD_MESSAGE, TRUE);  
	    if(user_mute)
		    LCD_ShowMuteIcon();  
        #endif
    }
	else if(source_play_mode == AV_IN_MODE)
	#endif
	{
	    enable_video_DAC_out(1);
	    ircmd_dvb_dvd();
	    source_play_mode = DVB_T_MODE;
	    //QiaoHuilin:2005-9-22
        #ifdef MUSTEK_LCD_DRIVE_BITEK
	    YUV_SetSourceMode(YUV_ID_YCBCR);
	    OSD_ShowMsg(OSD_MESSAGE,0,0,"      DVB");
	    OSD_ShowMsg(OSD_MESSAGE,0,1,"         ");
	    OSD_EnableWindow(OSD_MESSAGE, TRUE);  
        #endif
	}
	else if(source_play_mode == DVB_T_MODE)
	{//switch to DVD play mode
	    printf_w("====source_play_mode == dvb_t_mode ====\n");
	    volatile int *iMagic=(int *)(DATA_RAM_BASE|0xa0); ///yangli ,2006-2-20 19:56
        *iMagic = 0xff;
		ircmd_dvb_dvd();
	    source_play_mode = DVD_PLAY_MODE;
	    #ifdef MODE_SWITCH_DELAY///YANGLI ,2006-2-22 23:18
           mode_key_delay_cnt = 10;
        #endif
	    no_disk_cnt = DETECT_TIMES;
        media_type = MEDIA_CD;
        #ifndef SUPPORT_DPF_UI
		if(play_state != VCD_STATE_OPEN)//20051230 tiany add
            PrintOsdMsg(STR_OS_READ,REGION1,0,0);
        #endif
        //QiaoHuilin:2005-9-22
        #ifdef MUSTEK_LCD_DRIVE_BITEK
	    YUV_SetSourceMode(YUV_ID_YCBCR);
	    OSD_ShowMsg(OSD_MESSAGE,0,0,"         ");
	    OSD_EnableWindow(OSD_MESSAGE, FALSE);  
        #endif
	}
	
	#ifdef DEBUG_SWITCH_DVD_USB_CARD_AVIN_DVB	
	printf_w("now system play mode--->%d\n",source_play_mode);
	#endif
}

/**************************************************************************
 *  Function Name: switch_usb_card                                        *
 *  Purposes:                                                             *
 *    Switch Media play only between USB and Card                         *
 *  Descriptions:                                                         *
 *    Called by ircmd_dvd_usb_card_avin_dvb()                             *
 *  Arguments:                                                            *
 *    NULL                                                                *
 *  Returns:                                                              *
 *    NULL                                                                *
 **************************************************************************/

#ifdef ONLY_CARD_NO_USB
void switch_usb_card(void)
{
    	if(/*(detect_result_last == 0x01)||*/(source_play_mode==DVD_PLAY_MODE))//when play USB
	{
	   	if(!(detect_type&0x1e))
	    {
	       	if((detect_type&USB_DEVICE) && (system_state==SYSTEM_BROWSE))
	       	{
	       	    AVD_SetMediaTimeout();
	       	    ircmd_post_func(CMD_FUNC | CMD_FUNC_OPEN);
	       	}
	       	
	       	psprintf(RegionValStr[REGION1], "CARD NOT FOUND");
	        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 & 0x1e);
            storage_type = now_valid_type;
            detect_result_last = storage_type;
            
	        SwitchMedia(CARD2CARD);
	        usb_card_state = HAS_CARD_AND_SWITCH_TO_CARD;
	    }
	}   
}
#elif defined(ONLY_USB_NO_CARD)
void switch_usb_card(void)
{
    if(source_play_mode == DVD_PLAY_MODE)
	{
	   	if( !(/*IsCardMediaExist()&&*/(detect_type&USB_DEVICE)) )
	    {
	       	psprintf(RegionValStr[REGION1], "USB NOT FOUND");
	        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;
        }   
	}     
}
#else//#ifdef ONLY_CARD_NO_USB//tianye 200607
#ifdef    SUPPORT_OTHER_LANGUAGE_STRING
extern    const char *const osd_other_str[N_OSD_LANGS][STRINE_NUM];
#endif //end=> #ifdef    SUPPORT_OTHER_LANGUAGE_STRING
void switch_usb_card(void)
{
    #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(source_play_mode == DVD_PLAY_MODE)
	{
	   	if( !(/*IsCardMediaExist()&&*/(detect_type&USB_DEVICE)) )
	    {

		     #ifdef SUPPORT_OTHER_LANGUAGE_STRING//tianye 200607
			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;
        }   
	}  
	else if(/*(detect_result_last == 0x01)||*/(source_play_mode==USB_PLAY_MODE))//when play USB
	{
	   	if(!(detect_type&0x1e))
	    {
	       	if((detect_type&USB_DEVICE) && (system_state==SYSTEM_BROWSE))
	       	{
	       	    AVD_SetMediaTimeout();
	       	    ircmd_post_func(CMD_FUNC | CMD_FUNC_OPEN);
	       	}
	       	

			#ifdef    SUPPORT_OTHER_LANGUAGE_STRING//tianye 200607
			 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
	    {

⌨️ 快捷键说明

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