supported GR-PEACH original: http://developer.mbed.org/users/va009039/code/USBHostC270_example/ The function of Isochronous has moved to USBHost_AddIso library.
Dependencies: USBHost_custom_Addiso
Fork of USBHostC270_example_GR-PEACH by
main.cpp@15:ac8b6c6dfb3f, 2017-04-21 (annotated)
- Committer:
- Osamu Nakamura
- Date:
- Fri Apr 21 20:09:15 2017 +0900
- Revision:
- 15:ac8b6c6dfb3f
- Parent:
- 13:fa85d3614acf
Update main.cpp so that it can run on mbed OS 5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Osamu Nakamura |
15:ac8b6c6dfb3f | 1 | #include "FATFileSystem.h" |
va009039 | 10:387c49b2fc7e | 2 | #include "USBHostMSD.h" |
va009039 | 10:387c49b2fc7e | 3 | #include "USBHostC270.h" |
va009039 | 10:387c49b2fc7e | 4 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 5 | #if defined(TARGET_RZ_A1H) |
Osamu Nakamura |
15:ac8b6c6dfb3f | 6 | #include "usb_host_setting.h" |
Osamu Nakamura |
15:ac8b6c6dfb3f | 7 | #else |
Osamu Nakamura |
15:ac8b6c6dfb3f | 8 | #define USB_HOST_CH 0 |
Osamu Nakamura |
15:ac8b6c6dfb3f | 9 | #endif |
Osamu Nakamura |
15:ac8b6c6dfb3f | 10 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 11 | #if (USB_HOST_CH == 1) //Audio Camera Shield USB1 |
Osamu Nakamura |
15:ac8b6c6dfb3f | 12 | DigitalOut usb1en(P3_8); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 13 | #endif |
Osamu Nakamura |
15:ac8b6c6dfb3f | 14 | |
va009039 | 10:387c49b2fc7e | 15 | Serial pc(USBTX, USBRX); |
va009039 | 10:387c49b2fc7e | 16 | BusOut leds(LED1, LED2, LED3); |
va009039 | 10:387c49b2fc7e | 17 | |
dkato | 13:fa85d3614acf | 18 | static uint8_t buf[1024*10]; |
dkato | 13:fa85d3614acf | 19 | |
va009039 | 10:387c49b2fc7e | 20 | int main() { |
va009039 | 10:387c49b2fc7e | 21 | pc.baud(921600); |
va009039 | 10:387c49b2fc7e | 22 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 23 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 24 | #if (USB_HOST_CH == 1) //Audio Shield USB1 |
Osamu Nakamura |
15:ac8b6c6dfb3f | 25 | //Audio Shield USB1 enable |
Osamu Nakamura |
15:ac8b6c6dfb3f | 26 | usb1en = 1; //Outputs high level |
Osamu Nakamura |
15:ac8b6c6dfb3f | 27 | Thread::wait(5); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 28 | usb1en = 0; //Outputs low level |
Osamu Nakamura |
15:ac8b6c6dfb3f | 29 | #endif |
Osamu Nakamura |
15:ac8b6c6dfb3f | 30 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 31 | // USB flash drive |
Osamu Nakamura |
15:ac8b6c6dfb3f | 32 | FATFileSystem fs("usb"); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 33 | USBHostMSD msd; |
Osamu Nakamura |
15:ac8b6c6dfb3f | 34 | |
Osamu Nakamura |
15:ac8b6c6dfb3f | 35 | while(!msd.connect()) { |
Osamu Nakamura |
15:ac8b6c6dfb3f | 36 | Thread::wait(500); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 37 | } |
Osamu Nakamura |
15:ac8b6c6dfb3f | 38 | fs.mount(&msd); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 39 | |
va009039 | 10:387c49b2fc7e | 40 | USBHostC270* cam = new USBHostC270(C270_MJPEG, C270_160x120, _5FPS); // Logitech C270 |
va009039 | 10:387c49b2fc7e | 41 | |
va009039 | 10:387c49b2fc7e | 42 | Timer interval_t; |
va009039 | 10:387c49b2fc7e | 43 | interval_t.reset(); |
va009039 | 10:387c49b2fc7e | 44 | interval_t.start(); |
va009039 | 10:387c49b2fc7e | 45 | int shot = 0; |
va009039 | 10:387c49b2fc7e | 46 | while(1) { |
va009039 | 11:6a8eef89eb22 | 47 | if (interval_t.read() > 10 && cam->connected()) { |
va009039 | 10:387c49b2fc7e | 48 | int r = cam->readJPEG(buf, sizeof(buf)); |
va009039 | 10:387c49b2fc7e | 49 | char path[32]; |
va009039 | 10:387c49b2fc7e | 50 | snprintf(path, sizeof(path), "/usb/image%02d.jpg", shot % 20); |
va009039 | 10:387c49b2fc7e | 51 | printf("%d %s %d bytes\n", shot, path, r); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 52 | if (msd.connected()) { |
va009039 | 10:387c49b2fc7e | 53 | FILE* fp = fopen(path, "wb"); |
va009039 | 10:387c49b2fc7e | 54 | if (fp) { |
va009039 | 10:387c49b2fc7e | 55 | fwrite(buf, r, 1, fp); |
va009039 | 10:387c49b2fc7e | 56 | fclose(fp); |
va009039 | 10:387c49b2fc7e | 57 | } |
va009039 | 10:387c49b2fc7e | 58 | shot++; |
va009039 | 10:387c49b2fc7e | 59 | leds = shot % 8; |
va009039 | 10:387c49b2fc7e | 60 | } |
va009039 | 10:387c49b2fc7e | 61 | interval_t.reset(); |
va009039 | 10:387c49b2fc7e | 62 | } |
Osamu Nakamura |
15:ac8b6c6dfb3f | 63 | // If USB flash disk is unplugged, wait until USB is re-plugged |
Osamu Nakamura |
15:ac8b6c6dfb3f | 64 | if (!msd.connected()) { |
Osamu Nakamura |
15:ac8b6c6dfb3f | 65 | while(!msd.connect()) |
Osamu Nakamura |
15:ac8b6c6dfb3f | 66 | { |
Osamu Nakamura |
15:ac8b6c6dfb3f | 67 | Thread::wait(500); |
Osamu Nakamura |
15:ac8b6c6dfb3f | 68 | } |
Osamu Nakamura |
15:ac8b6c6dfb3f | 69 | fs.mount(&msd); |
va009039 | 10:387c49b2fc7e | 70 | } |
Osamu Nakamura |
15:ac8b6c6dfb3f | 71 | // If Logitech C270 is unplugged, try to re-plug it |
va009039 | 11:6a8eef89eb22 | 72 | if (!cam->connected()) { |
va009039 | 11:6a8eef89eb22 | 73 | cam->connect(); |
va009039 | 11:6a8eef89eb22 | 74 | Thread::wait(500); |
va009039 | 11:6a8eef89eb22 | 75 | } else { |
va009039 | 11:6a8eef89eb22 | 76 | cam->poll(); |
va009039 | 11:6a8eef89eb22 | 77 | } |
va009039 | 10:387c49b2fc7e | 78 | } |
va009039 | 10:387c49b2fc7e | 79 | } |