From ad9b9e57dd3d5bcc5dcd1824c8791e0a79695e07 Mon Sep 17 00:00:00 2001 From: aredk Date: Sat, 26 Jun 2021 23:07:02 +0300 Subject: [PATCH] Use maxPacketSize of Interface 0 instead of magic number --- src/main/java/org/usb4java/javax/AbstractDevice.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/usb4java/javax/AbstractDevice.java b/src/main/java/org/usb4java/javax/AbstractDevice.java index 39da623..ff3aeb7 100644 --- a/src/main/java/org/usb4java/javax/AbstractDevice.java +++ b/src/main/java/org/usb4java/javax/AbstractDevice.java @@ -507,7 +507,8 @@ public final UsbStringDescriptor getUsbStringDescriptor(final byte index) final short[] languages = getLanguages(); final DeviceHandle handle = open(); final short langId = languages.length == 0 ? 0 : languages[0]; - final ByteBuffer data = ByteBuffer.allocateDirect(256); + final byte maxBufferSize = getUsbDeviceDescriptor().bMaxPacketSize0(); + final ByteBuffer data = ByteBuffer.allocateDirect(maxBufferSize); final int result = LibUsb.getStringDescriptor(handle, index, langId, data); if (result < 0) @@ -536,7 +537,8 @@ public final String getString(final byte index) throws UsbException, private short[] getLanguages() throws UsbException { final DeviceHandle handle = open(); - final ByteBuffer buffer = ByteBuffer.allocateDirect(256); + final byte maxBufferSize = getUsbDeviceDescriptor().bMaxPacketSize0(); + final ByteBuffer buffer = ByteBuffer.allocateDirect(maxBufferSize); final int result = LibUsb.getDescriptor(handle, LibUsb.DT_STRING, (byte) 0, buffer); if (result < 0)