📄 8202_usb_card_if.c
字号:
// USB enumerated, proceed accordingly
//-------------------------------------------------------------------------
else
{
if(!uhci_PlugInOutDetect()) // test for slave device detach
{
printf("slave is detached!!!\n");
usb_plug_out_flag=1;
#ifdef MP3_ONLY_STOP_TO_GUI
if( (play_state==VCD_STATE_MP3_FILELIST) && (media_type==MEDIA_CARD) )
{
ShowTitle();
SwitchMedia(CARD2CD); //wsf 2004-9-16 16:43
}
#endif
SLAVE_ENUMERATED = FALSE; // return to un-enumeration
if((media_type == MEDIA_CARD)&&(storage_type == USB_DEVICE)) //liweihua mod 2004-3-30
{
if(Mp3ReadFinish)
Mp3ReadFinish = 0;
if((play_state == VCD_STATE_PAUSE)||(GetCurrentFileType() == CDROM_WMA))//liweihua mod 2004-4-19
ircmd_stop();
AVD_SetMediaInterrupt(); //wthsin , 2004/4/19 02:47pm
}
if(play_state != VCD_STATE_OPEN) //liweihua add 2004-2-1
{
if((media_type == MEDIA_CARD)&&(storage_type == USB_DEVICE))
play_state = VCD_STATE_STOP;
card_plug_state = USER_DO_PLUG_OUT;
}
detect_type &= (~USB_DEVICE);
storage_type &= (~USB_DEVICE);
return 2; // exit now.
}
}
//-------------------------------------------------------------------------
//USB Card reader special process
//-------------------------------------------------------------------------
USBCardReaderDetect();
return 0;
}
#endif//end SUPPORT_USB
/**************************************************************************
* *
* Function Name: CardTestReady *
* *
* Purposes: *
* detect and initialize card/usb, then set card to browse *
* Descriptions: *
* detect and initialize card/usb, then set card to browse *
* Arguments: *
* NONE *
* Returns: NONE *
* *
* See also: NONE *
* *
**************************************************************************/
void CardTestReady(void)
{
UINT8 media_exit=0;
#ifdef IR_SWITCH_CD_USB_CF_OTHER
storage_type = detect_result_last;
now_valid_type = storage_type; //for bug:read cf,insert usb,will read cf again.
#ifdef HIGH_CORTROL_CF
GPIO_O_SET(SWITCH_GPIO,0);//dingzhy for switch bus 4-10-22 10:43
#else
GPIO_O_SET(SWITCH_GPIO,1);
#endif
#endif
if(storage_type!=0)
{
#ifdef SPHE8202_CARD_STORAGE //Maoyong 2004-8-12 do card power reset.
if(storage_type != USB_DEVICE)
Card_power_reset();
#endif
switch(storage_type)
{
#ifdef SPHE8202_CARD_STORAGE
#if defined(COMPACT_FLASH)
case CF_CARD_DEVICE:
#ifdef IR_SWITCH_CD_USB_CF_OTHER //dingzhy 4-10-22 10:41
#ifdef HIGH_CORTROL_CF
GPIO_O_SET(SWITCH_GPIO,1);//dingzhy use vfd data for test switch bus 4-10-22 10:43
#else
GPIO_O_SET(SWITCH_GPIO,0);
#endif
#endif
#ifdef CARD_SETUP_TYPE_2
regs0->fm_gpio_mode = 8;
#elif defined(CARD_SETUP_TYPE_3)||defined(CARD_SETUP_TYPE_5)
regs0->gpio_mode_B=2;
regs0->fm_gpio_mode = 3;
#endif
#ifdef IDE_CF_SW
IdeSetSequence(HD);//kenny 2004/8/29
#endif
cfIdeDetect();
media_exit=1;
break;
#endif
#if defined(SD_MMC_CARD)
case SD_CARD_DEVICE:
#ifdef CARD_SETUP_TYPE_2
regs0->fm_gpio_mode = 3;
#elif defined(CARD_SETUP_TYPE_3)||defined(CARD_SETUP_TYPE_4)
regs0->gpio_mode_B=0;
regs0->fm_gpio_mode = 3;
#endif //CARD_SETUP_TYPE_2
if(sdDetect()) //wthsin, 2004/6/24 07:40pm
{
psprintf(RegionValStr[REGION1], "SD Err");
PrintOsdMsg(STR_OS_SPACE, REGION1, 0, 1);
}
else
media_exit=1;
break;
#endif
#if defined(MEMORY_STICK)
case MS_CARD_DEVICE:
#ifdef CARD_SETUP_TYPE_2
regs0->fm_gpio_mode = 4;
#elif defined(CARD_SETUP_TYPE_3)||defined(CARD_SETUP_TYPE_4)
regs0->gpio_mode_B=0;
regs0->fm_gpio_mode = 4;
#endif //CARD_SETUP_TYPE_2
msDetect();
media_exit=1;
break;
#endif
#if defined(SMART_MEDIA)
case SMC_CARD_DEVICE:
#ifdef CARD_SETUP_TYPE_2
regs0->fm_gpio_mode = 8;
#elif defined(CARD_SETUP_TYPE_3)
regs0->fm_gpio_mode = 3;
regs0->gpio_mode_B=1;
#endif //CARD_SETUP_TYPE_2
if(smcDetect())
{
psprintf(RegionValStr[REGION1], "SMC Err");
PrintOsdMsg(STR_OS_SPACE, REGION1, 0, 1);
}
else
media_exit=1;
break;
#endif
#endif//#ifdef SPHE8202_CARD_STORAGE
#ifdef SUPPORT_USB//liweihua 2004-6-7
case USB_DEVICE:
#if defined(IR_SWITCH_CD_USB_CF_OTHER)||defined(SPHE8202_USB_Write)||defined(FILE_MODE_WRITE) //dingzhy add it
UsbTestReady(); //for bug:power on without usb,then insert usb,but can't play usb; dingzhy 04-10-22
#endif
media_exit=1;
break;
#endif//#ifdef SUPPORT_USB
default:
return;
}
}
//#endif
if(media_exit)
{
#ifdef SPHE8202_ALL_TYPE_CARD_WRITE
if(card_browse_sign)
#endif
#ifdef FILE_MODE_WRITE //sunzhh add for file mode 2005-1-14
if(!file_mode_flag)
#endif
CardSetBrowse();
}
}
/**************************************************************************
* *
* Function Name: CARDIsPlugIn *
* *
* Purposes: *
* Detect if the USB or CARD is pluged *
* Descriptions: *
* Detect if the USB or CARD is pluged *
* Arguments: *
* NONE *
* Returns: *
* 0: FALSE *
* 1: TRUE *
* See also: NONE *
* *
**************************************************************************/
int CARDIsPlugIn(void)
{//liweihua update 2004-6-8
int detect_result = 0;
if(storage_type!=0)
{
#ifdef SUPPORT_USB
if(storage_type == USB_DEVICE)
detect_result=UsbIsPlugIn();
#endif
#if defined(SUPPORT_USB)&&defined(SPHE8202_CARD_STORAGE)
else
#endif
#ifdef SPHE8202_CARD_STORAGE
detect_result=CardStorageIsPlugIn();
#endif
}
return detect_result;
}
/**************************************************************************
* *
* Function Name: polling_storage *
* *
* Purposes: *
* polling to detect usb/card plus in or plug out *
* Descriptions: *
* polling to detect usb/card plus in or plug out *
* Arguments: *
* NONE *
* Returns: NONE *
* *
* See also: NONE *
* *
**************************************************************************/
extern int check_support_usb(void); //wthsin, 2004/5/27 01:34pm
void polling_storage()
{//liweihua update 2004-6-8
BYTE detect_result = 0;
#ifdef SPHE8202_CARD_STORAGE
if(CardEna == TRUE) //only after card init then polling.
Detect_Card_Storage();
#endif
#if defined(SUPPORT_USB)
if(USBEna == TRUE) //only after USB init then polling.
{
#ifdef SPHE1000
#ifdef HOST_UHCI
uhci_slaveDetect();
#else //#define HOST_SL811HS
slave_detect();
#endif
#else
#ifdef HOST_UHCI
if(check_support_usb()==0) return;
uhci_slaveDetect();
#else //#define HOST_SL811HS
slave_detect();
#endif
#endif
}
#endif
detect_result=storage_parity_type[detect_type];
#ifdef SWITCH_CD_CARD_USB//liweihua 2004-6-9
extern BYTE select_media_type;
if(detect_type&select_media_type)
detect_result = select_media_type;
else
select_media_type = 0;
#endif
#ifdef IR_SWITCH_CD_USB_CF_OTHER //dingzhy for bus switch 04-10-22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -