BaseUsbHost example program

Dependencies:   BaseUsbHost FATFileSystem mbed mbed-rtos

Committer:
va009039
Date:
Fri Jan 25 14:55:08 2013 +0000
Revision:
5:495f7536897b
Parent:
3:6ae9a03a6145
update library

Who changed what in which revision?

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