Webcam Server.

Dependencies:   uvchost FatFileSystem mbed HTTPServer NetServicesMin

Committer:
va009039
Date:
Tue Aug 14 03:42:12 2012 +0000
Revision:
1:7a4f2c038803
Parent:
0:2b4ea8a138e5
supported LogitechC270 and Safari

Who changed what in which revision?

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