USBfs.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:4k
源码类别:

DVD

开发平台:

C/C++

  1. /***********************************************
  2.  *
  3.  * File Name : USBfs.h
  4.  *
  5.  * Description : 
  6.  *      
  7.  *      some FAT structure and function declaration
  8.  *
  9.  * Creator : zhaoyanhua 
  10.  * Date    : 2003-9-24 11:19
  11.  *
  12.  ***********************************************/
  13. #ifndef USBFS_H 
  14. #define USBFS_H
  15.  
  16. #define USB_ADDR      0x02
  17. #define MBR_SECTOR    0x00 //LBA-0:MBR(Master Boot Record)
  18. #define FDB_SIZE      0x20 //File Description Block size
  19. //for function USBGetFDB() return value
  20. #define NO_EXTRA_FDB    0
  21. #define READ_FDB_FAILED 1
  22. //File System support
  23. enum 
  24. {
  25.     USB_FAT_UNKNOWN=0,
  26.     USB_FAT12=1,
  27.     USB_FAT16=2,
  28.     USB_FAT32=3,
  29. };
  30. //USB status
  31. enum 
  32. {
  33.     USB_STATUS_NORMAL=0,
  34.     USB_STATUS_NG=1,
  35. };
  36. //USB plug state //liweihua 2003-9-25 17:13
  37. #define     USB_HAD_PLUGGED_IN   0x01  //Bit0 means USB had plug-in(bit0 =1) 
  38. #define     USB_USER_DO_PLUG_IN       0x02  //Bit1 means user do plug-in action(bit1=1)
  39. #define     USB_USER_DO_PLUG_OUT      0x04 //Bit2 means user do plug-out action
  40. // 
  41. typedef struct _USB_INFO {
  42.     UINT32  sAddBootSec;    //boot sector start address(in LBA)
  43.     UINT32  sAddFAT;        //FAT start address(in LBA)
  44.     UINT32  sAddFDB;        //root FDB start address, FAT16 only(in LBA)
  45.     UINT32  sAddData;       //data start address(in LBA)
  46.     UINT16  bytePerSec;     //bytes/sector
  47.     UINT16  secPerClus;     //sectors/Cluster
  48.     UINT16  secPerFAT;      //sectors/FAT
  49.     UINT16  nFDBinRoot;     //#FDB in root dir
  50.     BYTE    nHeadMax;       //max head
  51.     BYTE    nSecMax;        //max sector
  52.     BYTE    typeFAT;        //FAT16/FAT32
  53.     BYTE    nItemSizeFAT;   //2x item size in FAT(in Bytes)
  54. } USB_INFO;
  55.  
  56. typedef struct _USB_FILE_ {
  57.     UINT32  stLBA;          //start LBA
  58.     UINT32  stClus;         //start Cluster
  59.     UINT32  iFileSize;      //file size
  60.     UINT32  curLBA;         //current LBA
  61.     UINT32  curClus;        //current Cluster
  62.     int     iLeaveSize;     //file leave size
  63.     BYTE    status;
  64. } USB_FILE; 
  65.  
  66. //Partition Table structure
  67. typedef struct _USB_PARTITION_ 
  68. {
  69.     UINT8   ActiveStatus;
  70.     UINT8   StartHead;
  71.     UINT16  StartSectorCylinder;
  72.     UINT8   OSType;//operate system type
  73.     UINT8   EndHead;
  74.     UINT16  EndSectorCylinder;
  75.     UINT32  OppsitePositon;
  76.     UINT32  SectorNum;
  77. }USB_PARTITION, *pUSB_PARTITION;
  78. //==============================================================  
  79. //READ RELATED FUNCTIONS
  80. //============================================================
  81. int USBReadMBR(UINT8 usbaddr);
  82. int USBReadBoot(UINT8 usbaddr);
  83. UINT32 USBClus2LBA(UINT32 clus);
  84. UINT32 USBLBA2Clus(UINT32 lba);
  85. UINT32 USBGetRootDir(UINT8 usbaddr);
  86. UINT32  USBGetNextLBA(UINT8 usbaddr,UINT32 lba);
  87. UINT32 USBGetNextClus(UINT8 usbaddr, UINT32 clus);
  88. UINT32 USBGetFDB(UINT8 usbaddr,UINT32 lba, UINT16 index, BYTE *buf);
  89. UINT32 USBFAT12NextClus(UINT8 usbaddr, UINT32 clus);
  90. BYTE USBReadStream(USB_FILE *UFile, UINT32 nSec, BYTE *buf);
  91. void USBTestReady();
  92. BYTE ReadCDROMFile(BYTE *buf);
  93. BYTE USBFileSeek(USB_FILE *UFile, int nSec);
  94. BYTE USBGetStatus();
  95. int USBIsPlugIn();
  96. //==============================================================
  97. //WRITE RELATED FUNCTIONS
  98. //============================================================== 
  99. #ifdef SPHE8202_USB_Write//WRITE_USB 
  100. BYTE USBWriteStream(USB_FILE *UFile, UINT32 nSec, BYTE *buf);
  101. UINT16 USBCreateFATLink(UINT32 nNum, BYTE sign);
  102. void USBWriteData(UINT16 startClus);
  103. int USBWriteFDB(UINT32 lba);
  104. UINT32 USBSearchDir(UINT32 lba, char *foldername);
  105. void USBRenameFile(char *foldername);
  106. UINT32 USBNewFolder(char *foldername);
  107. int USBSchedule(BYTE copymod);
  108. void USBJudgeFAT(void);
  109. void USBFormat(void);
  110. int USBDeleteData(void);
  111. UINT16 USBCreateDir(void);
  112. #endif //end SPHE8202_USB_Write//WRITE_USB
  113. #endif //end USBFS_H
  114.