📄 usb.c
字号:
#ifndef _USB_C
#define _USB_C
#include "general.h"
#include "osdshow.h"
#include "../fslist/flcomm.h"
#ifdef UNICODE_SUPPORT_COPY
#include "../fslist/flspec.h"
#endif
void DRS232LogS(char *pcStr);
void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#pragma NOAREGS
#ifdef UNICODE_SUPPORT_COPY
#ifdef SUPPORT_USB_COPY
//#define TRICK_USB_DEV
#ifdef TRICK_USB_DEV
// the trick usb valide device for ui debug
xdata BYTE _bTrickUsbDev = 0;
#endif
// the max valide device
xdata BYTE _bValidDevNum = 0;
// device button display array
xdata BYTE _bDevDisplayArray[6];
// button array
xdata strucUSBCopyBtn _sUSBCopyBtn[12];
// the max valide device
xdata BYTE _bDevSel;
code BYTE bUSBCopyDevID[6]=
{
DEV_USB_SLOT_1,
DEV_USB_SLOT_2,
DEV_USB_SLOT_3,
DEV_USB_SLOT_4,
DEV_USB_SLOT_5,
DEV_USB_SLOT_6,
};
// notify the USB copy module, valide device number
BYTE bUSBCpChkDevNum(void) large
{
BYTE i;
BYTE bAttach;
BYTE bNs = 0;
//modify by msz00107 for multiple partition support
#ifdef SUPPORT_MULTI_PARTITION_FAT
#ifdef TRICK_USB_DEV
bAttach = _bTrickUsbDev;
#else
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
#endif
for(i = 0; i < 6; i++)
{
if(bAttach & (0x01 << i))
{
bNs++;
}
}
#else
#ifdef TRICK_USB_DEV
bAttach = _bTrickUsbDev;
#else
bAttach = bSharedInfo(SI_EMD_ATTACH);
#endif
for(i = 0; i < 6; i++)
{
if(bAttach & (0x01 << i))
{
bNs++;
}
}
#endif //mod end
return bNs;
}
// check the device valide
void vUSBCpCheckDev (void) large
{
BYTE i;
BYTE bAttach;
// check usb
//modify by msz00107 for multiple partition support
#ifdef SUPPORT_MULTI_PARTITION_FAT
#ifdef TRICK_USB_DEV
bAttach = _bTrickUsbDev;
#else
bAttach = ((bSharedInfo(SI_EMD_DRIVE_0) >> SV_MCR_TOTAL_NS) |
(bSharedInfo(SI_EMD_DRIVE_1) << SV_MCR_TOTAL_NS));
#endif
#else
#ifdef TRICK_USB_DEV
bAttach = _bTrickUsbDev;
#else
bAttach = bSharedInfo(SI_EMD_ATTACH);
#endif
#endif //mod end
for (i = HILI_USB_SLOT1; i <= HILI_USB_SLOT6; i++)
{
if (bAttach & (0x01 << (i-HILI_USB_SLOT1)))
{
_sUSBCopyBtn[i].bBtnState |= USB_COPY_BTN_ENABLE;
}
else
{
_sUSBCopyBtn[i].bBtnState &= USB_COPY_BTN_DISABLE;
}
}
return;
}
WORD wUSBCpGetNextFileAbsIdx (void) large
{
BYTE i,j;
BYTE bTmp;
WORD wTmp;
if(!_wUSBCpRmnNs)
{
return (0xffff);
}
for(i=(_wUSBCpNxtNo/8); i < (USB_COPY_MAX_NUM/8); i++)
{
bTmp = bSharedInfo(SI_USB_COPY_GRP_1_ST + i);
if(bTmp)
{
for(j=(_wUSBCpNxtNo%8); j < 8; j++)
{
if(bTmp & ((0x01) << j))
{
_wUSBCpRmnNs --;
_wUSBCpNxtNo = 8*i + j +1;
wTmp = 8*i + j;
return (wTmp);
}
}
}
}
return (0xffff);
}
// *********************************************************************
// Function : vUSBCpHiliBtn()
// Description : highlight button
// Parameter : bBtnID
// Return : none
// *********************************************************************
void vUSBCpHiliBtn(BYTE bBtnID) large
{
// set the button's color
vSetMsgCol4(FSMENU_OSD_WBIDX_BASIC, 15, 15, 15, ENTRY_COL_WHITE);
vSetBtnCol(FSMENU_OSD_WBIDX_BASIC, 15, 0, ENTRY_COL_WHITE, ENTRY_COL_BLACK);
vSelButton(FSMENU_OSD_WBIDX_BASIC, bBtnID);
// return to the default color set
vSetMsgCol4(FSMENU_OSD_WBIDX_BASIC, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_WHITE, ENTRY_COL_BLACK);
}
// *********************************************************************
// Function : vUSBCpUnHiliBtn()
// Description : unhighlight button
// Parameter : bBtnID
// Return : none
// *********************************************************************
void vUSBCpUnHiliBtn(BYTE bBtnID) large
{
// set the button's 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);
vUnselButton(FSMENU_OSD_WBIDX_BASIC, bBtnID);
// USB copy menu's color chang(YELLOW --> BACK GROUND)
_wStartX = COPY_MENU_START_X;
_wEndX = COPY_MENU_END_X;
_wStartY = COPY_MENU_START_Y;
_wEndY = COPY_MENU_START_Y + 5*33 + 28;
vChgColRep(FSMENU_OSD_WBIDX_BASIC, 15, ENTRY_COL_BG);
}
void vUSBCpShowChkBox (BYTE bIdx, BOOL fgSelected) large
{
vSetMsgCol4(FSMENU_OSD_WBIDX_BASIC, ENTRY_COL_GRAY, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_BLACK);
vSetStartEndXY(COPY_MENU_START_X, COPY_MENU_START_Y + 6 + (FLMN_ITEM_H+FLMN_ITEM_INT) * bIdx, COPY_MENU_START_X+25, COPY_MENU_START_Y + (FLMN_ITEM_H+FLMN_ITEM_INT) * bIdx + FLMN_ITEM_H);
if(fgSelected)
{
vPasteBmp(FSMENU_OSD_WBIDX_BASIC,BMP_HOOK);//BMP_USB_HOOK
}
else
{
vRectangle(FSMENU_OSD_WBIDX_BASIC, 0, 0, 1, 0);
}
}
void vUSBCpShowAllChkbox (void) large
{
BYTE i;
BYTE bTmp1;
BYTE bValidItemNs;
WORD widx;
//clear chk box area
vSetStartEndXY(COPY_MENU_START_X, COPY_MENU_START_Y, COPY_MENU_START_X+25, COPY_MENU_START_Y + (FLMN_ITEM_H+FLMN_ITEM_INT) * 5 + FLMN_ITEM_H);
vRectangle(FSMENU_OSD_WBIDX_BASIC, 0, 0, 1, 0);
if(_bFlMnItemNs > 6)
bValidItemNs = 6;
else
bValidItemNs = _bFlMnItemNs;
for(i=0;i<bValidItemNs;i++)
{
widx = wFlGetItemIdx(i);
bTmp1 = bSharedInfo(SI_USB_COPY_GRP_1_ST + widx/8);
if(bTmp1 & ((0x01) << (widx%8)))
{
vUSBCpShowChkBox(i,TRUE);
}
}
return;
}
// show the file copy number
void vUSBCpShowNum(void) large
{
BYTE pbStr[10];
BYTE bCharNum;
WORD wTmp;
// 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);
_wStartX = COPY_MENU_START_X;
_wStartY = COPY_MENU_START_Y +50;
//clear this region first
//_wEndX = COPY_MENU_END_X;
//_wEndY = _wStartY +30;
//vRectangle(FSMENU_OSD_WBIDX_BASIC, 0, 0, TRUE, ENTRY_COL_BG);
//show current number
wTmp = _wUSBCpTtlNs-_wUSBCpRmnNs;
if(wTmp >= 1000)
{
bCharNum = 4;
pbStr[0] = 4;
pbStr[1] = (wTmp)/1000 + '0';
pbStr[2] = (wTmp%1000)/100 + '0';
pbStr[3] = (wTmp%100)/10 + '0';
pbStr[4] = wTmp%10 + '0';
}
else if(wTmp >= 100)
{
bCharNum = 3;
pbStr[0] = 3;
pbStr[1] = (wTmp)/100 + '0';
pbStr[2] = (wTmp%100)/10 + '0';
pbStr[3] = wTmp%10 + '0';
}
else if(wTmp >= 10)
{
bCharNum = 2;
pbStr[0] = 2;
pbStr[1] = (wTmp)/10 + '0';
pbStr[2] = wTmp%10 + '0';
}
else
{
bCharNum = 1;
pbStr[0] = 1;
pbStr[1] = wTmp + '0';
}
//show "/"
pbStr[0] ++;
pbStr[bCharNum + 1] = '/';
//show total number
wTmp = _wUSBCpTtlNs;
if(wTmp >= 1000)
{
pbStr[0] += 4;
pbStr[bCharNum + 2] = (wTmp)/1000 + '0';
pbStr[bCharNum + 3] = (wTmp%1000)/100 + '0';
pbStr[bCharNum + 4] = (wTmp%100)/10 + '0';
pbStr[bCharNum + 5] = wTmp%10 + '0';
}
else if(wTmp >= 100)
{
pbStr[0] += 3;
pbStr[bCharNum + 2] = (wTmp)/100 + '0';
pbStr[bCharNum + 3] = (wTmp%100)/10 + '0';
pbStr[bCharNum + 4] = wTmp%10 + '0';
}
else if(wTmp >= 10)
{
pbStr[0] += 2;
pbStr[bCharNum + 2] = (wTmp)/10 + '0';
pbStr[bCharNum + 3] = wTmp%10 + '0';
}
else
{
pbStr[0] += 1;
pbStr[bCharNum + 2] = wTmp + '0';
}
vOsdShowStr(FSMENU_OSD_WBIDX_BASIC, pbStr);
return;
}
// show the file copy percent
void vUSBCpShowProgress(BOOL fgDone) large
{
BYTE pbStr[4];
BYTE bPercent = bSharedInfo(SI_FMV_PERCENT);
// 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);
// set the start x,y
_wStartX = COPY_MENU_START_X;
_wStartY = COPY_MENU_START_Y +90;
if (fgDone)
{
pbStr[0] = 4;
pbStr[1] = '1';
pbStr[2] = '0';
pbStr[3] = '0';
pbStr[4] = '%';
}
else if ((bPercent >= 0) && (bPercent < 100))
{
pbStr[0] = 4;
pbStr[1] = bPercent / 10 + '0';
pbStr[2] = bPercent % 10 + '0';
pbStr[3] = '%';
pbStr[4] = ' ';
}
else
{
pbStr[0] = 4;
pbStr[1] = '0';
pbStr[2] = '0';
pbStr[3] = '%';
pbStr[4] = ' ';
}
vOsdShowStr(FSMENU_OSD_WBIDX_BASIC, pbStr);
return;
}
void vUSBCpDevSelShowBtn(void) large
{
BYTE i;
BYTE bBtnID;
// draw device button
// highlight the first one.
for (i = 0; i < _bValidDevNum; i++)
{
bBtnID = _bDevDisplayArray[i];
// set the x,y
vSetStartEndXY(COPY_MENU_OPT_START_X, COPY_MENU_START_Y + 32 * (i), COPY_MENU_OPT_START_X+115, COPY_MENU_START_Y + 32 * (i) + 30);
// 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);
// create button
vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, bBtnID, 4, OSD_MSG_USB_SLOT1 + (bBtnID - HILI_USB_SLOT1), 0xFFFF, 0);
vUnselButton(FSMENU_OSD_WBIDX_BASIC, bBtnID);
}
return;
}
// *********************************************************************
// Function : vUSBCpDevSelShowMenu
// Description : Show device select menu
// Parameter : fgInit
// Return : none
// *********************************************************************
void vUSBCpDevSelShowMenu(BOOL fgInit) large
{
BYTE bTmp = 0;
BYTE bCount = 0;
if(fgInit)
{
// delete all item sel buttons
for (bTmp = HILI_ALL_SEL; bTmp <= HILI_EXIT; bTmp++)
{
vDelButton(FSMENU_OSD_WBIDX_BASIC, bTmp);
}
}
else
{
// delete all dev sel buttons
for (bTmp = HILI_USB_SLOT1; bTmp <= HILI_USB_SLOT6; bTmp++)
{
vDelButton(FSMENU_OSD_WBIDX_BASIC, bTmp);
}
}
// 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);
// check the device valide
vUSBCpCheckDev();
// clear the valide device array first
_bValidDevNum = 0;
for (bTmp = 0; bTmp < 6; bTmp++)
{
_bDevDisplayArray[bTmp] = 0;
}
// fill the valide device array
for (bTmp = HILI_USB_SLOT1; bTmp <= HILI_USB_SLOT6; bTmp++)
{
if ((_sUSBCopyBtn[bTmp].bBtnState & USB_COPY_BTN_ENABLE) == USB_COPY_BTN_ENABLE)
{
_bDevDisplayArray[bCount] = _sUSBCopyBtn[bTmp].bBtnID;
bCount++;
_bValidDevNum = bCount;
}
}
if(_bValidDevNum == 0) //pull out usb dev in dev sel menu
{
vUSBCopyStateExit(FALSE,FALSE);
return;
}
// set the highlight flag
_bUSBCpCurHili = _bDevDisplayArray[0];
// set highlight button info
_bDevSel = 0;
// draw device button, and highlight the first one.
vUSBCpDevSelShowBtn();
// highlight the button (first)
vUSBCpHiliBtn(_bUSBCpCurHili);
return;
}
void vUSBCpDevSelRefresh(void) large
{
BYTE bDevNum = bUSBCpChkDevNum();
// if the valide device number have chang, redraw the device select menu.
if (bDevNum != (_bValidDevNum))
{
vUSBCpDevSelShowMenu(FALSE);
}
return;
}
// *********************************************************************
// Function : vUSBCpConfirmShowMenu
// Description : Show device select menu
// Parameter : fgInit
// Return : none
// *********************************************************************
void vUSBCpConfirmShowMenu(void) large
{
WORD wRmnSize;
BYTE pbString[8];
if((bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_MBR_ERROR) || (bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_NOT_SUPPORT))
{
// draw the "BACK" button
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -