From owner-p4-projects@FreeBSD.ORG Thu Jun 4 12:07:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 96B2710656D6; Thu, 4 Jun 2009 12:07:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 49DEE10656D3 for ; Thu, 4 Jun 2009 12:07:28 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1CB8A8FC18 for ; Thu, 4 Jun 2009 12:07:28 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n54C7RPv062098 for ; Thu, 4 Jun 2009 12:07:27 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n54C7Rwg062096 for perforce@freebsd.org; Thu, 4 Jun 2009 12:07:27 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 4 Jun 2009 12:07:27 GMT Message-Id: <200906041207.n54C7Rwg062096@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 163484 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jun 2009 12:07:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=163484 Change 163484 by syl@syl_rincewind on 2009/06/04 12:07:08 Fix transfer flag in interrupt transfers. Affected files ... .. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#7 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#7 (text+ko) ==== @@ -558,12 +558,13 @@ return (ret); } -int -libusb_bulk_transfer(struct libusb_device_handle *devh, +static int +do_transfer(struct libusb_device_handle *devh, unsigned char endpoint, unsigned char *data, int length, - int *transferred, unsigned int timeout) + int *transferred, unsigned int timeout, int type) { struct libusb_transfer *xfer; + libusb_context *ctx; int complet; int ret; @@ -574,9 +575,11 @@ if (xfer == NULL) return (LIBUSB_ERROR_NO_MEM); + ctx = devh->dev->ctx; + xfer->dev_handle = devh; xfer->endpoint = endpoint; - xfer->type = LIBUSB_TRANSFER_TYPE_BULK; + xfer->type = type; xfer->timeout = timeout; xfer->buffer = data; xfer->length = length; @@ -589,16 +592,18 @@ return (ret); } - while (!complet) - if ((ret = libusb_handle_events(devh->dev->ctx)) < 0) { + while (complet == 0) { + if ((ret = libusb_handle_events(ctx)) < 0) { libusb_cancel_transfer(xfer); libusb_free_transfer(xfer); - while (!complet) - if (libusb_handle_events(devh->dev->ctx)) - break; + while (complet == 0) { + if (libusb_handle_events(ctx)) + break ; + } return (ret); } - + } + *transferred = xfer->actual_length; switch (xfer->status) { case LIBUSB_TRANSFER_COMPLETED: @@ -618,14 +623,23 @@ return (0); } +int +libusb_bulk_transfer(struct libusb_device_handle *devh, + unsigned char endpoint, unsigned char *data, int length, + int *transferred, unsigned int timeout) +{ + return (do_transfer(devh, endpoint, data, length, transferred, + timeout, LIBUSB_TRANSFER_TYPE_BULK)); +} + /* * Need to fix xfer->type */ int libusb_interrupt_transfer(struct libusb_device_handle *devh, - unsigned char endpoint, unsigned char *data, int length, int *transferred, - unsigned int timeout) + unsigned char endpoint, unsigned char *data, int length, + int *transferred, unsigned int timeout) { - return (libusb_bulk_transfer(devh, endpoint, data, length, - transferred, timeout)); + return (do_transfer(devh, endpoint, data, length, transferred, + timeout, LIBUSB_TRANSFER_TYPE_INTERRUPT)); }