Simple USBHost C270 example
Dependencies: F401RE-USBHost mbed
main.cpp
- Committer:
- va009039
- Date:
- 2014-08-08
- Revision:
- 0:5ca8a4347f67
File content as of revision 0:5ca8a4347f67:
#include "USBHostCam.h" RawSerial pc(USBTX, USBRX); uint8_t image_buf[1024*64]; DigitalOut led1(LED1); DigitalOut led2(LED2); #define LED_OFF 1 #define LED_ON 0 int main() { pc.baud(9600); led1 = led2 = LED_OFF; // Logitech C270 USBHostCam* cam = new USBHostCam(_800x448); if (!cam->connect()) { error("WebCam not found.\n"); } int pos = 0; int size = 0; Timer t; for(int seq = 0;;) { int c = -1; if (pc.readable()) { c = pc.getc(); } switch(seq) { case 0: pc.printf("\nReady, please download JPEG using XMODEM/Checksum.\n"); t.start(); seq++; break; case 1: if (c == 0x15) { // NAK size = cam->readJPEG(image_buf, sizeof(image_buf)); pos = 0; seq++; } break; case 2: if (pos >= size) { pc.putc(0x04); // EOT } else { pc.putc(0x01); // SOH uint8_t block = pos/128 + 1; pc.putc(block); pc.putc(block ^ 0xff); uint8_t checksum = 0x00; for(int i = 0; i < 128; i++) { uint8_t c = image_buf[pos + i]; checksum += c; pc.putc(c); } pc.putc(checksum); } seq++; t.reset(); led2 = !led2; break; case 3: if (c == 0x06) { // ACK if (pos >= size) { seq = 0; } else { pos += 128; seq--; } } break; } if (t.read_ms() > 15*1000) { // timeout t.reset(); seq = 0; } cam->poll(); } }