stream.c
--- stream.c 2007-03-11 18:00:53.000000000 +0000 +++ stream.c.new 2007-03-11 18:01:22.000000000 +0000 @@ -30,7 +30,8 @@ for (dev = bus->devices; dev; dev = dev->next) { if (dev->descriptor.idVendor == 0x04cb) { // OK, it's a FUJI - if (dev->descriptor.idProduct == 0x0125) { + if (dev->descriptor.idProduct == 0x0125 + || dev->descriptor.idProduct == 0x010b) { printf("Found it on bus %d(%s), dev %s.n", bus->location, bus->dirname, dev->filename); // our product @@ -50,8 +51,14 @@ #define BULK_WRITE_ENDPOINT 0x02 #define INTR_ENDPOINT 0x03 +#define DEBUG_OUTPUT 0 + +#if DEBUG_OUTPUT #define DEBUG(txt, ...) fprintf(stderr, "DEBUG[%s:%d]: " txt "n", __FUNCTION__, __LINE__, ##__VA_ARGS__); +#else +#define DEBUG(txt, ...) fprintf(stderr,""); +#endif #define VERIFY(code) code; @@ -242,8 +249,6 @@ DEBUG("Frame [2]"); len = usb_bulk_read(udev, BULK_READ_ENDPOINT, buf, 0x2000, 3000); if (len < 0) { - fprintf(stderr, "Failed to get bulk frame datan"); - return frame; frame_free(frame); return NULL; } @@ -260,6 +265,7 @@ int res; int i; struct usb_interface_descriptor *intf; + struct frame *frame; usb_init(); usb_find_busses(); @@ -267,7 +273,7 @@ dev = find_our_black_sheep(); if (!dev) { - fprintf(stderr, "No FUJI FinePix A310 found.n"); + fprintf(stderr, "No FUJI FinePix found.n"); goto end; } @@ -311,19 +317,19 @@ if (argc > 1) count = atol(argv[1]); - for (i = 0; count-- > 0; ++i) { + for (i = 0; i < count; i++) { char filename[32]; - struct frame *frame = get_frame(); - if (!frame) { - fprintf(stderr, "Can't get framen"); - break; - } + frame = get_frame(); + if (frame) { sprintf(filename, "out/frame%05d.jpg", i); FILE *f = fopen(filename, "wb"); fwrite(frame->data, frame->length, 1, f); - frame_free(frame); fflush(f); fclose(f); + } else { + fprintf(stderr, + "Problem with frame %05d. Trying again.n", i--); + } } }
No comments:
Post a Comment