📄 usb.c
字号:
}
BOOL fgUSBCpCopyingEnterKey(void) large
{
BOOL fgRet = TRUE;
vFlMnUSBCpCancel();
return(fgRet);
}
void vUSBCopyStateInit(void) large
{
BYTE i;
WORD wMsg;
// init all the button's state
for (i = 0; i <= HILI_USB_SLOT6; i++)
{
_sUSBCopyBtn[i].bBtnID = i;
_sUSBCopyBtn[i].bBtnState = 0;
_sUSBCopyBtn[i].bBtnState |= (USB_COPY_BTN_ENABLE);
}
// init all chk box and total checked number
vSetSharedInfo(SI_USB_COPY_GRP_1_ST, 0x00);
for (i = 1; i < (USB_COPY_MAX_NUM + 7)/8; i++)
{
vWriteNextSharedItem(0x00);
}
_wUSBCpNxtNo = 0; //set polling index to zero
_wUSBCpRmnNs = 0; //set remain number zero
_wUSBCpTtlNs = 0; //set total number to zero
// set color
vSetMsgCol4(FSMENU_OSD_WBIDX_BASIC, ENTRY_COL_GRAY, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_BLACK);
vSetBtnCol(FSMENU_OSD_WBIDX_BASIC, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_WHITE, ENTRY_COL_BLACK);
// draw opt button
for (i = HILI_ALL_SEL; i <= HILI_EXIT; i++)
{
switch (i)
{
case HILI_ALL_SEL:
wMsg = OSD_MSG_ALL_SELECT;
break;
case HILI_ALL_UNSEL:
wMsg = OSD_MSG_ALL_UNSEL;
break;
case HILI_COPY_DEL:
if(bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)
wMsg = OSD_MSG_COPY;
else
wMsg = OSD_MSG_DEL;
break;
case HILI_EXIT:
wMsg = OSD_MSG_EXIT;
break;
default:
break;
}
vSetStartEndXY(COPY_MENU_OPT_START_X, COPY_MENU_START_Y + 24 + 38 * (i-HILI_ALL_SEL), COPY_MENU_OPT_START_X+115, COPY_MENU_START_Y + 24 + 38 * (i-HILI_ALL_SEL) + 30);
vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, i, 4, wMsg, 0xFFFF, 0);
vUnselButton(FSMENU_OSD_WBIDX_BASIC, i);
}
_bUSBCopyState = USB_COPY_STATE_ITEM_SEL;
_bUSBCpCurHili = HILI_FILEMENU;
#ifdef USB_COPY_FORCE_ABORT
vSetSharedInfo(SI_DDISC_COPY_ABORT, FALSE);
#endif
return;
}
BOOL fgUSBCopyState(void) large
{
BOOL fgRet = TRUE;
switch(_bIRKey)
{
case IR_USB_COPY_DEL:
if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
vFlMnUSBCpCancel();
}
else
{
vUSBCopyStateExit(FALSE,FALSE);
}
break;
case IR_UP:
if(_bUSBCopyState == USB_COPY_STATE_ITEM_SEL)
{
fgRet = fgUSBCpItemSelUpKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
fgRet = fgUSBCpDevSelUpKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
//do nothing here
}
break;
case IR_DOWN:
if(_bUSBCopyState == USB_COPY_STATE_ITEM_SEL)
{
fgRet = fgUSBCpItemSelDownKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
fgRet = fgUSBCpDevSelDownKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
//do nothing here
}
break;
case IR_LEFT:
if(_bUSBCopyState == USB_COPY_STATE_ITEM_SEL)
{
fgRet = fgUSBCpItemSelLeftKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
//do nothing here
}
else if(_bUSBCopyState == USB_COPY_STATE_CONFIRM)
{
fgRet = fgUSBCpConfirmLeftKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
//do nothing here
}
break;
case IR_RIGHT:
if(_bUSBCopyState == USB_COPY_STATE_ITEM_SEL)
{
fgRet = fgUSBCpItemSelRightKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
//do nothing here
}
else if(_bUSBCopyState == USB_COPY_STATE_CONFIRM)
{
fgRet = fgUSBCpConfirmRightKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
//do nothing here
}
break;
case IR_PLAY:
case IR_ENTER:
case IR_PLAY_ENTER:
if(_bUSBCopyState == USB_COPY_STATE_ITEM_SEL)
{
fgRet = fgUSBCpItemSelEnterKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
fgRet = fgUSBCpDevSelEnterKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_CONFIRM)
{
fgRet = fgUSBCpConfirmEnterKey();
}
else if(_bUSBCopyState == USB_COPY_STATE_COPYING)
{
fgRet = fgUSBCpCopyingEnterKey();
}
break;
default: //should not happen
break;
}
return(fgRet);
}
//in current state, data Var space is so limit, So change the Var type to BYTE
//fgReload only set TRUE in the case of exit from USB delete function
void vUSBCopyStateExit(BYTE fgReload, BYTE fgInit) large
{
BYTE i;
//PL00113703, if usb copy exit by Exception, it need release file list lock
vFlCmdDone();
vFlClRls();
// del all buttons
for (i = 0; i <= HILI_CANCEL; i++)
{
vDelButton(FSMENU_OSD_WBIDX_BASIC, i);
}
// clear the area of menu
vSetStartEndXY(COPY_MENU_START_X, COPY_MENU_START_Y, COPY_MENU_END_X, COPY_MENU_END_Y);
vRectangle(FSMENU_OSD_WBIDX_BASIC, 0, 0, TRUE, ENTRY_COL_BG);
_bUSBCopyState = USB_COPY_STATE_NONE;
// default the color
vSetMsgCol4(FSMENU_OSD_WBIDX_BASIC, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_WHITE, ENTRY_COL_BLACK);
if(fgReload)
{
//current usb copy function may delete folder, and maybe it need load new folder information
//so we need reload EMD device after delete file/folder
//it will send cmd to risc to reload current EMD device here
vDeleteWB(FL_MENU_WB);
vDeleteWB(FL_INFO_WB);
vFlCmdSync();
}
else
vFsMenuInit(fgInit);
return;
}
void vUSBCopyException(BYTE bErrCode) large
{
WORD wErrMsg = 0;
BOOL fgExit = TRUE;
switch(bErrCode)
{
case SV_FMV_ERR_DEVICEFULL:
wErrMsg = OSD_MSG_ERR_DEVICE_FULL;
break;
case SV_FMV_ERR_CREATEFILEFAILS:
wErrMsg = OSD_MSG_ERR_CREATE_FILE_FAIL;
break;
case SV_FMV_ERR_DEVWRITEFAILS:
wErrMsg = OSD_MSG_ERR_DEV_WRITE_FAIL;
break;
case SV_FMV_ERR_FILE_LENGTH_ZERO: //simon add it, if the length of file to copy is zero, finish work.
wErrMsg = OSD_MSG_ERR_FILE_LENGTH_ZERO;
break;
case SV_FMV_ERR_DEV_WRITE_PROTECT: //write_protect_support
wErrMsg = OSD_MSG_ERR_WRITE_PROTECT;
break;
default:
fgExit = FALSE;
// wErrMsg =
break;
}
// exit the USB copy menu
if (fgExit)
{
#ifdef RS232_LOG
DBGLogS("vUSBCopyException xx1");
DBGLogB(bErrCode, 0xff, 0xff, 0xff);
#endif
// exit the menu
vUSBCopyStateExit(FALSE,FALSE);
// print the error message
_wStartX = 45;
_wStartY = 280;
vOsdPosShow(OSD_POS_FS_INFO_BAR,wErrMsg,8); //PL00113703, show msg with timeout
}
return;
}
void vUSBCopyTimer(void) large
{
if((_bUSBCopyState > USB_COPY_STATE_ITEM_SEL) && (_bUSBCopyState < USB_COPY_STATE_MAX))
{
if(_bUSBCopyState == USB_COPY_STATE_DEV_SEL)
{
vUSBCpDevSelRefresh();
}
else if(_bUSBCopyState == USB_COPY_STATE_CONFIRM)
{
//if current device pull out, exit usb copy function
if(!(bSharedInfo(SI_EMD_ATTACH) & (0x01 << bSharedInfo(SI_LUN_ID))))
{
vUSBCopyStateExit(FALSE,FALSE);
}
}
else if (_bUSBCopyState == USB_COPY_STATE_COPYING)
{
//show the copy process
if (_bUSBCpCnt == 0)
{
if (bSharedInfo(SI_FMV_PERCENT) == 100)
{
vUSBCpShowProgress(TRUE);
}
else
{
vUSBCpShowProgress(FALSE);
}
_bUSBCpCnt = 5;
}
//handle Exceptions
vUSBCopyException(bSharedInfo(SI_FMV_ERR_CODE));
_bUSBCpCnt--;
}
}
}
#else
code BYTE bUSBCopyDevID[1];
#endif
#else
#ifdef SUPPORT_USB_COPY
static xdata WORD _wEffact;
static code strucUSBItem _prUSBItem[USB_TOTAL_ITEM] =
{
{ STUSB_USB_SLOT1,OSD_MSG_USB_SLOT1},
{ STUSB_USB_SLOT2,OSD_MSG_USB_SLOT2},
{ STUSB_USB_SLOT3,OSD_MSG_USB_SLOT3},
{ STUSB_USB_SLOT4,OSD_MSG_USB_SLOT4},
{ STUSB_USB_SLOT5,OSD_MSG_USB_SLOT5},
{ STUSB_USB_SLOT6,OSD_MSG_USB_SLOT6},
};
void vUSBChkSlot1(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT //simon mul
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x01))
_wEffact &= ~0x01;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)& 0x01))
_wEffact &= ~0x01;
#endif
return;
}
void vUSBChkSlot2(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x02))
_wEffact &= ~0x02;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)&0x02))
_wEffact &= ~0x02;
#endif
return;
}
void vUSBChkSlot3(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x04))
_wEffact &= ~0x04;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)&0x04))
_wEffact &= ~0x04;
#endif
return;
}
void vUSBChkSlot4(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x08))
_wEffact &= ~0x08;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)&0x08))
_wEffact &= ~0x08;
#endif
return;
}
void vUSBChkSlot5(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x10))
_wEffact &= ~0x10;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)&0x10))
_wEffact &= ~0x10;
#endif
return;
}
void vUSBChkSlot6(void) large
{
#ifdef SUPPORT_MULTI_PARTITION_FAT
BYTE bAttach;
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
if(!(bAttach & 0x20))
_wEffact &= ~0x20;
#else
if(!(bSharedInfo(SI_EMD_ATTACH)&0x20))
_wEffact &= ~0x20;
#endif
return;
}
void vUSBChkValid(BYTE bType) large
{
switch(bType)
{
case STUSB_USB_SLOT1:
vUSBChkSlot1();
break;
case STUSB_USB_SLOT2:
vUSBChkSlot2();
break;
case STUSB_USB_SLOT3:
vUSBChkSlot3();
break;
case STUSB_USB_SLOT4:
vUSBChkSlot4();
break;
case STUSB_USB_SLOT5:
vUSBChkSlot5();
break;
case STUSB_USB_SLOT6:
vUSBChkSlot6();
break;
default:
break;
}
}
// *********************************************************************
// Function : void vChangeWBColor(BYTE bWBIdx,WORD wSX,WORD wSY,WORD wEX,WORD wEY,BYTE bOldCol,BYTE bNewCol) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
static void vChangeWBColor(BYTE bWBIdx,WORD wSX,WORD wSY,WORD wEX,WORD wEY,BYTE bOldCol,BYTE bNewCol) large
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -