diff --git a/src/add-ons/kernel/bus_managers/usb/Device.cpp b/src/add-ons/kernel/bus_managers/usb/Device.cpp index 0d4b24ced5..a0b9c5096a 100644 --- a/src/add-ons/kernel/bus_managers/usb/Device.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Device.cpp @@ -383,7 +383,7 @@ Device::SetConfigurationAt(uint8 index) pipe = new(std::nothrow) InterruptPipe(this, fDeviceAddress, endpoint->descr->endpoint_address & 0x0f, (endpoint->descr->endpoint_address & 0x80) > 0 ? Pipe::In : Pipe::Out, - fSpeed, endpoint->descr->max_packet_size); + fSpeed, endpoint->descr->max_packet_size, endpoint->descr->interval); break; } diff --git a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp index 3d8bb92367..559e017220 100644 --- a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp @@ -102,9 +102,10 @@ Pipe::GetStatus(uint16 *status) InterruptPipe::InterruptPipe(Object *parent, int8 deviceAddress, uint8 endpointAddress, pipeDirection direction, usb_speed speed, - size_t maxPacketSize) + size_t maxPacketSize, uint8 interval) : Pipe(parent, deviceAddress, endpointAddress, direction, speed, - maxPacketSize) + maxPacketSize), + fInterval(interval) { } 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 9e6411dc5b..f99762fccb 100644 --- a/src/add-ons/kernel/bus_managers/usb/usb_p.h +++ b/src/add-ons/kernel/bus_managers/usb/usb_p.h @@ -333,7 +333,8 @@ public: uint8 endpointAddress, pipeDirection direction, usb_speed speed, - size_t maxPacketSize); + size_t maxPacketSize, + uint8 interval); virtual uint32 Type() { return USB_OBJECT_PIPE | USB_OBJECT_INTERRUPT_PIPE; }; @@ -341,6 +342,11 @@ virtual uint32 Type() { return USB_OBJECT_PIPE | USB_OBJECT_INTERRUPT_PIPE size_t dataLength, usb_callback_func callback, void *callbackCookie); + + uint8 Interval() { return fInterval; }; + +private: + uint8 fInterval; };