Student project by David Berlin and Boris Dogadov made for the Embedded Systems Workshop course given in Tel-Aviv University on 2010 by Sivan Toledo. Visit the project website for more details: http://davidberlin.co.il/sadna/ .
Dependencies: EthernetNetIf NTPClient_NetServices mbed HTTPServer HTTPClient CyaSSL
MassStorage/UsbStorage.h@0:3e7d6f496a67, 2011-04-17 (annotated)
- Committer:
- sivan_toledo
- Date:
- Sun Apr 17 21:30:10 2011 +0000
- Revision:
- 0:3e7d6f496a67
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sivan_toledo | 0:3e7d6f496a67 | 1 | #include "FATFileSystem.h" |
sivan_toledo | 0:3e7d6f496a67 | 2 | |
sivan_toledo | 0:3e7d6f496a67 | 3 | int MassStorage_ReadCapacity(int device, u32* blockCount, u32* blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 4 | int MassStorage_Read(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 5 | int MassStorage_Write(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 6 | |
sivan_toledo | 0:3e7d6f496a67 | 7 | class USBFileSystem : public FATFileSystem |
sivan_toledo | 0:3e7d6f496a67 | 8 | { |
sivan_toledo | 0:3e7d6f496a67 | 9 | int _device; |
sivan_toledo | 0:3e7d6f496a67 | 10 | u32 _blockSize; |
sivan_toledo | 0:3e7d6f496a67 | 11 | u32 _blockCount; |
sivan_toledo | 0:3e7d6f496a67 | 12 | |
sivan_toledo | 0:3e7d6f496a67 | 13 | public: |
sivan_toledo | 0:3e7d6f496a67 | 14 | USBFileSystem() : FATFileSystem("usb"),_device(0),_blockSize(0),_blockCount(0) |
sivan_toledo | 0:3e7d6f496a67 | 15 | { |
sivan_toledo | 0:3e7d6f496a67 | 16 | } |
sivan_toledo | 0:3e7d6f496a67 | 17 | |
sivan_toledo | 0:3e7d6f496a67 | 18 | void SetDevice(int device) |
sivan_toledo | 0:3e7d6f496a67 | 19 | { |
sivan_toledo | 0:3e7d6f496a67 | 20 | _device = device; |
sivan_toledo | 0:3e7d6f496a67 | 21 | } |
sivan_toledo | 0:3e7d6f496a67 | 22 | |
sivan_toledo | 0:3e7d6f496a67 | 23 | virtual int disk_initialize() |
sivan_toledo | 0:3e7d6f496a67 | 24 | { |
sivan_toledo | 0:3e7d6f496a67 | 25 | return MassStorage_ReadCapacity(_device,&_blockCount,&_blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 26 | } |
sivan_toledo | 0:3e7d6f496a67 | 27 | |
sivan_toledo | 0:3e7d6f496a67 | 28 | virtual int disk_write(const char *buffer, int block_number) |
sivan_toledo | 0:3e7d6f496a67 | 29 | { |
sivan_toledo | 0:3e7d6f496a67 | 30 | return MassStorage_Write(_device,block_number,1,(u8*)buffer,_blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 31 | } |
sivan_toledo | 0:3e7d6f496a67 | 32 | |
sivan_toledo | 0:3e7d6f496a67 | 33 | virtual int disk_read(char *buffer, int block_number) |
sivan_toledo | 0:3e7d6f496a67 | 34 | { |
sivan_toledo | 0:3e7d6f496a67 | 35 | //printf("disk_readA\r\n"); |
sivan_toledo | 0:3e7d6f496a67 | 36 | int r = MassStorage_Read(_device,block_number,1,(u8*)buffer,_blockSize); |
sivan_toledo | 0:3e7d6f496a67 | 37 | //printf("disk_readB\r\n"); |
sivan_toledo | 0:3e7d6f496a67 | 38 | return r; |
sivan_toledo | 0:3e7d6f496a67 | 39 | } |
sivan_toledo | 0:3e7d6f496a67 | 40 | |
sivan_toledo | 0:3e7d6f496a67 | 41 | virtual int disk_sectors() |
sivan_toledo | 0:3e7d6f496a67 | 42 | { |
sivan_toledo | 0:3e7d6f496a67 | 43 | return _blockCount; |
sivan_toledo | 0:3e7d6f496a67 | 44 | } |
sivan_toledo | 0:3e7d6f496a67 | 45 | }; |