From 1bad4a4ef9a3f607482ca01848b5c78a3d61c09d Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Tue, 29 Aug 2006 18:25:34 +0000 Subject: [PATCH] * Fixed queue_isochronous in USB3.h to match the actual v3 API. * Changed the usb module accordingly. Isochronous is all still left ToDo though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18700 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/usb/Pipe.cpp | 3 ++- src/add-ons/kernel/bus_managers/usb/usb.cpp | 16 +++++++++++----- src/add-ons/kernel/bus_managers/usb/usb_p.h | 6 ++++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp index a17ab797a8..68dc48dbb7 100644 --- a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp @@ -141,7 +141,8 @@ IsochronousPipe::IsochronousPipe(BusManager *bus, int8 deviceAddress, status_t IsochronousPipe::QueueIsochronous(void *data, size_t dataLength, - rlea *rleArray, uint16 bufferDurationMS, usb_callback_func callback, + usb_iso_packet_descriptor *packetDesc, uint32 packetCount, + uint32 *startingFrameNumber, uint32 flags, usb_callback_func callback, void *callbackCookie) { return B_ERROR; diff --git a/src/add-ons/kernel/bus_managers/usb/usb.cpp b/src/add-ons/kernel/bus_managers/usb/usb.cpp index 7f24549ee9..3dc4731d28 100644 --- a/src/add-ons/kernel/bus_managers/usb/usb.cpp +++ b/src/add-ons/kernel/bus_managers/usb/usb.cpp @@ -9,6 +9,7 @@ #include #include "usb_p.h" +#include Stack *gUSBStack = NULL; @@ -266,16 +267,18 @@ queue_bulk_v(usb_pipe pipe, iovec *vector, size_t vectorCount, status_t queue_isochronous(usb_pipe pipe, void *data, size_t dataLength, - rlea *rleArray, uint16 bufferDurationMS, usb_callback_func callback, + usb_iso_packet_descriptor *packetDesc, uint32 packetCount, + uint32 *startingFrameNumber, uint32 flags, usb_callback_func callback, void *callbackCookie) { - TRACE(("usb_module: queue_isochronous(0x%08x, 0x%08x, %d, 0x%08x, %d, 0x%08x, 0x%08x)\n", pipe, data, dataLength, rleArray, bufferDurationMS, callback, callbackCookie)); + TRACE(("usb_module: queue_isochronous(0x%08x, 0x%08x, %d, 0x%08x, %d, 0x%08x, 0x%08x, 0x%08x, 0x%08x)\n", pipe, data, dataLength, packetDesc, packetCount, startingFrameNumber, flags, callback, callbackCookie)); Object *object = gUSBStack->GetObject(pipe); if (!object || (object->Type() & USB_OBJECT_ISO_PIPE) == 0) return B_BAD_VALUE; return ((IsochronousPipe *)object)->QueueIsochronous(data, dataLength, - rleArray, bufferDurationMS, callback, callbackCookie); + packetDesc, packetCount, startingFrameNumber, flags, callback, + callbackCookie); } @@ -477,8 +480,11 @@ queue_isochronous_v2(const void *pipe, void *data, size_t dataLength, rlea *rleArray, uint16 bufferDurationMS, usb_callback_func callback, void *callbackCookie) { - return queue_isochronous((usb_id)pipe, data, dataLength, rleArray, - bufferDurationMS, callback, callbackCookie); + // ToDo: convert rlea to usb_iso_packet_descriptor + // ToDo: use a flag to indicate that the callback shall produce a rlea + usb_iso_packet_descriptor *packetDesc = NULL; + return queue_isochronous((usb_id)pipe, data, dataLength, packetDesc, 0, + NULL, 0, callback, callbackCookie); } diff --git a/src/add-ons/kernel/bus_managers/usb/usb_p.h b/src/add-ons/kernel/bus_managers/usb/usb_p.h index 6e532192ff..dea66ce776 100644 --- a/src/add-ons/kernel/bus_managers/usb/usb_p.h +++ b/src/add-ons/kernel/bus_managers/usb/usb_p.h @@ -322,8 +322,10 @@ virtual uint32 Type() { return USB_OBJECT_PIPE | USB_OBJECT_ISO_PIPE; }; status_t QueueIsochronous(void *data, size_t dataLength, - rlea *rleArray, - uint16 bufferDurationMS, + usb_iso_packet_descriptor *packetDesc, + uint32 packetCount, + uint32 *startingFrameNumber, + uint32 flags, usb_callback_func callback, void *callbackCookie); };