BaseUsbHost example program

Dependencies:   BaseUsbHost FATFileSystem mbed mbed-rtos

Committer:
va009039
Date:
Wed Dec 05 13:25:18 2012 +0000
Revision:
1:80205a2de336
Parent:
0:2a9734a95d55
Child:
3:6ae9a03a6145
add LifeCamVX700

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:80205a2de336 1 // usbFlashDrive.h 2012/12/5
va009039 0:2a9734a95d55 2 #ifndef USB_FLASH_DRIVE_H
va009039 0:2a9734a95d55 3 #define USB_FLASH_DRIVE_H
va009039 0:2a9734a95d55 4
va009039 0:2a9734a95d55 5 #include "FATFileSystem.h"
va009039 0:2a9734a95d55 6
va009039 0:2a9734a95d55 7 #define SCSI_CMD_REQUEST_SENSE 0x03
va009039 0:2a9734a95d55 8 #define SCSI_CMD_TEST_UNIT_READY 0x00
va009039 0:2a9734a95d55 9 #define SCSI_CMD_INQUIRY 0x12
va009039 0:2a9734a95d55 10 #define SCSI_CMD_READ_10 0x28
va009039 0:2a9734a95d55 11 #define SCSI_CMD_READ_CAPACITY 0x25
va009039 0:2a9734a95d55 12 #define SCSI_CMD_WRITE_10 0x2A
va009039 0:2a9734a95d55 13
va009039 0:2a9734a95d55 14 #pragma pack(push,1)
va009039 0:2a9734a95d55 15 typedef struct {
va009039 0:2a9734a95d55 16 uint32_t dCBWSignature;
va009039 0:2a9734a95d55 17 uint32_t dCBWTag;
va009039 0:2a9734a95d55 18 uint32_t dCBWDataTraansferLength;
va009039 0:2a9734a95d55 19 uint8_t bmCBWFlags;
va009039 0:2a9734a95d55 20 uint8_t bCBWLUN;
va009039 0:2a9734a95d55 21 uint8_t bCBWCBLength;
va009039 0:2a9734a95d55 22 uint8_t CBWCB[16];
va009039 0:2a9734a95d55 23 } CBW;
va009039 0:2a9734a95d55 24
va009039 0:2a9734a95d55 25 typedef struct {
va009039 0:2a9734a95d55 26 uint32_t dCSWSignature;
va009039 0:2a9734a95d55 27 uint32_t dCSWTag;
va009039 0:2a9734a95d55 28 uint32_t dCSWDataResidue;
va009039 0:2a9734a95d55 29 uint8_t bCSWStatus;
va009039 0:2a9734a95d55 30 } CSW;
va009039 0:2a9734a95d55 31 #pragma pack(pop)
va009039 0:2a9734a95d55 32
va009039 0:2a9734a95d55 33 class UsbFlashDrive : public FATFileSystem {
va009039 0:2a9734a95d55 34 public:
va009039 0:2a9734a95d55 35 UsbFlashDrive(const char* name, ControlEp* ctlEp = NULL);
va009039 1:80205a2de336 36 static bool check(ControlEp* ctlEp);
va009039 0:2a9734a95d55 37 virtual int disk_initialize();
va009039 0:2a9734a95d55 38 virtual int disk_write(const uint8_t* buffer, uint64_t sector);
va009039 0:2a9734a95d55 39 virtual int disk_read(uint8_t* buffer, uint64_t sector);
va009039 0:2a9734a95d55 40 virtual int disk_status();
va009039 0:2a9734a95d55 41 virtual int disk_sync();
va009039 0:2a9734a95d55 42 virtual uint64_t disk_sectors();
va009039 0:2a9734a95d55 43 private:
va009039 1:80205a2de336 44 int setup(ControlEp* ctlEp, int timeout = 9000);
va009039 1:80205a2de336 45 int ParseConfiguration(ControlEp* ctlEp);
va009039 1:80205a2de336 46 int BulkOnlyMassStorageReset(ControlEp* ctlEp);
va009039 1:80205a2de336 47 int GetMaxLUN(ControlEp* ctlEp);
va009039 0:2a9734a95d55 48 int ReadCapacity();
va009039 0:2a9734a95d55 49 int GetSenseInfo();
va009039 0:2a9734a95d55 50 int TestUnitReady();
va009039 0:2a9734a95d55 51 int Inquire();
va009039 0:2a9734a95d55 52 int MS_BulkRecv(uint32_t block_number, int num_blocks, uint8_t* user_buffer);
va009039 0:2a9734a95d55 53 int MS_BulkSend(uint32_t block_number, int num_blocks, const uint8_t* user_buffer);
va009039 0:2a9734a95d55 54 int CommandTransport(const uint8_t* cdb, int size);
va009039 0:2a9734a95d55 55 int StatusTransport();
va009039 0:2a9734a95d55 56 int _bulkRecv(uint8_t* buf, int size);
va009039 0:2a9734a95d55 57 int _bulkSend(const uint8_t* buf, int size);
va009039 0:2a9734a95d55 58 const char* m_name;
va009039 0:2a9734a95d55 59 int m_drive;
va009039 0:2a9734a95d55 60 uint32_t m_numBlocks;
va009039 0:2a9734a95d55 61 int m_BlockSize;
va009039 0:2a9734a95d55 62 int m_lun;
va009039 0:2a9734a95d55 63 int m_MaxLUN;
va009039 0:2a9734a95d55 64 int m_interface;
va009039 0:2a9734a95d55 65 uint32_t m_tag;
va009039 0:2a9734a95d55 66 CBW m_CBW;
va009039 0:2a9734a95d55 67 CSW m_CSW;
va009039 1:80205a2de336 68 // endpoint
va009039 0:2a9734a95d55 69 BulkEp* m_pEpBulkIn;
va009039 0:2a9734a95d55 70 BulkEp* m_pEpBulkOut;
va009039 0:2a9734a95d55 71 // report
va009039 0:2a9734a95d55 72 uint32_t m_report_disk_write;
va009039 0:2a9734a95d55 73 uint32_t m_report_disk_read;
va009039 0:2a9734a95d55 74 uint32_t m_report_disk_status;
va009039 0:2a9734a95d55 75 uint32_t m_report_disk_sync;
va009039 0:2a9734a95d55 76 };
va009039 0:2a9734a95d55 77
va009039 0:2a9734a95d55 78 #endif // USB_FLASH_DRIVE_H