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

main.cpp

Committer:
Osamu Nakamura
Date:
2017-04-21
Revision:
15:ac8b6c6dfb3f
Parent:
13:fa85d3614acf

File content as of revision 15:ac8b6c6dfb3f:

#include "FATFileSystem.h"
#include "USBHostMSD.h"
#include "USBHostC270.h"

#if defined(TARGET_RZ_A1H)
#include "usb_host_setting.h"
#else
#define USB_HOST_CH     0
#endif

#if (USB_HOST_CH == 1) //Audio Camera Shield USB1
DigitalOut usb1en(P3_8);
#endif

Serial pc(USBTX, USBRX);
BusOut leds(LED1, LED2, LED3);

static uint8_t buf[1024*10];

int main() {
    pc.baud(921600);

    
#if (USB_HOST_CH == 1) //Audio Shield USB1
    //Audio Shield USB1 enable
    usb1en = 1;        //Outputs high level
    Thread::wait(5);
    usb1en = 0;        //Outputs low level
#endif

     // USB flash drive
    FATFileSystem fs("usb");
    USBHostMSD msd;
    
    while(!msd.connect()) {
        Thread::wait(500);
    }
    fs.mount(&msd);
    
    USBHostC270* cam = new USBHostC270(C270_MJPEG, C270_160x120, _5FPS); // Logitech C270

    Timer interval_t;
    interval_t.reset();
    interval_t.start();
    int shot = 0;
    while(1) {
        if (interval_t.read() > 10 && cam->connected()) {
            int r = cam->readJPEG(buf, sizeof(buf));
            char path[32];
            snprintf(path, sizeof(path), "/usb/image%02d.jpg", shot % 20);
            printf("%d %s %d bytes\n", shot, path, r);
            if (msd.connected()) {
                FILE* fp = fopen(path, "wb");
                if (fp) {
                    fwrite(buf, r, 1, fp);
                    fclose(fp);
                }
                shot++;
                leds = shot % 8;
            }
            interval_t.reset();
        }
        // If USB flash disk is unplugged, wait until USB is re-plugged
        if (!msd.connected()) {
            while(!msd.connect())
            {
                Thread::wait(500);
            }
            fs.mount(&msd);
        }
        // If Logitech C270 is unplugged, try to re-plug it
        if (!cam->connected()) {
            cam->connect();
            Thread::wait(500);
        } else {
            cam->poll();
        }
    }
}