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

📄 ufi.lst

📁 HardDiskUSBconnectsourcecode
💻 LST
📖 第 1 页 / 共 2 页
字号:
 219   1      }
 220          
 221          
 222          /**************************************************************************
 223           *  Function Name:
 224           *
 225           *  Descriptions:
 226           *
 227           *  Arguments:
 228           *
 229           *  Returns: None
 230           **************************************************************************/
 231          UINT8 ufiReadFormatCapacities(void)
 232          {
 233   1       
 234   1              LongByte TotalSectors;
 235   1              Usb_sel_ep(1);
 236   1      
 237   1              TotalSectors.ULONG =stGetCapacity(gCmdBlock.CB1.LUN) ;
 238   1      
 239   1              //*Capacity List
 240   1              //Reserved
C51 COMPILER V8.05a   UFI                                                                  05/22/2009 15:28:38 PAGE 5   

 241   1              UEPDATX=0x00;
 242   1              UEPDATX=0x00;
 243   1              UEPDATX=0x00;
 244   1              //Capacity List Length
 245   1              UEPDATX= 16 ;
 246   1      
 247   1              //*Current/Maximum Capacity descriptor
 248   1              //Number of Blocks
 249   1              UEPDATX= TotalSectors.BYTE.B3 ;
 250   1              UEPDATX= TotalSectors.BYTE.B2 ;
 251   1              UEPDATX= TotalSectors.BYTE.B1 ;
 252   1              UEPDATX= TotalSectors.BYTE.B0 ;
 253   1      
 254   1              //Descriptor Code 10b Formatted Media
 255   1              UEPDATX= 0x02 ;
 256   1      
 257   1              //Block Length
 258   1              UEPDATX= 0x00 ;
 259   1              UEPDATX= 0x02 ;
 260   1              UEPDATX= 0x00 ;
 261   1      
 262   1              //*Formattable Capacity Descriptor
 263   1      
 264   1              //Number of Block
 265   1              UEPDATX= TotalSectors.BYTE.B3 ;
 266   1              UEPDATX= TotalSectors.BYTE.B2 ;
 267   1              UEPDATX= TotalSectors.BYTE.B1 ;
 268   1              UEPDATX= TotalSectors.BYTE.B0 ;
 269   1              //Reserved
 270   1              UEPDATX= 0x00 ;
 271   1              //Block Length
 272   1              UEPDATX= 0x00 ;
 273   1              UEPDATX= 0x02 ;
 274   1              UEPDATX= 0x00 ;
 275   1              Usb_set_TXRDY_bit();
 276   1              while (!(Usb_tx_complete_bit()));
 277   1              Usb_clear_TXCMPL_bit();
 278   1                      gCBWDataLen-=20;
 279   1              if(TotalSectors.ULONG==0)return(1);
 280   1              else return(0);
 281   1      
 282   1      }
 283          
 284          /**************************************************************************
 285           *  Function Name:
 286           *
 287           *  Descriptions:
 288           *
 289           *  Arguments:
 290           *
 291           *  Returns: None
 292           **************************************************************************/
 293          UINT8 ufiTestUnitReady(void)
 294          {
 295   1              gCBWDataLen=0;
 296   1              return 0;
 297   1      }
 298          
 299          /**************************************************************************
 300           *  Function Name:
 301           *
 302           *  Descriptions:
C51 COMPILER V8.05a   UFI                                                                  05/22/2009 15:28:38 PAGE 6   

 303           *
 304           *  Arguments:
 305           *
 306           *  Returns: None
 307           **************************************************************************/
 308          UINT8 ufiModeSense6(void)
 309          {
 310   1              
 311   1              Usb_sel_ep(1);
 312   1              Usb_set_TXRDY_bit();
 313   1              while (!(Usb_tx_complete_bit()));
 314   1              Usb_clear_TXCMPL_bit();
 315   1              return 1;
 316   1      }
 317          /**************************************************************************
 318           *  Function Name:
 319           *
 320           *  Descriptions:
 321           *
 322           *  Arguments:
 323           *
 324           *  Returns: None
 325           **************************************************************************/
 326          UINT8 ufiModeSelect(void)
 327          {
 328   1              Usb_sel_ep(1);
 329   1              Usb_set_TXRDY_bit();
 330   1              while (!(Usb_tx_complete_bit()));
 331   1              Usb_clear_TXCMPL_bit();
 332   1              return 1;
 333   1              
 334   1      }
 335          
 336          /**************************************************************************
 337           *  Function Name:
 338           *
 339           *  Descriptions:
 340           *
 341           *  Arguments:
 342           *
 343           *  Returns: None
 344           **************************************************************************/
 345          UINT8 ufiModeSense10(void)
 346          {
 347   1      
 348   1              Usb_sel_ep(1);
 349   1              Usb_set_TXRDY_bit();
 350   1              while (!(Usb_tx_complete_bit()));
 351   1              Usb_clear_TXCMPL_bit();
 352   1              return 1;
 353   1      }
 354          
 355          /**************************************************************************
 356           *  Function Name:
 357           *
 358           *  Descriptions:
 359           *
 360           *  Arguments:
 361           *
 362           *  Returns: None
 363           **************************************************************************/
 364          UINT8 UFI_NOTSUPPORT_CMD(void)
C51 COMPILER V8.05a   UFI                                                                  05/22/2009 15:28:38 PAGE 7   

 365          {
 366   1              
 367   1              if(gCBWDataLen!=0)
 368   1              {
 369   2                      if(gCBWFlags)//send NULL data on bulk in endpoint.
 370   2                      {
 371   3                              Usb_sel_ep(1);
 372   3                              Usb_set_TXRDY_bit();
 373   3                              while (!(Usb_tx_complete_bit()));
 374   3                              Usb_clear_TXCMPL_bit();
 375   3                              return 1;
 376   3                      }
 377   2                      else        //STALL bulk-out endpoint.
 378   2                      {   Usb_sel_ep(2);
 379   3                                      Usb_set_STALLRQ();
 380   3                              return 1;
 381   3                      }
 382   2              }
 383   1              else return 1;
 384   1      
 385   1      }
 386          /**************************************************************************
 387           *  Function Name:
 388           *
 389           *  Descriptions:
 390           *
 391           *  Arguments:
 392           *
 393           *  Returns: None
 394           **************************************************************************/
 395          UINT8 ufiCommandDecoder(void)
 396          {
 397   1      
 398   1              //printf("UFICMD:%#X\n",gCmdBlock.CB1.OPcode);
 399   1              switch (gCmdBlock.CB1.OPcode) {
 400   2                      case UFI_RequestSense :                               //0x03
 401   2                              return ufiRequestSense();
 402   2                      case UFI_Inquiry :                                        //0x12
 403   2                              return ufiInquiry();
 404   2                      case UFI_ModeSense :                                  //0x5a
 405   2                              return ufiModeSense10();
 406   2                      case UFI_ModeSense_ :                                 //0x1a
 407   2                              return ufiModeSense6();
 408   2                      case UFI_ModeSelect :                                  //0x55
 409   2                      case UFI_ModeSelect_ :                                //0x15
 410   2                              return ufiModeSelect();
 411   2                      case UFI_Read10 :                                       //0X28
 412   2                              return ufiRead10();
 413   2                      case UFI_ReadCapacity :                              //0x25
 414   2                              return ufiReadCapacity();
 415   2                      case UFI_Write10 :
 416   2                              return ufiWrite10();                             //0X2A
 417   2                      case UFI_TestUnitReady:                              //0x00
 418   2                              return ufiTestUnitReady();
 419   2                      case UFI_ReadFormatCapacities :                   //0x23
 420   2                              return ufiReadFormatCapacities();
 421   2                      case UFI_AllowMediaRemove :                       //0x1e
 422   2                      case UFI_Verify :                                        //0x2f
 423   2                              return (0);
 424   2                      default:
 425   2                              return  UFI_NOTSUPPORT_CMD();          
 426   2              }
C51 COMPILER V8.05a   UFI                                                                  05/22/2009 15:28:38 PAGE 8   

 427   1      }
 428          
 429          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    816    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      21
   IDATA SIZE       =      3    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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