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 GR-PEACH_producer_meeting

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?

UserRevisionLine numberNew 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 }