BaseUsbHost example program
Dependencies: BaseUsbHost FATFileSystem mbed mbed-rtos
example1_UsbFlashDrive.cpp@1:80205a2de336, 2012-12-05 (annotated)
- Committer:
- va009039
- Date:
- Wed Dec 05 13:25:18 2012 +0000
- Revision:
- 1:80205a2de336
- Parent:
- 0:2a9734a95d55
add LifeCamVX700
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:2a9734a95d55 | 1 | #if 0 |
va009039 | 0:2a9734a95d55 | 2 | #include "mbed.h" |
va009039 | 0:2a9734a95d55 | 3 | #include "rtos.h" |
va009039 | 0:2a9734a95d55 | 4 | #include "BaseUsbHost.h" |
va009039 | 0:2a9734a95d55 | 5 | #define DEBUG |
va009039 | 0:2a9734a95d55 | 6 | #include "BaseUsbHostDebug.h" |
va009039 | 0:2a9734a95d55 | 7 | #define TEST |
va009039 | 0:2a9734a95d55 | 8 | #include "BaseUsbHostTest.h" |
va009039 | 0:2a9734a95d55 | 9 | #include "UsbFlashDrive.h" |
va009039 | 0:2a9734a95d55 | 10 | |
va009039 | 0:2a9734a95d55 | 11 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
va009039 | 0:2a9734a95d55 | 12 | Serial pc(USBTX, USBRX); |
va009039 | 0:2a9734a95d55 | 13 | |
va009039 | 0:2a9734a95d55 | 14 | BaseUsbHost *UsbHost; |
va009039 | 0:2a9734a95d55 | 15 | UsbHub* hub; |
va009039 | 0:2a9734a95d55 | 16 | ControlEp* ctlEp = NULL; |
va009039 | 0:2a9734a95d55 | 17 | UsbFlashDrive* drive; |
va009039 | 0:2a9734a95d55 | 18 | int main() { |
va009039 | 0:2a9734a95d55 | 19 | pc.baud(921600); |
va009039 | 0:2a9734a95d55 | 20 | printf("%s\n", __FILE__); |
va009039 | 0:2a9734a95d55 | 21 | |
va009039 | 0:2a9734a95d55 | 22 | UsbHost = new BaseUsbHost; |
va009039 | 0:2a9734a95d55 | 23 | TEST_ASSERT_TRUE(UsbHost); |
va009039 | 0:2a9734a95d55 | 24 | |
va009039 | 0:2a9734a95d55 | 25 | UsbHub* hub = new UsbHub(); |
va009039 | 0:2a9734a95d55 | 26 | TEST_ASSERT_TRUE(hub); |
va009039 | 0:2a9734a95d55 | 27 | |
va009039 | 0:2a9734a95d55 | 28 | for(int i = 0; i < MAX_HUB_PORT; i++) { |
va009039 | 1:80205a2de336 | 29 | if (UsbFlashDrive::check(hub->PortEp[i])) { |
va009039 | 1:80205a2de336 | 30 | ctlEp = hub->PortEp[i]; |
va009039 | 1:80205a2de336 | 31 | break; |
va009039 | 0:2a9734a95d55 | 32 | } |
va009039 | 0:2a9734a95d55 | 33 | } |
va009039 | 1:80205a2de336 | 34 | if (ctlEp == NULL) { |
va009039 | 1:80205a2de336 | 35 | error("USB Flash Drive not found\n"); |
va009039 | 1:80205a2de336 | 36 | } |
va009039 | 1:80205a2de336 | 37 | TEST_ASSERT(ctlEp); |
va009039 | 0:2a9734a95d55 | 38 | |
va009039 | 0:2a9734a95d55 | 39 | drive = new UsbFlashDrive("usb", ctlEp); |
va009039 | 0:2a9734a95d55 | 40 | TEST_ASSERT(drive); |
va009039 | 0:2a9734a95d55 | 41 | |
va009039 | 1:80205a2de336 | 42 | const int size_table[] = { |
va009039 | 1:80205a2de336 | 43 | 1024*1, |
va009039 | 1:80205a2de336 | 44 | 1024*2, |
va009039 | 1:80205a2de336 | 45 | 1024*4, |
va009039 | 1:80205a2de336 | 46 | 1024*8, |
va009039 | 1:80205a2de336 | 47 | 1024*16, |
va009039 | 1:80205a2de336 | 48 | 1024*32, |
va009039 | 1:80205a2de336 | 49 | 1024*64, |
va009039 | 1:80205a2de336 | 50 | 1024*128, |
va009039 | 1:80205a2de336 | 51 | 1204*256, |
va009039 | 1:80205a2de336 | 52 | 1204*512, |
va009039 | 1:80205a2de336 | 53 | }; |
va009039 | 1:80205a2de336 | 54 | |
va009039 | 1:80205a2de336 | 55 | printf("USB FLASH DRIVE read/write test\n"); |
va009039 | 0:2a9734a95d55 | 56 | |
va009039 | 0:2a9734a95d55 | 57 | char path[32]; |
va009039 | 0:2a9734a95d55 | 58 | int size; |
va009039 | 0:2a9734a95d55 | 59 | Timer t; |
va009039 | 0:2a9734a95d55 | 60 | for(int n = 0; n <= 9; n++) { |
va009039 | 1:80205a2de336 | 61 | int file_size = size_table[n]; |
va009039 | 0:2a9734a95d55 | 62 | sprintf(path, "/usb/test%d.txt", n); |
va009039 | 0:2a9734a95d55 | 63 | FILE* fp = fopen(path, "wb"); |
va009039 | 0:2a9734a95d55 | 64 | size = 0; |
va009039 | 0:2a9734a95d55 | 65 | t.reset(); |
va009039 | 0:2a9734a95d55 | 66 | t.start(); |
va009039 | 0:2a9734a95d55 | 67 | if (fp) { |
va009039 | 0:2a9734a95d55 | 68 | for(int i = 0; i < file_size; i++) { |
va009039 | 0:2a9734a95d55 | 69 | int c = i & 0xff; |
va009039 | 0:2a9734a95d55 | 70 | fputc(c, fp); |
va009039 | 0:2a9734a95d55 | 71 | size++; |
va009039 | 0:2a9734a95d55 | 72 | } |
va009039 | 0:2a9734a95d55 | 73 | t.stop(); |
va009039 | 0:2a9734a95d55 | 74 | fclose(fp); |
va009039 | 0:2a9734a95d55 | 75 | } |
va009039 | 0:2a9734a95d55 | 76 | printf("write file %d bytes %d ms %s\n", size, t.read_ms(), path); |
va009039 | 0:2a9734a95d55 | 77 | led1 = !led1; |
va009039 | 0:2a9734a95d55 | 78 | } |
va009039 | 0:2a9734a95d55 | 79 | |
va009039 | 0:2a9734a95d55 | 80 | for(int n = 0; n <=9; n++) { |
va009039 | 0:2a9734a95d55 | 81 | sprintf(path, "/usb/test%d.txt", n); |
va009039 | 0:2a9734a95d55 | 82 | FILE* fp = fopen(path, "rb"); |
va009039 | 0:2a9734a95d55 | 83 | size = 0; |
va009039 | 0:2a9734a95d55 | 84 | t.reset(); |
va009039 | 0:2a9734a95d55 | 85 | t.start(); |
va009039 | 0:2a9734a95d55 | 86 | if (fp) { |
va009039 | 0:2a9734a95d55 | 87 | while(1) { |
va009039 | 0:2a9734a95d55 | 88 | int c = fgetc(fp); |
va009039 | 0:2a9734a95d55 | 89 | if (c == EOF) { |
va009039 | 0:2a9734a95d55 | 90 | break; |
va009039 | 0:2a9734a95d55 | 91 | } |
va009039 | 0:2a9734a95d55 | 92 | size++; |
va009039 | 0:2a9734a95d55 | 93 | } |
va009039 | 0:2a9734a95d55 | 94 | t.stop(); |
va009039 | 0:2a9734a95d55 | 95 | fclose(fp); |
va009039 | 0:2a9734a95d55 | 96 | } |
va009039 | 0:2a9734a95d55 | 97 | printf("read file %d bytes %d ms %s\n", size, t.read_ms(), path); |
va009039 | 0:2a9734a95d55 | 98 | led2 = !led2; |
va009039 | 0:2a9734a95d55 | 99 | } |
va009039 | 0:2a9734a95d55 | 100 | |
va009039 | 0:2a9734a95d55 | 101 | exit(1); |
va009039 | 0:2a9734a95d55 | 102 | } |
va009039 | 0:2a9734a95d55 | 103 | |
va009039 | 0:2a9734a95d55 | 104 | #endif |