BaseUsbHost example program

Dependencies:   BaseUsbHost FATFileSystem mbed mbed-rtos

example1_UsbFlashDrive.cpp

Committer:
va009039
Date:
2012-12-04
Revision:
0:2a9734a95d55
Child:
1:80205a2de336

File content as of revision 0:2a9734a95d55:

#if 0
#include "mbed.h"
#include "rtos.h"
#include "BaseUsbHost.h"
#define DEBUG
#include "BaseUsbHostDebug.h"
#define TEST
#include "BaseUsbHostTest.h"
#include "UsbFlashDrive.h"

DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
Serial pc(USBTX, USBRX);

BaseUsbHost *UsbHost;
UsbHub* hub;
ControlEp* ctlEp = NULL;
UsbFlashDrive* drive;
int main() {
    pc.baud(921600);
    printf("%s\n", __FILE__);

    UsbHost = new BaseUsbHost;
    TEST_ASSERT_TRUE(UsbHost);

    UsbHub* hub = new UsbHub();
    TEST_ASSERT_TRUE(hub);

    for(int i = 0; i < MAX_HUB_PORT; i++) {
        if (hub->PortEp[i]) {
            if (hub->PortEp[i]->DeviceClass == 0x01) {  
                ctlEp = hub->PortEp[i];
                break;
            }
        }
    }

    drive = new UsbFlashDrive("usb", ctlEp);
    TEST_ASSERT(drive);


    const int file_size = 1024*256;
    printf("USB FLASH DRIVE read/write file size: %d bytes\n", file_size);
    
    char path[32];
    int size;
    Timer t;
    for(int n = 0; n <= 9; n++) {
        sprintf(path, "/usb/test%d.txt", n);
        FILE* fp = fopen(path, "wb");
        size = 0;
        t.reset();
        t.start();
        if (fp) {
            for(int i = 0; i < file_size; i++) {
                int c = i & 0xff;
                fputc(c, fp);
                size++;
            }
            t.stop();
            fclose(fp);
        }
        printf("write file %d bytes %d ms %s\n", size, t.read_ms(), path);
        led1 = !led1;
    }
    
    for(int n = 0; n <=9; n++) {
        sprintf(path, "/usb/test%d.txt", n);
        FILE* fp = fopen(path, "rb");
        size = 0;
        t.reset();
        t.start();
        if (fp) {
            while(1) {
                int c = fgetc(fp);
                if (c == EOF) {
                    break;
                }
                size++;
            } 
            t.stop();
            fclose(fp);
        }
        printf("read file %d bytes %d ms %s\n", size, t.read_ms(), path);
        led2 = !led2;
    }

    exit(1);
}

#endif