⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:
    vSetStartEndXY(COPY_MENU_START_X + 40,
                 COPY_MENU_START_Y + 140,
                 COPY_MENU_START_X + 140,
                 COPY_MENU_START_Y + 170);

    vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, HILI_BACK, 4, OSD_MSG_BACK, 0xFFFF, 0);

    // highlight the "BACK" button
    _bUSBCpCurHili = HILI_BACK;

    vUSBCpHiliBtn(_bUSBCpCurHili);
	
    //show "device not support"
    _wStartX = COPY_MENU_START_X;
    _wStartY = COPY_MENU_START_Y +10;
    vOsdMsgPaste(FSMENU_OSD_WBIDX_BASIC,OSD_MSG_ERR_DEVICE_FAIL);
  }
  else
  {
    // 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 the "BACK"  button
    vSetStartEndXY(COPY_MENU_START_X,
                 COPY_MENU_START_Y + 140,
                 COPY_MENU_START_X + 100,
                 COPY_MENU_START_Y + 170);

    vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, HILI_BACK, 4, OSD_MSG_BACK, 0xFFFF, 0);
    // unhighlight the "BACK" button
    vUSBCpUnHiliBtn(HILI_BACK);

    // draw the "NEXT"  button
    vSetStartEndXY(COPY_MENU_START_X + 110,
                 COPY_MENU_START_Y + 140,
                 COPY_MENU_START_X + 210,
                 COPY_MENU_START_Y + 170);

    vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, HILI_NEXT, 4, OSD_MSG_NEXT, 0xFFFF, 0);
	
    // highlight the "NEXT" button
    _bUSBCpCurHili = HILI_NEXT;
    vUSBCpHiliBtn(_bUSBCpCurHili);

    //show Remain size
    _wStartX = COPY_MENU_START_X;
    _wStartY = COPY_MENU_START_Y +10;
    vOsdMsgPaste(FSMENU_OSD_WBIDX_BASIC,OSD_MSG_RMN_SZ);
	
    // Unit is MByte, Current we only support Max 32Gbyte usb device, so we will ignore remain space byte more than 32Gbyte
    _wStartY = COPY_MENU_START_Y +10+30;
    wRmnSize =  ((WORD)(bSharedInfo(SI_MP3_COPY_REMSPACE_B3) >> 4) |((WORD)(bSharedInfo(SI_MP3_COPY_REMSPACE_B4) << 4)) |((WORD)((bSharedInfo(SI_MP3_COPY_REMSPACE_B5) & 0x07)<< 12)));
    if(wRmnSize/10000)
    {
      pbString[0] = 7;
	  
      pbString[1] = '0' + (BYTE)(wRmnSize/10000);
      wRmnSize = wRmnSize%10000;
      pbString[2] = '0' + (BYTE)(wRmnSize/1000);
      wRmnSize = wRmnSize%1000;
      pbString[3] = '0' + (BYTE)(wRmnSize/100);
      wRmnSize = wRmnSize%100;
      pbString[4] = '0' + (BYTE)(wRmnSize/10);
      wRmnSize = wRmnSize%10;
      pbString[5] = '0' + (BYTE)wRmnSize;
	  
      pbString[6] = 'M';
      pbString[7] = 'B';
    }
    else if(wRmnSize/1000)
    {
      pbString[0] = 6;
	  
      pbString[1] = '0' + (BYTE)(wRmnSize/1000);
      wRmnSize = wRmnSize%1000;
      pbString[2] = '0' + (BYTE)(wRmnSize/100);
      wRmnSize = wRmnSize%100;
      pbString[3] = '0' + (BYTE)(wRmnSize/10);
      wRmnSize = wRmnSize%10;
      pbString[4] = '0' + (BYTE)wRmnSize;
	  
      pbString[5] = 'M';
      pbString[6] = 'B';
    }
    else if(wRmnSize/100)
    {
      pbString[0] = 5;
	  
      pbString[1] = '0' + (BYTE)(wRmnSize/100);
      wRmnSize = wRmnSize%100;
      pbString[2] = '0' + (BYTE)(wRmnSize/10);
      wRmnSize = wRmnSize%10;
      pbString[3] = '0' + (BYTE)wRmnSize;
	  
      pbString[4] = 'M';
      pbString[5] = 'B';
    }
    else if(wRmnSize/10)
    {
      pbString[0] = 4;
	  
      pbString[1] = '0' + (BYTE)(wRmnSize/10);
      wRmnSize = wRmnSize%10;
      pbString[2] = '0' + (BYTE)wRmnSize;
	  
      pbString[3] = 'M';
      pbString[4] = 'B';
    }
    else
    {
      pbString[0] = 3;
	  
      pbString[1] = '0' + (BYTE)wRmnSize;
	  
      pbString[2] = 'M';
      pbString[3] = 'B';
    }

    vOsdShowStr(FSMENU_OSD_WBIDX_BASIC,pbString);
  }
  
  return;
}
/*****************************************************************/
// key process
/*****************************************************************/

BOOL fgUSBCpItemSelUpKey(void) large
{
  if (_bUSBCpCurHili == HILI_FILEMENU)
  {
    vFlMnUSBCpUpKey();
  }
  else
  {
    if (_bUSBCpCurHili == HILI_ALL_SEL)
    {
      return (TRUE);
    }

    // remove highlight from the current button
    vUSBCpUnHiliBtn(_bUSBCpCurHili);

    _bUSBCpCurHili --;
	
    vUSBCpHiliBtn(_bUSBCpCurHili);
  }

  return (TRUE);
}
BOOL fgUSBCpItemSelDownKey(void) large
{
  if (_bUSBCpCurHili == HILI_FILEMENU)
  {
    vFlMnUSBCpDownKey();
  }
  else
  {

    // if current button is the last one, do nothing
    if (_bUSBCpCurHili == HILI_EXIT)
    {
      return (TRUE);
    }

    // remove highlight from the current button
    vUSBCpUnHiliBtn(_bUSBCpCurHili);

    _bUSBCpCurHili ++;
  
    vUSBCpHiliBtn(_bUSBCpCurHili);
  }
  
  return (TRUE);
}
BOOL fgUSBCpItemSelLeftKey(void) large
{
  if (_bUSBCpCurHili != HILI_FILEMENU)
  {
    vUSBCpUnHiliBtn(_bUSBCpCurHili);
    _bUSBCpCurHili = HILI_FILEMENU;
	
    vFlMnUSBCpEntCurItem();
  }

  return (TRUE);
}
BOOL fgUSBCpItemSelRightKey(void) large
{
  if (_bUSBCpCurHili == HILI_FILEMENU)
  {
    fgFlMnUSBCpRightKey();
  }
  
  return (TRUE);
}
BOOL fgUSBCpItemSelEnterKey(void) large
{
  BOOL fgRet = TRUE;
  WORD wTmp;
  BYTE bTmp;
  
  if (_bUSBCpCurHili == HILI_FILEMENU)
  {
    fgRet = fgFlMnUSBCpEnterKey();
  }
  else if (_bUSBCpCurHili == HILI_ALL_SEL)
  {
    if((FL_LIST_TYPE(_bFlMnListId) == FLPARM_LIST_FOLDER && vFlMnUSBCpIsRootDir()) ||FL_LIST_TYPE(_bFlMnListId) == FLPARM_LIST_DISC)  //root
    {
      bTmp = 0;
      for(wTmp=0;wTmp<_wFlMnListLen;wTmp++)
      {
        bTmp |= 0x01 << (wTmp%8);
        if(((wTmp+1)%8) == 0)	 
        {
          vSetSharedInfo(SI_USB_COPY_GRP_1_ST+(wTmp/8), bTmp);
          bTmp = 0;
        }
      }
	  
      if(bTmp)
      {
        vSetSharedInfo(SI_USB_COPY_GRP_1_ST+(wTmp/8), bTmp);
      }

      _wUSBCpTtlNs = _wFlMnListLen;
    }
    else  //sub dir
    {
      bTmp = 0;
      for(wTmp=1;wTmp<_wFlMnListLen;wTmp++)  //skip parent dir
      {
        bTmp |= 0x01 << (wTmp%8);
        if(((wTmp+1)%8) == 0)	 
        {
          vSetSharedInfo(SI_USB_COPY_GRP_1_ST+(wTmp/8), bTmp);
          bTmp = 0;
        }
      }
		
      if(bTmp)
      {
        vSetSharedInfo(SI_USB_COPY_GRP_1_ST+(wTmp/8), bTmp);
      }

      _wUSBCpTtlNs = _wFlMnListLen-1;
    }
    vUSBCpShowAllChkbox();
  }
  else if (_bUSBCpCurHili == HILI_ALL_UNSEL)
  {
    if (!_wUSBCpTtlNs)
      return TRUE;

      // init all chk box and total checked number
    vSetSharedInfo(SI_USB_COPY_GRP_1_ST, 0x00);
    for (wTmp = 1; wTmp < (USB_COPY_MAX_NUM + 7)/8 ; wTmp++)
    {
      vWriteNextSharedItem(0x00);
    }
	
    _wUSBCpTtlNs = 0;
    vUSBCpShowAllChkbox();
  }
  else if (_bUSBCpCurHili == HILI_COPY_DEL)
  {
    if (!_wUSBCpTtlNs)
      return TRUE;

    _wUSBCpNxtNo = 0;  //set polling index to zero
    _wUSBCpRmnNs = _wUSBCpTtlNs;    
	
    if(bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)  //copy function
    {
      // judge the USB device valide
      if (bUSBCpChkDevNum() == 0)
      {
        // print the message "no media", and do nothing
        _wStartX = 45;    
        _wStartY = 280;
        vOsdPosShow(OSD_POS_FS_INFO_BAR,OSD_MSG_NO_DEV,3);

        return TRUE;
      }

      _bUSBCopyState = USB_COPY_STATE_DEV_SEL;
      vUSBCpDevSelShowMenu(TRUE);
    }
    else  //delete function
    {	
      if (!_wUSBCpTtlNs)
        return TRUE;

      _bUSBCopyState = USB_COPY_STATE_ERASING;
      vFlMnUSBDel();
    }
  }
  else if (_bUSBCpCurHili == HILI_EXIT)
  {
    vUSBCopyStateExit(FALSE,FALSE);
  }
  
  return(fgRet);
}


BOOL fgUSBCpDevSelUpKey(void) large
{
  // if current button is the first one, do nothing
  // if (bCurArrayID == COPY_MENU_USB_SLOT1)
  if (_bDevSel == 0)
  {
    return (TRUE);
  }

  // up the highlight button
  _bDevSel -= 1;

  // remove highlight from the current button
  vUSBCpUnHiliBtn(_bUSBCpCurHili);
  
  // move highlight to next button
  _bUSBCpCurHili = _bDevDisplayArray[_bDevSel];

  // highlight  button
  vUSBCpHiliBtn(_bUSBCpCurHili);

  return (TRUE);
}
BOOL fgUSBCpDevSelDownKey(void) large
{
  // if current button is the last one, do nothing
  if (_bUSBCpCurHili == _bDevDisplayArray[_bValidDevNum-1])
  {
    return (TRUE);
  }

  // down the highlight button
  _bDevSel += 1;

  // remove highlight from the current button
  vUSBCpUnHiliBtn(_bUSBCpCurHili);

  // move highlight to next button
  _bUSBCpCurHili = _bDevDisplayArray[_bDevSel];

  // highlight  button
  vUSBCpHiliBtn(_bUSBCpCurHili);

  return (TRUE);
}

BOOL fgUSBCpDevSelEnterKey(void) large
{
  BYTE bCount;
  WORD wIdx;
  BYTE bBtnID;

  // get the device id  
  bBtnID = _bDevDisplayArray[_bDevSel];

  // get the target device id
  vSetSharedInfo(SI_LUN_ID, bUSBCopyDevID[bBtnID - HILI_USB_SLOT1]);

  // enter copying state
  _bUSBCopyState = USB_COPY_STATE_CONFIRM;

  // del all buttons
  for (bCount = HILI_USB_SLOT1; bCount <= HILI_USB_SLOT6; bCount++)
  {
    vDelButton(FSMENU_OSD_WBIDX_BASIC, bCount);  
  }

  // 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);

  if (fgFlClLock(FL_CMDPATH_USBCP3))
  {  
    vFlCmdCopyChk();
  }
  return (TRUE);
}

BOOL fgUSBCpConfirmLeftKey(void) large
{
  // if the device is not supported, do nothing
  if((bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_MBR_ERROR) || (bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_NOT_SUPPORT))
  {
    return (TRUE);
  }

  if((_bUSBCpCurHili != HILI_BACK) && (_bUSBCpCurHili != HILI_NEXT))
  {
    return (TRUE);
  }

  if(_bUSBCpCurHili == HILI_BACK)
  {
    return (TRUE);
  }
  
  // remove highlight from the current button
  vUSBCpUnHiliBtn(_bUSBCpCurHili);
  
  // move highlight to next button
  _bUSBCpCurHili = HILI_BACK;

  // highlight  button
  vUSBCpHiliBtn(_bUSBCpCurHili);

  return (TRUE);
}

BOOL fgUSBCpConfirmRightKey(void) large
{
  // if the device is not supported, do nothing
  if((bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_MBR_ERROR) || (bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_NOT_SUPPORT))
  {
    return (TRUE);
  }

  if((_bUSBCpCurHili != HILI_BACK) && (_bUSBCpCurHili != HILI_NEXT))
  {
    return (TRUE);
  }

  if(_bUSBCpCurHili == HILI_NEXT)
  {
    return (TRUE);
  }

  // remove highlight from the current button
  vUSBCpUnHiliBtn(_bUSBCpCurHili);

  // move highlight to next button
  _bUSBCpCurHili = HILI_NEXT;

  // highlight  button
  vUSBCpHiliBtn(_bUSBCpCurHili);

  return (TRUE);
}

BOOL fgUSBCpConfirmEnterKey(void) large
{
  BYTE bCount;
  WORD wIdx;
  BYTE bBtnID;

  if(_bUSBCpCurHili == HILI_NEXT)
  {
    // get the device id  
    bBtnID = _bDevDisplayArray[_bDevSel];

    // enter copying state
    _bUSBCopyState = USB_COPY_STATE_COPYING;

    // del all buttons
    for (bCount = HILI_USB_SLOT1; bCount <= HILI_USB_SLOT6; bCount++)
    {
      vDelButton(FSMENU_OSD_WBIDX_BASIC, bCount);  
    }

    // 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);

    // draw the cancel copy button
    vSetStartEndXY(COPY_MENU_START_X + 50,
                 COPY_MENU_START_Y + 140,
                 COPY_MENU_START_X + 150,
                 COPY_MENU_START_Y + 170);

    vCreateMsgButton(FSMENU_OSD_WBIDX_BASIC, HILI_CANCEL, 4, OSD_MSG_CANCEL, 0xFFFF, 0);

    //PL00113697, move the copying msg to vFlMnUSBCp()
    //show "file copying"
    //_wStartX = COPY_MENU_START_X;
    //_wStartY = COPY_MENU_START_Y +10;
    //vOsdMsgPaste(FSMENU_OSD_WBIDX_BASIC,OSD_MSG_COPYING);

    // highlight the "Cancel" button
    _bUSBCpCurHili = HILI_CANCEL;

    vUSBCpHiliBtn(_bUSBCpCurHili);

    vSetSharedInfo(SI_FS_MULIFILE_SELECTED, 0);
    vSetSharedInfo(SI_FS_REC_SINGLEFILE, 0);

    // move file
    vFlMnUSBCp();
  }
  else if(_bUSBCpCurHili == HILI_BACK)
  {
    // delete all confirm buttons
    for (bCount = HILI_BACK; bCount <= HILI_NEXT; bCount++)
    {
      vDelButton(FSMENU_OSD_WBIDX_BASIC, bCount);  
    }
	
    _bUSBCopyState = USB_COPY_STATE_DEV_SEL;
    vUSBCpDevSelShowMenu(TRUE);
  }
  
  return (TRUE);

⌨️ 快捷键说明

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