From 5cfed718f4d36e0eb8876b17ad3204e0a2b19484 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 15:09:30 +0200 Subject: [PATCH 01/82] Fix autotools run. --- src/main/c/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index f2075a4..557863c 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.61]) AC_INIT([libusb4java], [1.0.0], [k@ailis.de]) -AM_INIT_AUTOMAKE([foreign -Wall -Werror]) +AM_INIT_AUTOMAKE([foreign -Wall -Werror -Wno-extra-portability]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/usb4java.h]) From 347cb3200230569fd3f28b86587e00234c5016ad Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 15:14:21 +0200 Subject: [PATCH 02/82] Improve readability. Don't get same data twice! --- src/main/c/src/usb4java.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index dba1afc..89885d3 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -53,7 +53,7 @@ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ jptr ptr = (jptr) (*ENV)->GetLongField(ENV, OBJECT, field); \ if (!ptr) illegalState(ENV, FIELD" is not initialized"); \ - return (TYPE) (jptr) (*ENV)->GetLongField(ENV, OBJECT, field); \ + return (TYPE) ptr; \ } #define SET_DATA(ENV, PTR, SIZE, OBJECT, FIELD) \ @@ -100,7 +100,8 @@ (*jvm)->AttachCurrentThread(jvm, (void**) &ENV, NULL); #define THREAD_END \ - if (getEnvResult == JNI_EDETACHED) (*jvm)->DetachCurrentThread(jvm); + if (getEnvResult == JNI_EDETACHED) \ + (*jvm)->DetachCurrentThread(jvm); jint illegalArgument(JNIEnv *env, char *message); jint illegalState(JNIEnv *env, char *message); From 1a6ca038940d62ec0f65af16d508ec1d565b7ea3 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 15:15:49 +0200 Subject: [PATCH 03/82] Remove useless extern keywords from definition. Add missing definitions. --- src/main/c/src/EndpointDescriptor.h | 4 ++++ src/main/c/src/Interface.h | 5 +++-- src/main/c/src/InterfaceDescriptor.h | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/EndpointDescriptor.h b/src/main/c/src/EndpointDescriptor.h index 89d710a..5f6cbd0 100644 --- a/src/main/c/src/EndpointDescriptor.h +++ b/src/main/c/src/EndpointDescriptor.h @@ -8,7 +8,11 @@ #include "usb4java.h" +jobject wrapEndpointDescriptor(JNIEnv*, + const struct libusb_endpoint_descriptor*); jobjectArray wrapEndpointDescriptors(JNIEnv*, int, const struct libusb_endpoint_descriptor*); +struct libusb_endpoint_descriptor *unwrapEndpointDescriptor(JNIEnv *, + jobject); #endif diff --git a/src/main/c/src/Interface.h b/src/main/c/src/Interface.h index 60af22a..d9af0c1 100644 --- a/src/main/c/src/Interface.h +++ b/src/main/c/src/Interface.h @@ -8,7 +8,8 @@ #include "usb4java.h" -extern jobject wrapInterface(JNIEnv *, const struct libusb_interface *); -extern jobjectArray wrapInterfaces(JNIEnv *, int, const struct libusb_interface *); +jobject wrapInterface(JNIEnv *, const struct libusb_interface *); +jobjectArray wrapInterfaces(JNIEnv *, int, const struct libusb_interface *); +struct libusb_interface *unwrapInterface(JNIEnv *, jobject); #endif diff --git a/src/main/c/src/InterfaceDescriptor.h b/src/main/c/src/InterfaceDescriptor.h index 9b99fbc..9ec8318 100644 --- a/src/main/c/src/InterfaceDescriptor.h +++ b/src/main/c/src/InterfaceDescriptor.h @@ -8,7 +8,10 @@ #include "usb4java.h" +jobject wrapInterfaceDescriptor(JNIEnv*, + const struct libusb_interface_descriptor*); jobjectArray wrapInterfaceDescriptors(JNIEnv*, int, const struct libusb_interface_descriptor*); +struct libusb_interface_descriptor *unwrapInterfaceDescriptor(JNIEnv*, jobject); #endif From 3185cb2c61540833aaba566aeabf31e383b30c24 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 15:19:01 +0200 Subject: [PATCH 04/82] Rename pointer to more meaningfull names like in the other files. --- src/main/c/src/Interface.c | 4 ++-- src/main/c/src/InterfaceDescriptor.c | 4 ++-- src/main/c/src/Transfer.c | 6 +++--- src/main/c/src/Version.c | 4 ++-- src/main/java/de/ailis/usb4java/libusb/Interface.java | 8 ++++---- .../de/ailis/usb4java/libusb/InterfaceDescriptor.java | 4 ++-- src/main/java/de/ailis/usb4java/libusb/Transfer.java | 4 ++-- src/main/java/de/ailis/usb4java/libusb/Version.java | 6 +++--- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/c/src/Interface.c b/src/main/c/src/Interface.c index b68d191..77ca9a4 100644 --- a/src/main/c/src/Interface.c +++ b/src/main/c/src/Interface.c @@ -8,7 +8,7 @@ jobject wrapInterface(JNIEnv *env, const struct libusb_interface *iface) { - WRAP_POINTER(env, iface, "Interface", "pointer"); + WRAP_POINTER(env, iface, "Interface", "interfacePointer"); } jobjectArray wrapInterfaces(JNIEnv *env, int count, @@ -27,7 +27,7 @@ jobjectArray wrapInterfaces(JNIEnv *env, int count, struct libusb_interface *unwrapInterface(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_interface*, "pointer"); + UNWRAP_POINTER(env, obj, struct libusb_interface*, "interfacePointer"); } JNIEXPORT jshort JNICALL METHOD_NAME(Interface, numAltsetting) diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index 4ad67ec..f6135fb 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -10,7 +10,7 @@ jobject wrapInterfaceDescriptor(JNIEnv *env, const struct libusb_interface_descriptor *descriptor) { - WRAP_POINTER(env, descriptor, "InterfaceDescriptor", "pointer"); + WRAP_POINTER(env, descriptor, "InterfaceDescriptor", "interfaceDescriptorPointer"); } jobjectArray wrapInterfaceDescriptors(JNIEnv *env, int count, @@ -30,7 +30,7 @@ jobjectArray wrapInterfaceDescriptors(JNIEnv *env, int count, struct libusb_interface_descriptor *unwrapInterfaceDescriptor(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_interface_descriptor*, "pointer"); + UNWRAP_POINTER(env, obj, struct libusb_interface_descriptor*, "interfaceDescriptorPointer"); } /** diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 80bdc0b..3e84354 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -8,17 +8,17 @@ jobject wrapTransfer(JNIEnv* env, struct libusb_transfer* transfer) { - WRAP_POINTER(env, transfer, "Transfer", "pointer"); + WRAP_POINTER(env, transfer, "Transfer", "transferPointer"); } struct libusb_transfer* unwrapTransfer(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_transfer*, "pointer"); + UNWRAP_POINTER(env, obj, struct libusb_transfer*, "transferPointer"); } void resetTransfer(JNIEnv* env, jobject obj) { - RESET_POINTER(env, obj, "pointer"); + RESET_POINTER(env, obj, "transferPointer"); } /** diff --git a/src/main/c/src/Version.c b/src/main/c/src/Version.c index 3dd2f27..04aa3d4 100644 --- a/src/main/c/src/Version.c +++ b/src/main/c/src/Version.c @@ -7,12 +7,12 @@ jobject wrapVersion(JNIEnv* env, const struct libusb_version* pointer) { - WRAP_POINTER(env, pointer, "Version", "pointer"); + WRAP_POINTER(env, pointer, "Version", "versionPointer"); } const struct libusb_version* unwrapVersion(JNIEnv* env, jobject object) { - UNWRAP_POINTER(env, object, struct libusb_version*, "pointer"); + UNWRAP_POINTER(env, object, struct libusb_version*, "versionPointer"); } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/Interface.java b/src/main/java/de/ailis/usb4java/libusb/Interface.java index b86bb56..71753a7 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Interface.java +++ b/src/main/java/de/ailis/usb4java/libusb/Interface.java @@ -21,7 +21,7 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; public final class Interface { /** The native pointer to the descriptor structure. */ - private long pointer; + private long interfacePointer; /** * Package-private constructor to prevent manual instantiation. Interfaces @@ -39,7 +39,7 @@ public final class Interface */ public long getPointer() { - return this.pointer; + return this.interfacePointer; } /** @@ -88,7 +88,7 @@ public final class Interface @Override public int hashCode() { - return new HashCodeBuilder().append(this.pointer).toHashCode(); + return new HashCodeBuilder().append(this.interfacePointer).toHashCode(); } @Override @@ -97,7 +97,7 @@ public final class Interface if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; final Interface other = (Interface) obj; - return this.pointer == other.pointer; + return this.interfacePointer == other.interfacePointer; } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java index e924d28..5bd8750 100644 --- a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java @@ -31,7 +31,7 @@ import de.ailis.usb4java.utils.DescriptorUtils; public final class InterfaceDescriptor implements UsbInterfaceDescriptor { /** The native pointer to the descriptor structure. */ - private long pointer; + private long interfaceDescriptorPointer; /** * Package-private constructor to prevent manual instantiation. Interface @@ -49,7 +49,7 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor */ public long getPointer() { - return this.pointer; + return this.interfaceDescriptorPointer; } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 52132a0..b3b8510 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -25,7 +25,7 @@ import java.nio.ByteBuffer; public final class Transfer { /** The native pointer to the transfer structure. */ - private long pointer; + private long transferPointer; /** * Constructs a new transfer structure. @@ -42,7 +42,7 @@ public final class Transfer */ public long getPointer() { - return this.pointer; + return this.transferPointer; } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/Version.java b/src/main/java/de/ailis/usb4java/libusb/Version.java index 4858a9f..b76bed7 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Version.java +++ b/src/main/java/de/ailis/usb4java/libusb/Version.java @@ -23,7 +23,7 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; public final class Version implements Comparable { /** The native pointer to the version structure. */ - private long pointer; + private long versionPointer; /** * Package-private constructor to prevent manual instantiation. An instance @@ -41,7 +41,7 @@ public final class Version implements Comparable */ public long getPointer() { - return this.pointer; + return this.versionPointer; } /** @@ -81,7 +81,7 @@ public final class Version implements Comparable @Override public int hashCode() { - return new HashCodeBuilder().append(this.pointer).toHashCode(); + return new HashCodeBuilder().append(this.versionPointer).toHashCode(); } @Override From f022d9ce7570013b6f45bc0d44fe5a6ed80c0fa9 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 16:45:32 +0200 Subject: [PATCH 05/82] Sync Transfer class with libusb.h definition (byte instead of int mostly). Add several yet unimplemented methods. Update test. --- src/main/c/src/Transfer.c | 87 +++++++++++++++---- .../de/ailis/usb4java/libusb/Transfer.java | 14 +-- .../ailis/usb4java/libusb/TransferTest.java | 18 ++-- 3 files changed, 87 insertions(+), 32 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 3e84354..f74520e 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -44,20 +44,20 @@ JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, getDevHandle) } /** - * void setFlags(int) + * void setFlags(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setFlags) ( - JNIEnv *env, jobject this, jint flags + JNIEnv *env, jobject this, jbyte flags ) { unwrapTransfer(env, this)->flags = flags; } /** - * int getFlags() + * byte getFlags() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getFlags) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getFlags) ( JNIEnv *env, jobject this ) @@ -66,20 +66,20 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getFlags) } /** - * void setEndpoint(int) + * void setEndpoint(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setEndpoint) ( - JNIEnv *env, jobject this, jint endpoint + JNIEnv *env, jobject this, jbyte endpoint ) { unwrapTransfer(env, this)->endpoint = endpoint; } /** - * int getEndpoint() + * byte getEndpoint() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getEndpoint) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getEndpoint) ( JNIEnv *env, jobject this ) @@ -88,20 +88,20 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getEndpoint) } /** - * void setType(int) + * void setType(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setType) ( - JNIEnv *env, jobject this, jint type + JNIEnv *env, jobject this, jbyte type ) { unwrapTransfer(env, this)->type = type; } /** - * int getType() + * byte getType() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getType) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getType) ( JNIEnv *env, jobject this ) @@ -110,20 +110,20 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getType) } /** - * void setTimeout(long) + * void setTimeout(int) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setTimeout) ( - JNIEnv *env, jobject this, jlong timeout + JNIEnv *env, jobject this, jint timeout ) { unwrapTransfer(env, this)->timeout = timeout; } /** - * long getTimeout() + * int getTimeout() */ -JNIEXPORT jlong JNICALL METHOD_NAME(Transfer, getTimeout) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getTimeout) ( JNIEnv *env, jobject this ) @@ -141,3 +141,58 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getStatus) { return unwrapTransfer(env, this)->status; } + +/** + * void setLength(int) + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setLength) +( + JNIEnv *env, jobject this, jint length +) +{ + unwrapTransfer(env, this)->length = length; +} + +/** + * int getLength() + */ +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getLength) +( + JNIEnv *env, jobject this +) +{ + return unwrapTransfer(env, this)->length; +} + +/** + * int getActualLength() + */ +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getActualLength) +( + JNIEnv *env, jobject this +) +{ + return unwrapTransfer(env, this)->actual_length; +} + +/** + * void setNumIsoPackets(int) + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPackets) +( + JNIEnv *env, jobject this, jint numIsoPackets +) +{ + unwrapTransfer(env, this)->num_iso_packets = numIsoPackets; +} + +/** + * int getNumIsoPackets() + */ +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) +( + JNIEnv *env, jobject this +) +{ + return unwrapTransfer(env, this)->num_iso_packets; +} diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index b3b8510..834385e 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -65,7 +65,7 @@ public final class Transfer * * @return The transfer flags. */ - public native int getFlags(); + public native byte getFlags(); /** * Sets the bitwise OR combination of libusb transfer flags. @@ -73,14 +73,14 @@ public final class Transfer * @param flags * The transfer flags to set. */ - public native void setFlags(final int flags); + public native void setFlags(final byte flags); /** * Returns the address of the endpoint where this transfer will be sent. * * @return The endpoint address. */ - public native int getEndpoint(); + public native byte getEndpoint(); /** * Sets the address of the endpoint where this transfer will be sent. @@ -88,14 +88,14 @@ public final class Transfer * @param endpoint * The endpoint address to set */ - public native void setEndpoint(final int endpoint); + public native void setEndpoint(final byte endpoint); /** * Returns the type of the endpoint. * * @return The endpoint type. */ - public native int getType(); + public native byte getType(); /** * Sets the type of the endpoint. @@ -103,7 +103,7 @@ public final class Transfer * @param type * The endpoint type to set. */ - public native void setType(final int type); + public native void setType(final byte type); /** * Returns the timeout for this transfer in milliseconds. A value of 0 @@ -111,7 +111,7 @@ public final class Transfer * * @return The timeout. */ - public native long getTimeout(); + public native int getTimeout(); /** * Sets the timeout for this transfer in milliseconds. A value of 0 diff --git a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java index 5bf6bde..9e1440e 100644 --- a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java @@ -125,7 +125,7 @@ public class TransferTest } /** - * Tests the {@link Transfer#setFlags(int)} and {@link Transfer#getFlags()} + * Tests the {@link Transfer#setFlags(byte)} and {@link Transfer#getFlags()} * methods. */ @Test @@ -134,15 +134,15 @@ public class TransferTest assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); assertEquals(0, transfer.getFlags()); - transfer.setFlags(1); + transfer.setFlags((byte) 1); assertEquals(1, transfer.getFlags()); - transfer.setFlags(0); + transfer.setFlags((byte) 0); assertEquals(0, transfer.getFlags()); LibUsb.freeTransfer(transfer); } /** - * Tests the {@link Transfer#setEndpoint(int)} and + * Tests the {@link Transfer#setEndpoint(byte)} and * {@link Transfer#getEndpoint()} methods. */ @Test @@ -151,15 +151,15 @@ public class TransferTest assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); assertEquals(0, transfer.getEndpoint()); - transfer.setEndpoint(1); + transfer.setEndpoint((byte) 1); assertEquals(1, transfer.getEndpoint()); - transfer.setEndpoint(0); + transfer.setEndpoint((byte) 0); assertEquals(0, transfer.getEndpoint()); LibUsb.freeTransfer(transfer); } /** - * Tests the {@link Transfer#setType(int)} and {@link Transfer#getType()} + * Tests the {@link Transfer#setType(byte)} and {@link Transfer#getType()} * methods. */ @Test @@ -168,9 +168,9 @@ public class TransferTest assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); assertEquals(0, transfer.getType()); - transfer.setType(1); + transfer.setType((byte) 1); assertEquals(1, transfer.getType()); - transfer.setType(0); + transfer.setType((byte) 0); assertEquals(0, transfer.getType()); LibUsb.freeTransfer(transfer); } From 164f6e1b3679726538f9f7c1ef167070d6eb045d Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 16:47:49 +0200 Subject: [PATCH 06/82] numAltsetting is an int, in both the Java class and libusb.h. --- src/main/c/src/Interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/Interface.c b/src/main/c/src/Interface.c index 77ca9a4..d10e243 100644 --- a/src/main/c/src/Interface.c +++ b/src/main/c/src/Interface.c @@ -30,12 +30,12 @@ struct libusb_interface *unwrapInterface(JNIEnv *env, jobject obj) UNWRAP_POINTER(env, obj, struct libusb_interface*, "interfacePointer"); } -JNIEXPORT jshort JNICALL METHOD_NAME(Interface, numAltsetting) +JNIEXPORT jint JNICALL METHOD_NAME(Interface, numAltsetting) ( JNIEnv *env, jobject this ) { - return (jshort) unwrapInterface(env, this)->num_altsetting; + return unwrapInterface(env, this)->num_altsetting; } JNIEXPORT jobjectArray JNICALL METHOD_NAME(Interface, altsetting) From 278733f0cb0dd84aac9972c5c751963cd77ce14f Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 16:49:08 +0200 Subject: [PATCH 07/82] bSynchAddress is a byte in both Java and libusb.h. --- src/main/c/src/EndpointDescriptor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/src/EndpointDescriptor.c b/src/main/c/src/EndpointDescriptor.c index 109795a..0ef0891 100644 --- a/src/main/c/src/EndpointDescriptor.c +++ b/src/main/c/src/EndpointDescriptor.c @@ -111,7 +111,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bRefresh) /** * byte bSynchAddress() */ -JNIEXPORT jint JNICALL METHOD_NAME(EndpointDescriptor, bSynchAddress) +JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bSynchAddress) ( JNIEnv *env, jobject this ) From 2c5ea3c7a451cf4c0e4612be05ed67bdf6ae86e6 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 16:52:24 +0200 Subject: [PATCH 08/82] Set size to zero on reset. Else getting the size is incorrect, and later when checking in get() it would pass the check and you'd access a NULL ptr. --- src/main/c/src/DeviceList.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index c51e339..cac8a92 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -23,6 +23,11 @@ libusb_device** unwrapDeviceList(JNIEnv* env, jobject list) void resetDeviceList(JNIEnv* env, jobject obj) { RESET_POINTER(env, obj, "deviceListPointer"); + + // Reset size to zero too. + jclass cls = (*env)->GetObjectClass(env, obj); + jfieldID field = (*env)->GetFieldID(env, cls, "size", "I"); + (*env)->SetIntField(env, object, field, 0); } /** From 01fa6c971f81adb4f0af4466a262d374e1fe2c70 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 17:36:29 +0200 Subject: [PATCH 09/82] Fix typo. --- src/main/c/src/DeviceList.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index cac8a92..0c60d1b 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -27,7 +27,7 @@ void resetDeviceList(JNIEnv* env, jobject obj) // Reset size to zero too. jclass cls = (*env)->GetObjectClass(env, obj); jfieldID field = (*env)->GetFieldID(env, cls, "size", "I"); - (*env)->SetIntField(env, object, field, 0); + (*env)->SetIntField(env, obj, field, 0); } /** From 2ac3763b7816a7be79a10f218ca474301832832a Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 17:36:42 +0200 Subject: [PATCH 10/82] Replace mentions of struct libusb_context with the typedef libusb_context, as is expected by the API. Also fix init/exit to not handle the default context in any special way: the default context is reference counted, and it is thus NOT an error to call init on it multiple times, or exit for that matter afterwards. --- src/main/c/src/LibUsb.c | 75 +++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index db00c84..27e3cd1 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -25,8 +25,6 @@ static JavaVM *jvm; -static int defaultContextInitialized = 0; - /** * Version getVersion() */ @@ -48,13 +46,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) { if (!context) { - if (defaultContextInitialized) - { - return illegalState(env, "Default context already initialized"); - } - int result = libusb_init(NULL); - if (!result) defaultContextInitialized = 1; - return result; + return libusb_init(NULL); } else { @@ -73,19 +65,19 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, exit) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); - if (!ctx && context) return; + if (!context) + { + libusb_exit(NULL); + } + else + { + libusb_context *ctx = unwrapContext(env, context); + if (!ctx) return; + + libusb_exit(ctx); - if (!context && !defaultContextInitialized) - { - illegalState(env, "Default context not initialized"); - return; - } - libusb_exit(ctx); - if (context) resetContext(env, context); - else - defaultContextInitialized = 0; + } } /** @@ -96,8 +88,9 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setDebug) JNIEnv *env, jclass class, jobject context, jint level ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_set_debug(ctx, level); } @@ -110,7 +103,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceList) ) { NOT_NULL(env, deviceList, return 0); - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; libusb_device **list; ssize_t result = libusb_get_device_list(ctx, &list); @@ -175,7 +168,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) { NOT_NULL(env, device, return 0); NOT_NULL(env, path, return 0); - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; @@ -320,7 +313,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, openDeviceWithVidPid) jint productId ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return NULL; return wrapDeviceHandle(env, libusb_open_device_with_vid_pid( ctx, vendorId, productId)); @@ -791,7 +784,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, tryLockEvents) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; return libusb_try_lock_events(ctx); } @@ -804,7 +797,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, lockEvents) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_lock_events(ctx); } @@ -817,7 +810,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unlockEvents) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_unlock_events(ctx); } @@ -830,7 +823,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, eventHandlingOk) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; return libusb_event_handling_ok(ctx); } @@ -843,7 +836,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, eventHandlerActive) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; return libusb_event_handler_active(ctx); } @@ -856,7 +849,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, lockEventWaiters) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_lock_event_waiters(ctx); } @@ -869,7 +862,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unlockEventWaiters) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_unlock_event_waiters(ctx); } @@ -882,7 +875,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, waitForEvent) JNIEnv *env, jclass class, jobject context, jlong timeout ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; struct timeval tv; tv.tv_sec = timeout / 1000000; @@ -899,7 +892,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeoutCompleted) jobject completed ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; struct timeval tv; tv.tv_sec = timeout / 1000000; @@ -923,7 +916,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeout) JNIEnv *env, jclass class, jobject context, jlong timeout ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; struct timeval tv; tv.tv_sec = timeout / 1000000; @@ -939,7 +932,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEvents) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; return libusb_handle_events(ctx); } @@ -952,7 +945,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsCompleted) JNIEnv *env, jclass class, jobject context, jobject completed ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; int complete; int result = libusb_handle_events_completed(ctx, &complete); @@ -973,7 +966,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsLocked) JNIEnv *env, jclass class, jobject context, jlong timeout ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; struct timeval tv; tv.tv_sec = timeout / 1000000; @@ -989,7 +982,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, pollfdsHandleTimeouts) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; return libusb_pollfds_handle_timeouts(ctx); } @@ -1002,7 +995,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getNextTimeout) JNIEnv *env, jclass class, jobject context, jobject timeout ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; struct timeval tv; int result = libusb_get_next_timeout(ctx, &tv); @@ -1057,7 +1050,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; (*env)->GetJavaVM(env, &jvm); libusb_set_pollfd_notifiers(ctx, triggerPollfdAdded, triggerPollfdRemoved, @@ -1072,7 +1065,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unsetPollfdNotifiers) JNIEnv *env, jclass class, jobject context ) { - struct libusb_context *ctx = unwrapContext(env, context); + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_set_pollfd_notifiers(ctx, NULL, NULL, NULL); } From b97aa732204825642d297a7e71a82452d60de9a8 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 5 Jun 2013 18:22:21 +0200 Subject: [PATCH 11/82] Work on array directly to avoid a full copy. --- src/main/c/src/LibUsb.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 27e3cd1..9cce281 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -172,14 +172,17 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - jsize size = (*env)->GetArrayLength(env, path); - unsigned char buffer[size]; + int result = 0; + #if defined(LIBUSBX_API_VERSION) - int result = libusb_get_port_path(ctx, dev, buffer, size); - #else - int result = 0; + jbyte* buffer = (*env)->GetByteArrayElements(env, path, NULL); + jsize size = (*env)->GetArrayLength(env, path); + + result = libusb_get_port_path(ctx, dev, (uint8_t *) buffer, size); + + (*env)->ReleaseByteArrayElements(env, path, buffer, 0); #endif - if (result > 0) (*env)->SetByteArrayRegion(env, path, 0, result, (jbyte *) buffer); + return result; } From a4d5de493b60085f5b4495418ce42fa1fe577075 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 09:28:50 +0200 Subject: [PATCH 12/82] Fix LongBuffer vs IntBuffer usage for getNextTimeout: it has to work with long. Fix method signatures. Add TODO wrt wrong usage of completed flag. --- src/main/c/src/LibUsb.c | 14 +++++++------- src/main/java/de/ailis/usb4java/libusb/LibUsb.java | 3 ++- .../java/de/ailis/usb4java/libusb/LibUSBTest.java | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 9cce281..2041443 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -720,7 +720,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) } /** - * int bulkTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int) + * int bulkTransfer(DeviceHandle, int, int, int, int, IntBuffer, int) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) ( @@ -750,7 +750,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) } /** - * int interruptTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int) + * int interruptTransfer(DeviceHandle, int, int, int, int, IntBuffer, int) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) ( @@ -900,7 +900,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeoutCompleted) struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; - int complete; + int complete; // TODO: this has to be an external pointer that gets read, it is NOT a place to write to! int result = libusb_handle_events_timeout_completed(ctx, &tv, &complete); if (!result && completed) { @@ -950,7 +950,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsCompleted) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; - int complete; + int complete; // TODO: same as above! int result = libusb_handle_events_completed(ctx, &complete); if (!result && completed) { @@ -1006,7 +1006,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getNextTimeout) { jclass cls = (*env)->GetObjectClass(env, timeout); jmethodID method = (*env)->GetMethodID(env, cls, "put", - "(II)Ljava/nio/LongBuffer;"); + "(IJ)Ljava/nio/LongBuffer;"); (*env)->CallVoidMethod(env, timeout, method, 0, tv.tv_sec * 1000000 + tv.tv_usec); } @@ -1023,7 +1023,7 @@ static void LIBUSB_CALL triggerPollfdAdded(int fd, short events, void *user_data jclass cls = (*env)->FindClass(env, PACKAGE_DIR"/LibUsb"); jmethodID method = (*env)->GetStaticMethodID(env, cls, - "triggerPollfdAdded", "(Ljava/io/FileDescriptor;)V"); + "triggerPollfdAdded", "(Ljava/io/FileDescriptor;I)V"); (*env)->CallStaticVoidMethod(env, cls, method, object, events); THREAD_END @@ -1056,7 +1056,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; (*env)->GetJavaVM(env, &jvm); - libusb_set_pollfd_notifiers(ctx, triggerPollfdAdded, triggerPollfdRemoved, + libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, NULL); } diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 7a924da..4f5d584 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -14,6 +14,7 @@ package de.ailis.usb4java.libusb; import java.io.FileDescriptor; import java.nio.ByteBuffer; import java.nio.IntBuffer; +import java.nio.LongBuffer; /** * Static class providing the constants and functions of libusbx. @@ -1752,7 +1753,7 @@ public final class LibUsb * or {@link #ERROR_OTHER} failure */ public static native int getNextTimeout(final Context context, - final IntBuffer timeout); + final LongBuffer timeout); /** * Register notification functions for file descriptor additions/removals. diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index a19053c..ef17350 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -16,6 +16,7 @@ import static org.junit.Assert.fail; import java.io.FileDescriptor; import java.nio.ByteBuffer; import java.nio.IntBuffer; +import java.nio.LongBuffer; import org.junit.Test; @@ -867,7 +868,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.getNextTimeout(context, IntBuffer.allocate(1)); + LibUsb.getNextTimeout(context, LongBuffer.allocate(1)); } /** From d7ce8ce87b34c75b7235ca08d3a88776a0f74626 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 09:59:21 +0200 Subject: [PATCH 13/82] We don't need to concern ourselves with length in getStringDescriptorAscii when using a StringBuffer and appending to it. In C you need to have a length parameter to know how much you can write, here we can always just get the maximum, which is quite small, and then append to the StringBuffer, which will take care of any length management. --- src/main/c/src/LibUsb.c | 13 +++++++------ .../java/de/ailis/usb4java/libusb/LibUsb.java | 15 ++++----------- .../ailis/usb4java/libusb/LibUSBDeviceTest.java | 4 ++-- .../java/de/ailis/usb4java/libusb/LibUSBTest.java | 2 +- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 2041443..839814f 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -564,24 +564,25 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceDescriptor) } /** - * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int) + * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) ( - JNIEnv *env, jclass class, jobject handle, jint index, jobject string, - jint length + JNIEnv *env, jclass class, jobject handle, jint index, jobject string ) { NOT_NULL(env, handle, return 0); NOT_NULL(env, string, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - unsigned char buffer[length + 1]; + // Maximum size of a descriptor is 256 bytes, -2 for length/type = 254, /2 because of Unicode = 127 characters + // and then +1 for the terminating NUL byte for C strings (the descriptor itself doesn't necessarily have one!). + unsigned char buffer[127 + 1]; int result = libusb_get_string_descriptor_ascii( - dev_handle, index, buffer, length); + dev_handle, index, buffer, 127); if (result >= 0) { - buffer[result] = 0; + buffer[result] = 0x00; jobject tmp = (*env)->NewStringUTF(env, (char *) buffer); jclass cls = (*env)->GetObjectClass(env, string); jmethodID method = (*env)->GetMethodID(env, cls, "append", diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 4f5d584..556913d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -455,9 +455,6 @@ public final class LibUsb /** Device sent more data than requested. */ public static final int TRANSFER_OVERFLOW = 6; - /** The maximum size of a string (Unicode). */ - private static final int MAX_STRING_SIZE = 126; - /** The currently set pollfd listener. */ private static PollfdListener pollfdListener; @@ -1132,17 +1129,14 @@ public final class LibUsb * The index of the descriptor to retrieve. * @param string * Output buffer for ASCII string descriptor. - * @param length - * Maximum number of bytes to read. * @return Number of bytes returned in data, or ERROR code on failure. */ public static native int getStringDescriptorAscii( - final DeviceHandle handle, final int index, final StringBuffer string, - final int length); + final DeviceHandle handle, final int index, final StringBuffer string); /** * A simple wrapper around - * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int)} + * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer)} * Simply returns the string (Maximum length of 126) if possible. If not * possible (NULL handle or 0-index specified or error occured) then null is * returned. @@ -1160,8 +1154,7 @@ public final class LibUsb { if (handle == null || index == 0) return null; final StringBuffer buffer = new StringBuffer(); - if (getStringDescriptorAscii(handle, index, buffer, - MAX_STRING_SIZE) >= 0) + if (getStringDescriptorAscii(handle, index, buffer) >= 0) { return buffer.toString(); } @@ -1286,7 +1279,7 @@ public final class LibUsb * @param data * Output buffer for descriptor. * @return number of bytes returned in data, or LIBUSB_ERROR code on failure - * @see #getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int) + * @see #getStringDescriptorAscii(DeviceHandle, int, StringBuffer) */ public static native int getStringDescriptor(final DeviceHandle handle, final int index, final int langId, final ByteBuffer data); diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java index 6b1501c..f0ab823 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java @@ -920,7 +920,7 @@ public class LibUSBDeviceTest public void testGetStringDescriptorAsciiWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptorAscii(null, 0, new StringBuffer(), 0); + LibUsb.getStringDescriptorAscii(null, 0, new StringBuffer()); } /** @@ -932,7 +932,7 @@ public class LibUSBDeviceTest public void testGetStringDescriptorAsciiWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptorAscii(new DeviceHandle(), 0, null, 0); + LibUsb.getStringDescriptorAscii(new DeviceHandle(), 0, null); } /** diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index ef17350..7785e57 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -552,7 +552,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); LibUsb.getStringDescriptorAscii(new DeviceHandle(), 0, - new StringBuffer(), 0); + new StringBuffer()); } /** From f976026e1db5acc60a0eb65d11d704a1a814d585 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 10:29:40 +0200 Subject: [PATCH 14/82] Consistently use ByteBuffers in the LibUsb class, getPortPath was the only method that used a byte array, and I personally prefer consistency here, as it gets used like any other function expected to get a char * + length. --- src/main/c/src/LibUsb.c | 13 +++++----- .../java/de/ailis/usb4java/libusb/LibUsb.java | 2 +- .../usb4java/libusb/LibUSBDeviceTest.java | 24 +++++++++---------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 839814f..a9f8f12 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -159,15 +159,16 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortNumber) } /** - * int getPortPath(Context, Device, byte[]) + * int getPortPath(Context, Device, ByteBuffer) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) ( - JNIEnv *env, jclass class, jobject context, jobject device, jbyteArray path + JNIEnv *env, jclass class, jobject context, jobject device, jobject path ) { NOT_NULL(env, device, return 0); NOT_NULL(env, path, return 0); + DIRECT_BUFFER(env, path, return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); @@ -175,12 +176,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) int result = 0; #if defined(LIBUSBX_API_VERSION) - jbyte* buffer = (*env)->GetByteArrayElements(env, path, NULL); - jsize size = (*env)->GetArrayLength(env, path); + unsigned char *ptr = (*env)->GetDirectBufferAddress(env, path); + jlong size = (*env)->GetDirectBufferCapacity(env, path); - result = libusb_get_port_path(ctx, dev, (uint8_t *) buffer, size); - - (*env)->ReleaseByteArrayElements(env, path, buffer, 0); + result = libusb_get_port_path(ctx, dev, ptr, size); #endif return result; diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 556913d..e63dad8 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -613,7 +613,7 @@ public final class LibUsb * array is too small */ public static native int getPortPath(final Context context, - final Device device, final byte[] path); + final Device device, final ByteBuffer path); /** * Get the the parent from the specified device [EXPERIMENTAL]. diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java index f0ab823..2126377 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java @@ -153,21 +153,21 @@ public class LibUSBDeviceTest } /** - * Tests the {@link LibUsb#getPortPath(Context, Device, byte[])} method. + * Tests the {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method. */ @Test public void testGetPortPath() { assumeUsbTestsEnabled(); assumeNotNull(this.device); - byte[] path = new byte[8]; + ByteBuffer path = ByteBuffer.allocateDirect(8); int result = LibUsb.getPortPath(this.context, this.device, path); assertTrue(result > 0); - assertTrue(result <= path.length); + assertTrue(result <= path.capacity()); } /** - * Tests the {@link LibUsb#getPortPath(Context, Device, byte[])} method with + * Tests the {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method with * 0-sized path buffer. */ @Test @@ -175,24 +175,24 @@ public class LibUSBDeviceTest { assumeUsbTestsEnabled(); assumeNotNull(this.device); - byte[] path = new byte[0]; + ByteBuffer path = ByteBuffer.allocateDirect(0); int result = LibUsb.getPortPath(this.context, this.device, path); assertEquals(LibUsb.ERROR_OVERFLOW, result); } /** - * Tests the {@link LibUsb#getPortPath(Context, Device, byte[])} method + * Tests the {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method * without a device. */ @Test(expected = IllegalArgumentException.class) public void testGetPortPathWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getPortPath(this.context, null, new byte[8]); + LibUsb.getPortPath(this.context, null, ByteBuffer.allocateDirect(8)); } /** - * Tests the {@link LibUsb#getPortPath(Context, Device, byte[])} method + * Tests the {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method * without a buffer. */ @Test(expected = IllegalArgumentException.class) @@ -203,7 +203,7 @@ public class LibUSBDeviceTest } /** - * Tests {@link LibUsb#getPortPath(Context, Device, byte[])} method with + * Tests {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method with * uninitialized USB context. */ @Test(expected = IllegalStateException.class) @@ -212,18 +212,18 @@ public class LibUSBDeviceTest assumeUsbTestsEnabled(); assumeNotNull(this.device); final Context context = new Context(); - LibUsb.getPortPath(context, this.device, new byte[16]); + LibUsb.getPortPath(context, this.device, ByteBuffer.allocateDirect(16)); } /** - * Tests {@link LibUsb#getPortPath(Context, Device, byte[])} method with + * Tests {@link LibUsb#getPortPath(Context, Device, ByteBuffer)} method with * uninitialized device. */ @Test(expected = IllegalStateException.class) public void testGetPortPathWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getPortPath(this.context, new Device(), new byte[16]); + LibUsb.getPortPath(this.context, new Device(), ByteBuffer.allocateDirect(16)); } /** From 36f14cf52daeb2a9378a3c44e137bfb8ba4fcd4d Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 10:36:49 +0200 Subject: [PATCH 15/82] I see now why ints were used here, because all the constants are ints and as such you don't have to do annoying casts and conversions. I agree with this on set*() calls, but I argue that it is more correct to return the appropriate, smaller type on get*() calls, the same as with the other classes: the values you can read are of appropriate, original size. --- src/main/c/src/Transfer.c | 12 ++++++------ src/main/java/de/ailis/usb4java/libusb/Transfer.java | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index f74520e..0eed63a 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -44,11 +44,11 @@ JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, getDevHandle) } /** - * void setFlags(byte) + * void setFlags(int) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setFlags) ( - JNIEnv *env, jobject this, jbyte flags + JNIEnv *env, jobject this, jint flags ) { unwrapTransfer(env, this)->flags = flags; @@ -66,11 +66,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getFlags) } /** - * void setEndpoint(byte) + * void setEndpoint(int) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setEndpoint) ( - JNIEnv *env, jobject this, jbyte endpoint + JNIEnv *env, jobject this, jint endpoint ) { unwrapTransfer(env, this)->endpoint = endpoint; @@ -88,11 +88,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getEndpoint) } /** - * void setType(byte) + * void setType(int) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setType) ( - JNIEnv *env, jobject this, jbyte type + JNIEnv *env, jobject this, jint type ) { unwrapTransfer(env, this)->type = type; diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 834385e..190235f 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -73,7 +73,7 @@ public final class Transfer * @param flags * The transfer flags to set. */ - public native void setFlags(final byte flags); + public native void setFlags(final int flags); /** * Returns the address of the endpoint where this transfer will be sent. @@ -88,7 +88,7 @@ public final class Transfer * @param endpoint * The endpoint address to set */ - public native void setEndpoint(final byte endpoint); + public native void setEndpoint(final int endpoint); /** * Returns the type of the endpoint. @@ -103,7 +103,7 @@ public final class Transfer * @param type * The endpoint type to set. */ - public native void setType(final byte type); + public native void setType(final int type); /** * Returns the timeout for this transfer in milliseconds. A value of 0 From 2d5ecef390b93f396a234610b426668754a5f3b0 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 11:32:44 +0200 Subject: [PATCH 16/82] Fix signature comments. --- src/main/c/src/LibUsb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index a9f8f12..6332c97 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -720,7 +720,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) } /** - * int bulkTransfer(DeviceHandle, int, int, int, int, IntBuffer, int) + * int bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) ( @@ -750,7 +750,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) } /** - * int interruptTransfer(DeviceHandle, int, int, int, int, IntBuffer, int) + * int interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) ( From 6d2afe79aca595b6bc6ba19207b199f4f18bae1f Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 12:04:50 +0200 Subject: [PATCH 17/82] Don't create new scopes in macros, it only makes sense if you have frequent name collisions, and worsens performance. Change DIRECT_BUFFER to not call the isDirect() method (expensive!), but instead to check the return value of getDirectBufferAddress, which is always used anyway. It also detects cases where the JVM doesn't support direct buffers and other error conditions this way. --- src/main/c/src/DeviceList.c | 8 +++---- src/main/c/src/LibUsb.c | 18 ++++++---------- src/main/c/src/usb4java.h | 43 ++++++++++++------------------------- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index 0c60d1b..835abe1 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -10,8 +10,8 @@ void setDeviceList(JNIEnv* env, libusb_device** list, int size, jobject object) { SET_POINTER(env, list, object, "deviceListPointer"); - jclass cls = (*env)->GetObjectClass(env, object); - jfieldID field = (*env)->GetFieldID(env, cls, "size", "I"); + // We already have the class from the previous call. + field = (*env)->GetFieldID(env, cls, "size", "I"); (*env)->SetIntField(env, object, field, size); } @@ -25,8 +25,8 @@ void resetDeviceList(JNIEnv* env, jobject obj) RESET_POINTER(env, obj, "deviceListPointer"); // Reset size to zero too. - jclass cls = (*env)->GetObjectClass(env, obj); - jfieldID field = (*env)->GetFieldID(env, cls, "size", "I"); + // We already have the class from the previous call. + field = (*env)->GetFieldID(env, cls, "size", "I"); (*env)->SetIntField(env, obj, field, 0); } diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 6332c97..d8dd4e1 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -168,7 +168,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) { NOT_NULL(env, device, return 0); NOT_NULL(env, path, return 0); - DIRECT_BUFFER(env, path, return 0); + DIRECT_BUFFER(env, path, ptr, return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); @@ -176,7 +176,6 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) int result = 0; #if defined(LIBUSBX_API_VERSION) - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, path); jlong size = (*env)->GetDirectBufferCapacity(env, path); result = libusb_get_port_path(ctx, dev, ptr, size); @@ -672,10 +671,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDescriptor) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, return 0); + DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, data); jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_get_descriptor(dev_handle, type, index, ptr, size); } @@ -691,10 +689,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptor) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, return 0); + DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, data); jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_get_string_descriptor(dev_handle, index, langId, ptr, size); } @@ -710,10 +707,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, return 0); + DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, data); jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_control_transfer(dev_handle, bmRequestType, bRequest, wValue, wIndex, ptr, size, timeout); @@ -731,11 +727,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); NOT_NULL(env, transferred, return 0); - DIRECT_BUFFER(env, data, return 0); + DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; int sent; - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, data); jlong size = (*env)->GetDirectBufferCapacity(env, data); int result = libusb_bulk_transfer(dev_handle, endpoint, ptr, size, &sent, timeout); @@ -761,11 +756,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); NOT_NULL(env, transferred, return 0); - DIRECT_BUFFER(env, data, return 0); + DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; int sent; - unsigned char *ptr = (*env)->GetDirectBufferAddress(env, data); jlong size = (*env)->GetDirectBufferCapacity(env, data); int result = libusb_interrupt_transfer(dev_handle, endpoint, ptr, size, &sent, timeout); diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 89885d3..538568f 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -20,21 +20,16 @@ #endif #define SET_POINTER(ENV, PTR, OBJECT, FIELD) \ -{ \ jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ - (*ENV)->SetLongField(ENV, OBJECT, field, (jptr) PTR); \ -} + (*ENV)->SetLongField(ENV, OBJECT, field, (jptr) PTR); #define RESET_POINTER(ENV, OBJECT, FIELD) \ -{ \ jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ - (*ENV)->SetLongField(ENV, OBJECT, field, 0); \ -} + (*ENV)->SetLongField(ENV, OBJECT, field, 0); #define WRAP_POINTER(ENV, PTR, CLASS_NAME, FIELD) \ -{ \ if (!PTR) return NULL; \ jclass cls = (*ENV)->FindClass(ENV, PACKAGE_DIR"/"CLASS_NAME); \ if (cls == NULL) return NULL; \ @@ -43,48 +38,38 @@ jobject object = (*ENV)->NewObject(ENV, cls, constructor); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ (*ENV)->SetLongField(ENV, object, field, (jptr) PTR); \ - return object; \ -} + return object; #define UNWRAP_POINTER(ENV, OBJECT, TYPE, FIELD) \ -{ \ if (!OBJECT) return NULL; \ jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ jptr ptr = (jptr) (*ENV)->GetLongField(ENV, OBJECT, field); \ if (!ptr) illegalState(ENV, FIELD" is not initialized"); \ - return (TYPE) ptr; \ -} + return (TYPE) ptr; #define SET_DATA(ENV, PTR, SIZE, OBJECT, FIELD) \ -{ \ jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, \ "Ljava/nio/ByteBuffer;"); \ jobject buffer = (*ENV)->NewDirectByteBuffer(env, PTR, SIZE); \ - (*ENV)->SetObjectField(ENV, OBJECT, field, buffer); \ -} + (*ENV)->SetObjectField(ENV, OBJECT, field, buffer); #define UNWRAP_DATA(ENV, OBJECT, TYPE, FIELD) \ -{ \ jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, \ "Ljava/nio/ByteBuffer;"); \ jobject buffer = (*ENV)->GetObjectField(ENV, OBJECT, field); \ - return (TYPE) (*ENV)->GetDirectBufferAddress(ENV, buffer); \ -} + return (TYPE) (*ENV)->GetDirectBufferAddress(ENV, buffer); -#define DIRECT_BUFFER(ENV, VAR, ACTION) \ -{ \ - jclass cls = (*ENV)->GetObjectClass(ENV, VAR); \ - jmethodID method = (*ENV)->GetMethodID(ENV, cls, "isDirect", \ - "()Z"); \ - if (!(*ENV)->CallBooleanMethod(ENV, VAR, method)) \ - { \ - illegalArgument(ENV, #VAR" must be a direct buffer"); \ - ACTION; \ - } \ -} +// GetDirectBufferAddress returns NULL if called on a non-direct buffer. +#define DIRECT_BUFFER(ENV, VAR, BUFFER, ACTION) \ + unsigned char *BUFFER = (*ENV)->GetDirectBufferAddress(ENV, VAR); \ + if (!BUFFER) \ + { \ + illegalArgument(ENV, #VAR" must be a direct buffer"); \ + ACTION; \ + } #define NOT_NULL(ENV, VAR, ACTION) \ if (!VAR) \ From 69cecdb21a43652e9e68aafc35f3f160ad70ff86 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 14:08:27 +0200 Subject: [PATCH 18/82] Fix memory leak: if you malloc, you must also free, JNI never touches manually allocated memory. Also, I don't see why there is any need to deviate from using a pointer to using a ByteBuffer here, it will not make memory management automatic, and just makes the DeviceDescriptor "different" for no apparent reason. So changed back to pointer. --- src/main/c/src/DeviceDescriptor.c | 14 +++++++++----- src/main/c/src/DeviceDescriptor.h | 1 + src/main/c/src/LibUsb.c | 18 +++++++++++++++++- src/main/c/src/usb4java.h | 14 -------------- .../usb4java/libusb/DeviceDescriptor.java | 14 ++++++-------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 17 +++++++++++++++++ .../usb4java/libusb/LibUSBDeviceTest.java | 2 +- 7 files changed, 51 insertions(+), 29 deletions(-) diff --git a/src/main/c/src/DeviceDescriptor.c b/src/main/c/src/DeviceDescriptor.c index 222e505..b9932fe 100644 --- a/src/main/c/src/DeviceDescriptor.c +++ b/src/main/c/src/DeviceDescriptor.c @@ -8,14 +8,18 @@ void setDeviceDescriptor(JNIEnv* env, struct libusb_device_descriptor* descriptor, jobject object) { - SET_DATA(env, descriptor, sizeof(struct libusb_device_descriptor), - object, "data"); + SET_POINTER(env, descriptor, object, "deviceDescriptorPointer"); } -struct libusb_device_descriptor* unwrapDeviceDescriptor(JNIEnv* env, - jobject descriptor) +struct libusb_device_descriptor* unwrapDeviceDescriptor(JNIEnv *env, + jobject obj) { - UNWRAP_DATA(env, descriptor, struct libusb_device_descriptor*, "data"); + UNWRAP_POINTER(env, obj, struct libusb_device_descriptor*, "deviceDescriptorPointer"); +} + +void resetDeviceDescriptor(JNIEnv* env, jobject obj) +{ + RESET_POINTER(env, obj, "deviceDescriptorPointer"); } /** diff --git a/src/main/c/src/DeviceDescriptor.h b/src/main/c/src/DeviceDescriptor.h index 857a1dd..1ddf033 100644 --- a/src/main/c/src/DeviceDescriptor.h +++ b/src/main/c/src/DeviceDescriptor.h @@ -10,5 +10,6 @@ void setDeviceDescriptor(JNIEnv*, struct libusb_device_descriptor*, jobject); struct libusb_device_descriptor* unwrapDeviceDescriptor(JNIEnv*, jobject); +void resetDeviceDescriptor(JNIEnv*, jobject); #endif diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index d8dd4e1..927cde7 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -554,13 +554,29 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceDescriptor) NOT_NULL(env, descriptor, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - struct libusb_device_descriptor *data = + struct libusb_device_descriptor *data = malloc(sizeof(struct libusb_device_descriptor)); int result = libusb_get_device_descriptor(dev, data); if (!result) setDeviceDescriptor(env, data, descriptor); return result; } +/** + * void freeDeviceDescriptor(DeviceDescriptor) + */ +JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeDeviceDescriptor) +( + JNIEnv *env, jclass class, jobject descriptor +) +{ + NOT_NULL(env, descriptor, return); + struct libusb_device_descriptor *data = unwrapDeviceDescriptor(env, + descriptor); + if (!data) return; + free(data); + resetDeviceDescriptor(env, descriptor); +} + /** * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer) */ diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 538568f..77058af 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -48,20 +48,6 @@ if (!ptr) illegalState(ENV, FIELD" is not initialized"); \ return (TYPE) ptr; -#define SET_DATA(ENV, PTR, SIZE, OBJECT, FIELD) \ - jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ - jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, \ - "Ljava/nio/ByteBuffer;"); \ - jobject buffer = (*ENV)->NewDirectByteBuffer(env, PTR, SIZE); \ - (*ENV)->SetObjectField(ENV, OBJECT, field, buffer); - -#define UNWRAP_DATA(ENV, OBJECT, TYPE, FIELD) \ - jclass cls = (*ENV)->GetObjectClass(ENV, OBJECT); \ - jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, \ - "Ljava/nio/ByteBuffer;"); \ - jobject buffer = (*ENV)->GetObjectField(ENV, OBJECT, field); \ - return (TYPE) (*ENV)->GetDirectBufferAddress(ENV, buffer); - // GetDirectBufferAddress returns NULL if called on a non-direct buffer. #define DIRECT_BUFFER(ENV, VAR, BUFFER, ACTION) \ unsigned char *BUFFER = (*ENV)->GetDirectBufferAddress(ENV, VAR); \ diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java index 429d49a..fe0513a 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java @@ -11,8 +11,6 @@ package de.ailis.usb4java.libusb; -import java.nio.ByteBuffer; - import javax.usb.UsbDeviceDescriptor; import org.apache.commons.lang3.builder.EqualsBuilder; @@ -30,8 +28,8 @@ import de.ailis.usb4java.utils.DescriptorUtils; */ public final class DeviceDescriptor implements UsbDeviceDescriptor { - /** The native data of the descriptor structure. */ - private ByteBuffer data; + /** The native pointer to the descriptor structure. */ + private long deviceDescriptorPointer; /** * Constructs a new device descriptor which can be passed to the @@ -43,13 +41,13 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor } /** - * Returns the native data of the descriptor structure. + * Returns the native pointer. * - * @return The native data. + * @return The native pointer. */ - public ByteBuffer getData() + public long getPointer() { - return this.data; + return this.deviceDescriptorPointer; } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index e63dad8..49e711b 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -1119,6 +1119,23 @@ public final class LibUsb */ public static native int getDeviceDescriptor(final Device device, final DeviceDescriptor descriptor); + + /** + * Free a device descriptor obtained from + * {@link #getDeviceDescriptor(Device, DeviceDescriptor)}. + * + * It is safe to call this function with a NULL device parameter, in which + * case the function simply returns. + * + * This function is not present in the libusb-1.0 API, but since + * getDeviceDescriptor() requires memory to be allocated manually, + * a way to deallocate it from Java is required to avoid a memory leak. + * + * @param descriptor + * The device descriptor to free + */ + public static native void freeDeviceDescriptor( + final DeviceDescriptor descriptor); /** * Retrieve a string descriptor in C style ASCII. diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java index 2126377..d1816a2 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java @@ -667,7 +667,7 @@ public class LibUSBDeviceTest desc.bDeviceClass(); desc.bDeviceProtocol(); desc.bDeviceSubClass(); - assertEquals(desc.getData().limit(), desc.bLength()); + assertTrue(desc.bLength() > 0); desc.bMaxPacketSize0(); desc.bNumConfigurations(); } From bcfca40d56647165532c7b51ea786571f190459b Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 14:48:35 +0200 Subject: [PATCH 19/82] Fix signature comments. --- src/main/c/src/LibUsb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 927cde7..12e41cd 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -37,7 +37,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getVersion) } /** - * int init() + * int init(Context) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) ( @@ -58,7 +58,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) } /** - * void exit() + * void exit(Context) */ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, exit) ( @@ -185,7 +185,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) } /** - * int getPortNumber(Device) + * Device getParent(Device) */ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getParent) ( @@ -306,7 +306,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, open) } /** - * DeviceHandle open(Context, int, int) + * DeviceHandle openDeviceWithVidPid(Context, int, int) */ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, openDeviceWithVidPid) ( From 1794bbe71d840454035f85c78b51ffa59410b508 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 6 Jun 2013 15:24:33 +0200 Subject: [PATCH 20/82] Fix handleEventsTimeoutCompleted and handleEventsCompleted, they require access to a variable representing an integer, that gets set from somewhere outside, like a transfer callback. The only way to do this in Java is by direct buffers, which IntBuffers can be if allocated correctly, as explained in the JavaDoc. --- src/main/c/src/LibUsb.c | 35 +++++++++---------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 5 +++ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 12e41cd..298d072 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -905,20 +905,20 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeoutCompleted) jobject completed ) { + int *complete = NULL; + if (completed) { + DIRECT_BUFFER(env, completed, complete_tmp, return 0); + complete = (int *) complete_tmp; + } + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; - int complete; // TODO: this has to be an external pointer that gets read, it is NOT a place to write to! - int result = libusb_handle_events_timeout_completed(ctx, &tv, &complete); - if (!result && completed) - { - jclass cls = (*env)->GetObjectClass(env, completed); - jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); - (*env)->CallVoidMethod(env, completed, method, 0, complete); - } - return result; + + return libusb_handle_events_timeout_completed(ctx, &tv, complete); } /** @@ -958,17 +958,16 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsCompleted) JNIEnv *env, jclass class, jobject context, jobject completed ) { + int *complete = NULL; + if (completed) { + DIRECT_BUFFER(env, completed, complete_tmp, return 0); + complete = (int *) complete_tmp; + } + libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; - int complete; // TODO: same as above! - int result = libusb_handle_events_completed(ctx, &complete); - if (!result && completed) - { - jclass cls = (*env)->GetObjectClass(env, completed); - jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); - (*env)->CallVoidMethod(env, completed, method, 0, complete); - } - return result; + + return libusb_handle_events_completed(ctx, complete); } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 49e711b..7119439 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -1600,6 +1600,11 @@ public final class LibUsb * pointed to is not 0. This allows for race free waiting for the completion * of a specific transfer. * + * The only way to implement this in Java is by passing a direct buffer, and + * then accessing memory directly. IntBuffers can be direct, if they are + * created as a view of a direct ByteBuffer, as in the following code: + * ByteBuffer.allocateDirect(Integer.SIZE / Byte.SIZE).asIntBuffer() + * * @param context * the context to operate on, or NULL for the default context * @param timeout From 6f542a62282ab7cd9a59859b13cb062d87b39329 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 10:51:23 +0200 Subject: [PATCH 21/82] Separate input checking from function content by a newline, improves readability by a lot! Add missing NOT_NULL checks. Simplify getPortPath() ifdef. Check for result value in libusb_init and only setContext if the call succeeded. Use always same style of NULL checks in usb4java.h. --- src/main/c/src/LibUsb.c | 64 ++++++++++++++++++++++++++++++++++++--- src/main/c/src/usb4java.h | 4 +-- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 298d072..857eea2 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -52,7 +52,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) { libusb_context *ctx; int result = libusb_init(&ctx); - setContext(env, ctx, context); + if (!result) setContext(env, ctx, context); return result; } } @@ -105,6 +105,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceList) NOT_NULL(env, deviceList, return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + libusb_device **list; ssize_t result = libusb_get_device_list(ctx, &list); if (result >= 0) setDeviceList(env, list, result, deviceList); @@ -122,6 +123,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeDeviceList) NOT_NULL(env, deviceList, return); libusb_device **list = unwrapDeviceList(env, deviceList); if (!list) return; + libusb_free_device_list(list, unrefDevices); resetDeviceList(env, deviceList); } @@ -137,6 +139,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getBusNumber) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + return libusb_get_bus_number(dev); } @@ -151,6 +154,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortNumber) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + #if defined(LIBUSBX_API_VERSION) return libusb_get_port_number(dev); #else @@ -173,15 +177,14 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - int result = 0; #if defined(LIBUSBX_API_VERSION) jlong size = (*env)->GetDirectBufferCapacity(env, path); - result = libusb_get_port_path(ctx, dev, ptr, size); + return libusb_get_port_path(ctx, dev, ptr, size); + #else + return 0; #endif - - return result; } /** @@ -195,6 +198,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getParent) NOT_NULL(env, device, return NULL); libusb_device *dev = unwrapDevice(env, device); if (!dev) return NULL; + #if defined(LIBUSBX_API_VERSION) return wrapDevice(env, libusb_get_parent(dev)); #else @@ -213,6 +217,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceAddress) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + return libusb_get_device_address(dev); } @@ -227,6 +232,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceSpeed) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + return libusb_get_device_speed(dev); } @@ -241,6 +247,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxPacketSize) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + return libusb_get_max_packet_size(dev, endpoint); } @@ -255,6 +262,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxIsoPacketSize) NOT_NULL(env, device, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + return libusb_get_max_iso_packet_size(dev, endpoint); } @@ -269,6 +277,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, refDevice) NOT_NULL(env, device, return NULL); libusb_device *dev = unwrapDevice(env, device); if (!dev) return NULL; + libusb_ref_device(dev); return device; } @@ -284,6 +293,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unrefDevice) NOT_NULL(env, device, return); libusb_device *dev = unwrapDevice(env, device); if (!dev) return; + libusb_unref_device(dev); } @@ -299,6 +309,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, open) NOT_NULL(env, handle, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + libusb_device_handle *deviceHandle; int result = libusb_open(dev, &deviceHandle); if (!result) setDeviceHandle(env, deviceHandle, handle); @@ -316,6 +327,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, openDeviceWithVidPid) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return NULL; + return wrapDeviceHandle(env, libusb_open_device_with_vid_pid( ctx, vendorId, productId)); } @@ -331,6 +343,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, close) NOT_NULL(env, handle, return); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return; + libusb_close(dev_handle); resetDeviceHandle(env, handle); } @@ -346,6 +359,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getDevice) NOT_NULL(env, handle, return NULL); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return NULL; + return wrapDevice(env, libusb_get_device(dev_handle)); } @@ -361,6 +375,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfiguration) NOT_NULL(env, buffer, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + int config; int result = libusb_get_configuration(dev_handle, &config); if (!result) @@ -383,6 +398,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, setConfiguration) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_set_configuration(dev_handle, config); } @@ -397,6 +413,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, claimInterface) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_claim_interface(dev_handle, iface); } @@ -411,6 +428,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, releaseInterface) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_release_interface(dev_handle, iface); } @@ -425,6 +443,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, setInterfaceAltSetting) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_set_interface_alt_setting(dev_handle, iface, setting); } @@ -439,6 +458,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, clearHalt) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_clear_halt(dev_handle, endpoint); } @@ -453,6 +473,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, resetDevice) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_reset_device(dev_handle); } @@ -467,6 +488,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, kernelDriverActive) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_kernel_driver_active(dev_handle, iface); } @@ -481,6 +503,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, detachKernelDriver) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_detach_kernel_driver(dev_handle, iface); } @@ -495,6 +518,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, attachKernelDriver) NOT_NULL(env, handle, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + return libusb_attach_kernel_driver(dev_handle, iface); } @@ -554,6 +578,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceDescriptor) NOT_NULL(env, descriptor, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + struct libusb_device_descriptor *data = malloc(sizeof(struct libusb_device_descriptor)); int result = libusb_get_device_descriptor(dev, data); @@ -573,6 +598,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeDeviceDescriptor) struct libusb_device_descriptor *data = unwrapDeviceDescriptor(env, descriptor); if (!data) return; + free(data); resetDeviceDescriptor(env, descriptor); } @@ -589,6 +615,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) NOT_NULL(env, string, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + // Maximum size of a descriptor is 256 bytes, -2 for length/type = 254, /2 because of Unicode = 127 characters // and then +1 for the terminating NUL byte for C strings (the descriptor itself doesn't necessarily have one!). unsigned char buffer[127 + 1]; @@ -617,6 +644,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getActiveConfigDescriptor) NOT_NULL(env, descriptor, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + struct libusb_config_descriptor *config; int result = libusb_get_active_config_descriptor(dev, &config); if (!result) setConfigDescriptor(env, config, descriptor); @@ -635,6 +663,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) NOT_NULL(env, descriptor, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + struct libusb_config_descriptor *config; int result = libusb_get_config_descriptor(dev, index, &config); if (!result) setConfigDescriptor(env, config, descriptor); @@ -653,6 +682,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptorByValue) NOT_NULL(env, descriptor, return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; + struct libusb_config_descriptor *config; int result = libusb_get_config_descriptor_by_value( dev, index, &config); @@ -672,6 +702,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeConfigDescriptor) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, descriptor); if (!config) return; + libusb_free_config_descriptor(config); resetConfigDescriptor(env, descriptor); } @@ -690,6 +721,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDescriptor) DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_get_descriptor(dev_handle, type, index, ptr, size); } @@ -708,6 +740,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptor) DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_get_string_descriptor(dev_handle, index, langId, ptr, size); } @@ -726,6 +759,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + jlong size = (*env)->GetDirectBufferCapacity(env, data); return libusb_control_transfer(dev_handle, bmRequestType, bRequest, wValue, wIndex, ptr, size, timeout); @@ -746,6 +780,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + int sent; jlong size = (*env)->GetDirectBufferCapacity(env, data); int result = libusb_bulk_transfer(dev_handle, endpoint, ptr, size, &sent, @@ -775,6 +810,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) DIRECT_BUFFER(env, data, ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; + int sent; jlong size = (*env)->GetDirectBufferCapacity(env, data); int result = libusb_interrupt_transfer(dev_handle, endpoint, ptr, size, @@ -799,6 +835,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, tryLockEvents) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + return libusb_try_lock_events(ctx); } @@ -812,6 +849,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, lockEvents) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_lock_events(ctx); } @@ -825,6 +863,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unlockEvents) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_unlock_events(ctx); } @@ -838,6 +877,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, eventHandlingOk) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + return libusb_event_handling_ok(ctx); } @@ -851,6 +891,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, eventHandlerActive) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + return libusb_event_handler_active(ctx); } @@ -864,6 +905,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, lockEventWaiters) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_lock_event_waiters(ctx); } @@ -877,6 +919,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unlockEventWaiters) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_unlock_event_waiters(ctx); } @@ -890,6 +933,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, waitForEvent) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; @@ -931,6 +975,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeout) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; @@ -947,6 +992,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEvents) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + return libusb_handle_events(ctx); } @@ -980,6 +1026,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsLocked) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; @@ -996,6 +1043,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, pollfdsHandleTimeouts) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + return libusb_pollfds_handle_timeouts(ctx); } @@ -1007,8 +1055,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getNextTimeout) JNIEnv *env, jclass class, jobject context, jobject timeout ) { + NOT_NULL(env, timeout, return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; + struct timeval tv; int result = libusb_get_next_timeout(ctx, &tv); if (result == 1) @@ -1064,6 +1114,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + (*env)->GetJavaVM(env, &jvm); libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, NULL); @@ -1079,6 +1130,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unsetPollfdNotifiers) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; + libusb_set_pollfd_notifiers(ctx, NULL, NULL, NULL); } @@ -1101,8 +1153,10 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeTransfer) JNIEnv *env, jclass class, jobject transfer ) { + NOT_NULL(env, transfer, return); struct libusb_transfer *handle = unwrapTransfer(env, transfer); if (!handle) return; + libusb_free_transfer(handle); resetTransfer(env, transfer); } diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 77058af..2f5acea 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -32,9 +32,9 @@ #define WRAP_POINTER(ENV, PTR, CLASS_NAME, FIELD) \ if (!PTR) return NULL; \ jclass cls = (*ENV)->FindClass(ENV, PACKAGE_DIR"/"CLASS_NAME); \ - if (cls == NULL) return NULL; \ + if (!cls) return NULL; \ jmethodID constructor = (*ENV)->GetMethodID(ENV, cls, "", "()V"); \ - if (constructor == NULL) return NULL; \ + if (!constructor) return NULL; \ jobject object = (*ENV)->NewObject(ENV, cls, constructor); \ jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ (*ENV)->SetLongField(ENV, object, field, (jptr) PTR); \ From 66017bfa88c715ff8a91645ab7fee2c5cb6f5354 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 11:20:58 +0200 Subject: [PATCH 22/82] Add new NOT_SET macro to call after NOT_NULL for functions that call set*() functions. Right now for example, getting a new config descriptor re-using an old ConfigDescriptor object just overwrites the old pointer, without freeing it or telling the user, resulting in a memory leak. This way, the user gets notified when he's re-using an object that he hasn't cleaned up yet, and he can react and call the appropriate free/cleanup function. --- src/main/c/src/LibUsb.c | 8 ++++++++ src/main/c/src/usb4java.h | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 857eea2..8fa0a2f 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -50,6 +50,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) } else { + NOT_SET(env, context, "contextPointer", return 0); + libusb_context *ctx; int result = libusb_init(&ctx); if (!result) setContext(env, ctx, context); @@ -103,6 +105,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceList) ) { NOT_NULL(env, deviceList, return 0); + NOT_SET(env, deviceList, "deviceListPointer", return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; @@ -307,6 +310,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, open) { NOT_NULL(env, device, return 0); NOT_NULL(env, handle, return 0); + NOT_SET(env, handle, "deviceHandlePointer", return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; @@ -576,6 +580,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceDescriptor) { NOT_NULL(env, device, return 0); NOT_NULL(env, descriptor, return 0); + NOT_SET(env, descriptor, "deviceDescriptorPointer", return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; @@ -642,6 +647,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getActiveConfigDescriptor) { NOT_NULL(env, device, return 0); NOT_NULL(env, descriptor, return 0); + NOT_SET(env, descriptor, "configDescriptorPointer", return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; @@ -661,6 +667,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) { NOT_NULL(env, device, return 0); NOT_NULL(env, descriptor, return 0); + NOT_SET(env, descriptor, "configDescriptorPointer", return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; @@ -680,6 +687,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptorByValue) { NOT_NULL(env, device, return 0); NOT_NULL(env, descriptor, return 0); + NOT_SET(env, descriptor, "configDescriptorPointer", return 0); libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 2f5acea..7cb8079 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -64,6 +64,16 @@ ACTION; \ } +#define NOT_SET(ENV, VAR, FIELD, ACTION) \ + jclass cls = (*ENV)->GetObjectClass(ENV, VAR); \ + jfieldID field = (*ENV)->GetFieldID(ENV, cls, FIELD, "J"); \ + jptr ptr = (jptr) (*ENV)->GetLongField(ENV, VAR, field); \ + if (ptr) \ + { \ + illegalState(ENV, FIELD" is already initialized"); \ + ACTION; \ + } + #define THREAD_BEGIN(ENV) \ JNIEnv *ENV; \ jint getEnvResult = (*jvm)->GetEnv(jvm, (void **) &ENV, JNI_VERSION_1_4); \ From 8c140fd20112386add1730a129b90f6efa0f74ec Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 11:52:07 +0200 Subject: [PATCH 23/82] Fix spacing. --- src/main/c/src/LibUsb.c | 2 +- src/main/c/src/usb4java.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 8fa0a2f..10dc432 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -50,7 +50,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) } else { - NOT_SET(env, context, "contextPointer", return 0); + NOT_SET(env, context, "contextPointer", return 0); libusb_context *ctx; int result = libusb_init(&ctx); diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 7cb8079..f12b93c 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -72,7 +72,7 @@ { \ illegalState(ENV, FIELD" is already initialized"); \ ACTION; \ - } + } #define THREAD_BEGIN(ENV) \ JNIEnv *ENV; \ From 817175b6862a3bd58547b94beed3ba7d77ba3083 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 18:09:13 +0200 Subject: [PATCH 24/82] Only get JVM if not set already (it doesn't change). --- src/main/c/src/LibUsb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 10dc432..23b4c9a 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -23,7 +23,7 @@ #include "ConfigDescriptor.h" #include "Transfer.h" -static JavaVM *jvm; +static JavaVM *jvm = NULL; /** * Version getVersion() @@ -1123,7 +1123,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; - (*env)->GetJavaVM(env, &jvm); + if (!jvm) (*env)->GetJavaVM(env, &jvm); libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, NULL); } From 41c92e07c646f161abb33fd816fbb8ee9e9c7708 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 18:24:07 +0200 Subject: [PATCH 25/82] Add support for direct allocTransfer(), without isoPackets argument. Start working on callback support. --- src/main/c/src/DeviceList.c | 2 +- src/main/c/src/Transfer.c | 8 +++++ .../java/de/ailis/usb4java/libusb/LibUsb.java | 18 +++++++++- .../de/ailis/usb4java/libusb/Transfer.java | 36 +++++++++++++++++++ .../usb4java/libusb/TransferCallback.java | 5 +++ 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/ailis/usb4java/libusb/TransferCallback.java diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index 835abe1..4b7fd39 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -24,8 +24,8 @@ void resetDeviceList(JNIEnv* env, jobject obj) { RESET_POINTER(env, obj, "deviceListPointer"); - // Reset size to zero too. // We already have the class from the previous call. + // Reset size field to zero too. field = (*env)->GetFieldID(env, cls, "size", "I"); (*env)->SetIntField(env, obj, field, 0); } diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 0eed63a..4d0ff60 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -19,6 +19,13 @@ struct libusb_transfer* unwrapTransfer(JNIEnv *env, jobject obj) void resetTransfer(JNIEnv* env, jobject obj) { RESET_POINTER(env, obj, "transferPointer"); + + // We already have the class from the previous call. + // Reset callback and callbackUserData fields to NULL too. + field = (*env)->GetFieldID(env, cls, "callback", "L"PACKAGE_DIR"/TransferCallback;"); + (*env)->SetObjectField(env, obj, field, NULL); + field = (*env)->GetFieldID(env, cls, "callbackUserData", "Ljava/lang/Object;"); + (*env)->SetObjectField(env, obj, field, NULL); } /** @@ -150,6 +157,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setLength) JNIEnv *env, jobject this, jint length ) { + // TODO: check length against the buffer! unwrapTransfer(env, this)->length = length; } diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 7119439..cbed3c4 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -388,7 +388,10 @@ public final class LibUsb /** * Automatically free transfer buffer during {@link #freeTransfer(Transfer)} - * TODO Not sure how to do this memory management between Java and C. + * + * Please note that this conflicts with Java memory management and is thus + * implemented purely in Java using the callback of the Transfer class. + * As such this flag is not passed on to the libusb library via JNI. */ public static final int TRANSFER_FREE_BUFFER = 2; @@ -1851,6 +1854,19 @@ public final class LibUsb */ static native void unsetPollfdNotifiers(final Context context); + /** + * Allocate a libusbx transfer without support for isochronous transfers. + * + * The returned transfer is pre-initialized for you. When the new transfer + * is no longer needed, it should be freed with + * {@link #freeTransfer(Transfer)}. + * + * @return A newly allocated transfer, or NULL on error + */ + public static Transfer allocTransfer() { + return allocTransfer(0); + } + /** * Allocate a libusbx transfer with a specified number of isochronous packet * descriptors. diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 190235f..090e12f 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -26,6 +26,9 @@ public final class Transfer { /** The native pointer to the transfer structure. */ private long transferPointer; + + private TransferCallback callback; + private Object callbackUserData; /** * Constructs a new transfer structure. @@ -158,6 +161,39 @@ public final class Transfer * @return The actual length of the transferred data. */ public native int getActualLength(); + + public TransferCallback getCallback() { + return callback; + } + + public void setCallback(final TransferCallback cb) { + callback = cb; + + // Call native method to enable callback and set Transfer correctly. + if (cb == null) { + unsetCallbackNative(); + } + else { + setCallbackNative(this); + } + } + + native void setCallbackNative(final Transfer transfer); + native void unsetCallbackNative(); + + void transferCallback(final Transfer transfer) { + if (callback != null) { + callback.processTransfer(transfer); + } + } + + public Object getUserData() { + return callbackUserData; + } + + public void setUserData(final Object userData) { + callbackUserData = userData; + } /** * Returns the data buffer. diff --git a/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java b/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java new file mode 100644 index 0000000..945b845 --- /dev/null +++ b/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java @@ -0,0 +1,5 @@ +package de.ailis.usb4java.libusb; + +public interface TransferCallback { + void processTransfer(Transfer transfer); +} From 61756ed40526f97d3878f504d468cbd6ecacee32 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 18:45:53 +0200 Subject: [PATCH 26/82] Add basic callback support, still work in progress. --- src/main/c/src/Transfer.c | 42 +++++++++++++++++++ .../de/ailis/usb4java/libusb/Transfer.java | 8 ++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 4d0ff60..f8e56f6 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -6,6 +6,8 @@ #include "Transfer.h" #include "DeviceHandle.h" +static JavaVM *jvm = NULL; + jobject wrapTransfer(JNIEnv* env, struct libusb_transfer* transfer) { WRAP_POINTER(env, transfer, "Transfer", "transferPointer"); @@ -204,3 +206,43 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) { return unwrapTransfer(env, this)->num_iso_packets; } + +static void transferCallback(struct libusb_transfer *transfer) { + THREAD_BEGIN(env) + + // Call back into Java. + + // Cleanup Java Transfer object too, if requested. + if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) { + resetTransfer(env, transfer->user_data); + } + + THREAD_END +} + +/** + * void setCallbackNative() + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setCallbackNative) +( + JNIEnv *env, jobject this +) +{ + unwrapTransfer(env, this)->callback = &transferCallback; + unwrapTransfer(env, this)->user_data = this; + + if (!jvm) (*env)->GetJavaVM(env, &jvm); +} + +/** + * void unsetCallbackNative() + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, unsetCallbackNative) +( + JNIEnv *env, jobject this +) +{ + unwrapTransfer(env, this)->callback = NULL; + unwrapTransfer(env, this)->user_data = NULL; +} + diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 090e12f..6a30ef1 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -174,16 +174,16 @@ public final class Transfer unsetCallbackNative(); } else { - setCallbackNative(this); + setCallbackNative(); } } - native void setCallbackNative(final Transfer transfer); + native void setCallbackNative(); native void unsetCallbackNative(); - void transferCallback(final Transfer transfer) { + void transferCallback() { if (callback != null) { - callback.processTransfer(transfer); + callback.processTransfer(this); } } From 00670bb48d352ccb423134f053d9d1d1ea4cdd2f Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 7 Jun 2013 23:11:09 +0200 Subject: [PATCH 27/82] Implement Transfer callback fully. Transfer cleanup via FREE_TRANSFER also fully guaranteed. --- src/main/c/src/Transfer.c | 44 ++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index f8e56f6..9492d85 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -208,16 +208,25 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) } static void transferCallback(struct libusb_transfer *transfer) { - THREAD_BEGIN(env) + THREAD_BEGIN(env) - // Call back into Java. + // The saved reference to the Java Transfer object. + jobject jTransfer = transfer->user_data; - // Cleanup Java Transfer object too, if requested. - if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) { - resetTransfer(env, transfer->user_data); - } + // Call back into Java. + jclass cls = (*env)->GetObjectClass(env, jTransfer); + jmethodID method = (*env)->GetMethodID(env, cls, "transferCallback", "()V"); + (*env)->CallVoidMethod(env, jTransfer, method); - THREAD_END + // Cleanup Java Transfer object too, if requested. + if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) + { + resetTransfer(env, jTransfer); + } + + (*env)->DeleteGlobalRef(env, jTransfer); + + THREAD_END } /** @@ -228,10 +237,19 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setCallbackNative) JNIEnv *env, jobject this ) { + // First ensure the JVM is properly registered. + if (!jvm) + (*env)->GetJavaVM(env, &jvm); + + // Then, set the callback to the appropriate C function and abuse the user_data field + // to keep a reference to the Java Transfer object we'll call back to later. unwrapTransfer(env, this)->callback = &transferCallback; unwrapTransfer(env, this)->user_data = this; - if (!jvm) (*env)->GetJavaVM(env, &jvm); + // To ensure the Java Transfer object's reference will still be valid after waiting on + // completion (for example it might get GC'd because no references in Java are held to + // it anymore, while the C part is still working fine), we have to make it a global ref. + (*env)->NewGlobalRef(env, this); } /** @@ -242,7 +260,13 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, unsetCallbackNative) JNIEnv *env, jobject this ) { - unwrapTransfer(env, this)->callback = NULL; - unwrapTransfer(env, this)->user_data = NULL; + // If the callback was already set, unset it, and remember to delete the global reference again! + if (unwrapTransfer(env, this)->callback) + { + (*env)->DeleteGlobalRef(env, unwrapTransfer(env, this)->user_data); + + unwrapTransfer(env, this)->callback = NULL; + unwrapTransfer(env, this)->user_data = NULL; + } } From 1efc33b0f246d72ad3ccad115f6752a6723d2ba2 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sat, 8 Jun 2013 00:20:12 +0200 Subject: [PATCH 28/82] Add resetDevice() to also reset the Java Device object after unref, as it really shouldn't be used anymore since you don't know if the refcount reached zero and it was deallocated. Every new reference means the refcount gets increased AND a new reference indeed exits, so this always works, unless you let references go out of scope or overwrite them, which is clearly incorrect in any case. Also add missing checks for setDeviceHandle() in Transfer. --- src/main/c/src/Device.c | 5 +++++ src/main/c/src/Device.h | 1 + src/main/c/src/LibUsb.c | 1 + src/main/c/src/Transfer.c | 6 +++++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/c/src/Device.c b/src/main/c/src/Device.c index ad05f85..96e8480 100644 --- a/src/main/c/src/Device.c +++ b/src/main/c/src/Device.c @@ -14,3 +14,8 @@ libusb_device* unwrapDevice(JNIEnv* env, jobject device) { UNWRAP_POINTER(env, device, libusb_device*, "devicePointer"); } + +void resetDevice(JNIEnv* env, jobject object) +{ + RESET_POINTER(env, object, "devicePointer"); +} diff --git a/src/main/c/src/Device.h b/src/main/c/src/Device.h index 9eea1a3..6bc41ec 100644 --- a/src/main/c/src/Device.h +++ b/src/main/c/src/Device.h @@ -10,5 +10,6 @@ jobject wrapDevice(JNIEnv*, libusb_device*); libusb_device* unwrapDevice(JNIEnv*, jobject); +void resetDevice(JNIEnv*, jobject); #endif diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 23b4c9a..b0a0993 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -298,6 +298,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, unrefDevice) if (!dev) return; libusb_unref_device(dev); + resetDevice(env, device); } /** diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 9492d85..a45a5fc 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -38,7 +38,11 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setDevHandle) JNIEnv *env, jobject this, jobject handle ) { - unwrapTransfer(env, this)->dev_handle = unwrapDeviceHandle(env, handle); + NOT_NULL(env, handle, return); + libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); + if (!dev_handle) return; + + unwrapTransfer(env, this)->dev_handle = dev_handle; } /** From bda2fdab5403fdd175cdf0f6b50478fd2e9d36e8 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 9 Jun 2013 15:16:04 +0200 Subject: [PATCH 29/82] Use correct call methods, if it returns void: callVoid, else if it returns object: callObject. Also move JVM reference to be available to all C files (needed for Transfer callback later) and initialize it once at startup. --- src/main/c/src/LibUsb.c | 11 ++++------- src/main/c/src/usb4java.c | 6 ++++++ src/main/c/src/usb4java.h | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index b0a0993..d3c2199 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -23,8 +23,6 @@ #include "ConfigDescriptor.h" #include "Transfer.h" -static JavaVM *jvm = NULL; - /** * Version getVersion() */ @@ -387,7 +385,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfiguration) { jclass cls = (*env)->GetObjectClass(env, buffer); jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); - (*env)->CallVoidMethod(env, buffer, method, 0, config); + (*env)->CallObjectMethod(env, buffer, method, 0, config); } return result; } @@ -799,7 +797,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) jclass cls = (*env)->GetObjectClass(env, transferred); jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); - (*env)->CallVoidMethod(env, transferred, method, 0, sent); + (*env)->CallObjectMethod(env, transferred, method, 0, sent); } return result; } @@ -829,7 +827,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) jclass cls = (*env)->GetObjectClass(env, transferred); jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); - (*env)->CallVoidMethod(env, transferred, method, 0, sent); + (*env)->CallObjectMethod(env, transferred, method, 0, sent); } return result; } @@ -1075,7 +1073,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getNextTimeout) jclass cls = (*env)->GetObjectClass(env, timeout); jmethodID method = (*env)->GetMethodID(env, cls, "put", "(IJ)Ljava/nio/LongBuffer;"); - (*env)->CallVoidMethod(env, timeout, method, 0, + (*env)->CallObjectMethod(env, timeout, method, 0, tv.tv_sec * 1000000 + tv.tv_usec); } return result; @@ -1124,7 +1122,6 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; - if (!jvm) (*env)->GetJavaVM(env, &jvm); libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, NULL); } diff --git a/src/main/c/src/usb4java.c b/src/main/c/src/usb4java.c index c148ca7..9fc6b10 100644 --- a/src/main/c/src/usb4java.c +++ b/src/main/c/src/usb4java.c @@ -5,6 +5,8 @@ #include "usb4java.h" +JavaVM *jvm = NULL; + jint illegalArgument(JNIEnv *env, char *message) { jclass cls = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); @@ -17,3 +19,7 @@ jint illegalState(JNIEnv *env, char *message) return (*env)->ThrowNew(env, cls, message); } +jint JNI_OnLoad(JavaVM *vm, void *reserved) { + jvm = vm; + return JNI_VERSION_1_4; +} diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index f12b93c..24fcf91 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -84,6 +84,8 @@ if (getEnvResult == JNI_EDETACHED) \ (*jvm)->DetachCurrentThread(jvm); +extern JavaVM *jvm; + jint illegalArgument(JNIEnv *env, char *message); jint illegalState(JNIEnv *env, char *message); From 68125967a4f4b21ff52f09d68ba849f2567262a2 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 9 Jun 2013 16:36:31 +0200 Subject: [PATCH 30/82] LibUsb.java: add missing MASKs, precise TRANSFER_FREE_BUFFER comment, only update references after native calls return without throwing exceptions. DescriptorUtils.java: update to use the correct masks and variables, always return "Unknown" on a not-handled value. *Descriptor.java: update equals/hashcode to use all fields in the same order as they are defined (makes checking this much easier in the future!). For example bRefresh was missing or some extra/extraLength checks. InterfaceDescriptor: there is no need for a dump(DeviceHandle) here, so removed it and updated the call in Interface.java. --- .../usb4java/libusb/ConfigDescriptor.java | 11 +++-- .../usb4java/libusb/DeviceDescriptor.java | 20 ++++---- .../usb4java/libusb/EndpointDescriptor.java | 9 ++-- .../de/ailis/usb4java/libusb/Interface.java | 2 +- .../usb4java/libusb/InterfaceDescriptor.java | 28 +++-------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 22 ++++++--- .../ailis/usb4java/utils/DescriptorUtils.java | 48 ++++++++++--------- 7 files changed, 70 insertions(+), 70 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java index 3fb452a..63852c9 100644 --- a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java @@ -145,14 +145,17 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor if (obj.getClass() != getClass()) return false; final ConfigDescriptor other = (ConfigDescriptor) obj; return new EqualsBuilder() - .append(bDescriptorType(), other.bDescriptorType()) .append(bLength(), other.bLength()) - .append(bConfigurationValue(), other.bConfigurationValue()) - .append(bmAttributes(), other.bmAttributes()) + .append(bDescriptorType(), other.bDescriptorType()) + .append(wTotalLength(), other.wTotalLength()) .append(bNumInterfaces(), other.bNumInterfaces()) + .append(bConfigurationValue(), other.bConfigurationValue()) .append(iConfiguration(), other.iConfiguration()) + .append(bmAttributes(), other.bmAttributes()) .append(bMaxPower(), other.bMaxPower()) - .append(wTotalLength(), other.wTotalLength()).isEquals(); + .append(extra(), other.extra()) + .append(extraLength(), other.extraLength()) + .isEquals(); } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java index fe0513a..cc19f23 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java @@ -129,22 +129,21 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor if (obj.getClass() != getClass()) return false; final DeviceDescriptor other = (DeviceDescriptor) obj; return new EqualsBuilder() - .append(bDescriptorType(), other.bDescriptorType()) .append(bLength(), other.bLength()) - .append(idProduct(), other.idProduct()) - .append(idVendor(), other.idVendor()) - .append(bcdDevice(), other.bcdDevice()) + .append(bDescriptorType(), other.bDescriptorType()) .append(bcdUSB(), other.bcdUSB()) - .append(bDescriptorType(), other.bDescriptorType()) .append(bDeviceClass(), other.bDeviceClass()) - .append(bDeviceProtocol(), other.bDeviceProtocol()) .append(bDeviceSubClass(), other.bDeviceSubClass()) - .append(bLength(), other.bLength()) + .append(bDeviceProtocol(), other.bDeviceProtocol()) .append(bMaxPacketSize0(), other.bMaxPacketSize0()) - .append(bNumConfigurations(), other.bNumConfigurations()) + .append(idVendor(), other.idVendor()) + .append(idProduct(), other.idProduct()) + .append(bcdDevice(), other.bcdDevice()) .append(iManufacturer(), other.iManufacturer()) .append(iProduct(), other.iProduct()) - .append(iSerialNumber(), other.iSerialNumber()).isEquals(); + .append(iSerialNumber(), other.iSerialNumber()) + .append(bNumConfigurations(), other.bNumConfigurations()) + .isEquals(); } @Override @@ -164,7 +163,8 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor .append(iManufacturer()) .append(iProduct()) .append(iSerialNumber()) - .append(bNumConfigurations()).toHashCode(); + .append(bNumConfigurations()) + .toHashCode(); } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java index a298679..dc81959 100644 --- a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java @@ -126,15 +126,16 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor if (obj.getClass() != getClass()) return false; final EndpointDescriptor other = (EndpointDescriptor) obj; return new EqualsBuilder() - .append(bDescriptorType(), other.bDescriptorType()) .append(bLength(), other.bLength()) + .append(bDescriptorType(), other.bDescriptorType()) .append(bEndpointAddress(), other.bEndpointAddress()) .append(bmAttributes(), other.bmAttributes()) - .append(bInterval(), other.bInterval()) - .append(bSynchAddress(), other.bSynchAddress()) .append(wMaxPacketSize(), other.wMaxPacketSize()) - .append(extraLength(), other.extraLength()) + .append(bInterval(), other.bInterval()) + .append(bRefresh(), other.bRefresh()) + .append(bSynchAddress(), other.bSynchAddress()) .append(extra(), other.extra()) + .append(extraLength(), other.extraLength()) .isEquals(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/Interface.java b/src/main/java/de/ailis/usb4java/libusb/Interface.java index 71753a7..e706f18 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Interface.java +++ b/src/main/java/de/ailis/usb4java/libusb/Interface.java @@ -80,7 +80,7 @@ public final class Interface final StringBuilder builder = new StringBuilder(); for (final InterfaceDescriptor descriptor : altsetting()) { - builder.append(descriptor.dump(handle)); + builder.append(descriptor.dump()); } return builder.toString(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java index 5bd8750..fdce545 100644 --- a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java @@ -109,24 +109,8 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor * @return The descriptor dump. */ public String dump() - { - return dump(null); - } - - /** - * Returns a dump of this descriptor. - * - * @param handle - * The USB device handle for resolving string descriptors. If - * null then no strings are resolved. - * @return The descriptor dump. - */ - public String dump(final DeviceHandle handle) { final StringBuilder builder = new StringBuilder(); - final int iInterface = iInterface(); - String sInterface = LibUsb.getStringDescriptor(handle, iInterface); - if (sInterface == null) sInterface = ""; builder.append(String.format("%s%n" + " extralen %17d%n" + " extra:%n" @@ -150,17 +134,17 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor if (obj.getClass() != getClass()) return false; final InterfaceDescriptor other = (InterfaceDescriptor) obj; return new EqualsBuilder() - .append(bDescriptorType(), other.bDescriptorType()) .append(bLength(), other.bLength()) - .append(bAlternateSetting(), other.bAlternateSetting()) - .append(bInterfaceClass(), other.bInterfaceClass()) + .append(bDescriptorType(), other.bDescriptorType()) .append(bInterfaceNumber(), other.bInterfaceNumber()) - .append(bInterfaceProtocol(), other.bInterfaceProtocol()) - .append(bInterfaceSubClass(), other.bInterfaceSubClass()) + .append(bAlternateSetting(), other.bAlternateSetting()) .append(bNumEndpoints(), other.bNumEndpoints()) + .append(bInterfaceClass(), other.bInterfaceClass()) + .append(bInterfaceSubClass(), other.bInterfaceSubClass()) + .append(bInterfaceProtocol(), other.bInterfaceProtocol()) .append(iInterface(), other.iInterface()) - .append(extraLength(), other.extraLength()) .append(extra(), other.extra()) + .append(extraLength(), other.extraLength()) .isEquals(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index cbed3c4..0bad32d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -356,6 +356,8 @@ public final class LibUsb // Synchronization type for isochronous endpoints. // Values for bits 2:3 of the bmAttributes field in // EndpointDescriptor. + + public static final int ISO_SYNC_TYPE_MASK = 0x0C; /** No synchronization. */ public static final int ISO_SYNC_TYPE_NONE = 0; @@ -371,6 +373,8 @@ public final class LibUsb // Usage type for isochronous endpoints. Values for bits 4:5 of the // bmAttributes field in EndpointDescriptor. + + public static final int ISO_USAGE_TYPE_MASK = 0x30; /** Data endpoint. */ public static final int ISO_USAGE_TYPE_DATA = 0; @@ -389,11 +393,13 @@ public final class LibUsb /** * Automatically free transfer buffer during {@link #freeTransfer(Transfer)} * - * Please note that this conflicts with Java memory management and is thus - * implemented purely in Java using the callback of the Transfer class. - * As such this flag is not passed on to the libusb library via JNI. + * Please note that this flag is effectively a no-op (set to zero) here in + * the Java wrapper, since the ByteBuffer that acts as a buffer for transfers + * is allocated by the JVM and is subject to garbage collection like any other + * object at some point. Nulling the reference is the only needed action to + * take, and it is already done by the TRANSFER_FREE_TRANSFER flag. */ - public static final int TRANSFER_FREE_BUFFER = 2; + public static final int TRANSFER_FREE_BUFFER = 0; // Originally 2 /** * Automatically call {@link #freeTransfer(Transfer)} after callback @@ -1800,13 +1806,15 @@ public final class LibUsb */ public static void setPollfdNotifiers(final Context context, final PollfdListener listener, final Object userData) - { - pollfdListener = listener; - pollfdListenerUserData = userData; + { if (listener == null) unsetPollfdNotifiers(context); else setPollfdNotifiers(context); + + // Once we know the native calls have gone through, update the references. + pollfdListener = listener; + pollfdListenerUserData = userData; } /** diff --git a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java index b1d19ca..3434b92 100644 --- a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java @@ -29,10 +29,11 @@ public final class DescriptorUtils static { - CLASS_NAMES.put(LibUsb.CLASS_PER_INTERFACE, "Per interface"); + CLASS_NAMES.put(LibUsb.CLASS_PER_INTERFACE, "Per Interface"); CLASS_NAMES.put(LibUsb.CLASS_AUDIO, "Audio"); CLASS_NAMES.put(LibUsb.CLASS_COMM, "Communications"); CLASS_NAMES.put(LibUsb.CLASS_HID, "HID"); + CLASS_NAMES.put(LibUsb.CLASS_PHYSICAL, "Physical"); CLASS_NAMES.put(LibUsb.CLASS_IMAGE, "Imaging"); CLASS_NAMES.put(LibUsb.CLASS_PRINTER, "Printer"); CLASS_NAMES.put(LibUsb.CLASS_MASS_STORAGE, "Mass Storage"); @@ -41,13 +42,12 @@ public final class DescriptorUtils CLASS_NAMES.put(LibUsb.CLASS_SMART_CARD, "Smart Card"); CLASS_NAMES.put(LibUsb.CLASS_CONTENT_SECURITY, "Content Security"); CLASS_NAMES.put(LibUsb.CLASS_VIDEO, "Video"); - CLASS_NAMES.put(LibUsb.CLASS_VENDOR_SPEC, "Vendor-specific"); - CLASS_NAMES.put(LibUsb.CLASS_APPLICATION, "Application"); CLASS_NAMES.put(LibUsb.CLASS_PERSONAL_HEALTHCARE, "Personal Healthcare"); CLASS_NAMES.put(LibUsb.CLASS_DIAGNOSTIC_DEVICE, "Diagnostic Device"); CLASS_NAMES.put(LibUsb.CLASS_WIRELESS, "Wireless"); - + CLASS_NAMES.put(LibUsb.CLASS_APPLICATION, "Application"); + CLASS_NAMES.put(LibUsb.CLASS_VENDOR_SPEC, "Vendor-specific"); } /** @@ -285,16 +285,18 @@ public final class DescriptorUtils */ public static String getTransferTypeName(final int bmAttributes) { - switch (bmAttributes & 3) + switch (bmAttributes & LibUsb.TRANSFER_TYPE_MASK) { - case 1: + case LibUsb.TRANSFER_TYPE_CONTROL: + return "Control"; + case LibUsb.TRANSFER_TYPE_ISOCHRONOUS: return "Isochronous"; - case 2: + case LibUsb.TRANSFER_TYPE_BULK: return "Bulk"; - case 3: + case LibUsb.TRANSFER_TYPE_INTERRUPT: return "Interrupt"; default: - return "Control"; + return "Unknown"; } } @@ -308,16 +310,18 @@ public final class DescriptorUtils */ public static String getSynchTypeName(final int bmAttributes) { - switch ((bmAttributes >> 2) & 3) + switch (bmAttributes & LibUsb.ISO_SYNC_TYPE_ASYNC) { - case 1: + case LibUsb.ISO_SYNC_TYPE_NONE: + return "None"; + case LibUsb.ISO_SYNC_TYPE_ASYNC: return "Asynchronous"; - case 2: + case LibUsb.ISO_SYNC_TYPE_ADAPTIVE: return "Adaptive"; - case 3: + case LibUsb.ISO_SYNC_TYPE_SYNC: return "Synchronous"; default: - return "None"; + return "Unknown"; } } @@ -330,16 +334,16 @@ public final class DescriptorUtils */ public static String getUsageTypeName(final int bmAttributes) { - switch ((bmAttributes >> 4) & 3) + switch (bmAttributes & LibUsb.ISO_USAGE_TYPE_MASK) { - case 1: - return "Feedback"; - case 2: - return "Explicit Feedback Data"; - case 3: - return "Reserved"; - default: + case LibUsb.ISO_USAGE_TYPE_DATA: return "Data"; + case LibUsb.ISO_USAGE_TYPE_FEEDBACK: + return "Feedback"; + case LibUsb.ISO_USAGE_TYPE_IMPLICIT: + return "Implicit Feedback Data"; + default: + return "Unknown"; } } From dbd2a4cf55c4284fcf665ff3f729eefd872ea23a Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 9 Jun 2013 23:03:01 +0200 Subject: [PATCH 31/82] Version.java: add nano(). *.java: Fix code and comment formatting to be equal everywhere and conform to what I could see as being the expected usb4java standard. *.java: Remove Apache-Commons dependency for extremely simple HashCode/Equals involving only the pointer variable, instead use the Eclipse-generated methods. --- src/main/c/src/Version.c | 13 ++- .../usb4java/libusb/ConfigDescriptor.java | 93 +++++++++---------- .../de/ailis/usb4java/libusb/Context.java | 48 +++++++--- .../java/de/ailis/usb4java/libusb/Device.java | 38 +++++--- .../usb4java/libusb/DeviceDescriptor.java | 74 ++++++++------- .../ailis/usb4java/libusb/DeviceHandle.java | 39 +++++--- .../de/ailis/usb4java/libusb/DeviceList.java | 53 ++++++++--- .../usb4java/libusb/DeviceListIterator.java | 4 +- .../usb4java/libusb/EndpointDescriptor.java | 72 +++++++------- .../de/ailis/usb4java/libusb/Interface.java | 64 +++++++------ .../usb4java/libusb/InterfaceDescriptor.java | 84 +++++++++-------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 58 +++++++----- .../usb4java/libusb/LibUsbException.java | 8 +- .../de/ailis/usb4java/libusb/Version.java | 51 ++++++++-- .../ailis/usb4java/utils/DescriptorUtils.java | 57 +++++++----- 15 files changed, 464 insertions(+), 292 deletions(-) diff --git a/src/main/c/src/Version.c b/src/main/c/src/Version.c index 04aa3d4..d6fcfbd 100644 --- a/src/main/c/src/Version.c +++ b/src/main/c/src/Version.c @@ -49,7 +49,18 @@ JNIEXPORT jint JNICALL METHOD_NAME(Version, micro) } /** - * string rc() + * int nano() + */ +JNIEXPORT jint JNICALL METHOD_NAME(Version, nano) +( + JNIEnv *env, jobject this +) +{ + return unwrapVersion(env, this)->nano; +} + +/** + * String rc() */ JNIEXPORT jstring JNICALL METHOD_NAME(Version, rc) ( diff --git a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java index 63852c9..c91a0a6 100644 --- a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -49,7 +49,7 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor */ public long getPointer() { - return this.configDescriptorPointer; + return configDescriptorPointer; } @Override @@ -106,56 +106,19 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor * @return The descriptor dump. */ public String dump() - { - return dump(null); - } - - /** - * Returns a dump of this descriptor. - * - * @param handle - * The USB device handle for resolving string descriptors. If - * null then no strings are resolved. - * @return The descriptor dump. - */ - public String dump(final DeviceHandle handle) { final StringBuilder builder = new StringBuilder(); - builder - .append(String.format("%s%n" - + " extralen %17d%n" - + " extra:%n" - + "%s", - DescriptorUtils.dump(this), - extraLength(), - DescriptorUtils.dump(extra()).replaceAll("(?m)^", " "))); - for (final Interface descriptor: iface()) - { - builder.append(descriptor.dump(handle) - .replaceAll("(?m)^", " ")); - } - return builder.toString(); - } - @Override - public boolean equals(final Object obj) - { - if (obj == null) return false; - if (obj == this) return true; - if (obj.getClass() != getClass()) return false; - final ConfigDescriptor other = (ConfigDescriptor) obj; - return new EqualsBuilder() - .append(bLength(), other.bLength()) - .append(bDescriptorType(), other.bDescriptorType()) - .append(wTotalLength(), other.wTotalLength()) - .append(bNumInterfaces(), other.bNumInterfaces()) - .append(bConfigurationValue(), other.bConfigurationValue()) - .append(iConfiguration(), other.iConfiguration()) - .append(bmAttributes(), other.bmAttributes()) - .append(bMaxPower(), other.bMaxPower()) - .append(extra(), other.extra()) - .append(extraLength(), other.extraLength()) - .isEquals(); + builder.append(String.format("%s%n" + " extralen %17d%n" + + " extra:%n" + "%s", DescriptorUtils.dump(this), extraLength(), + DescriptorUtils.dump(extra()).replaceAll("(?m)^", " "))); + + for (final Interface iface : iface()) + { + builder.append("%n" + iface.dump()); + } + + return builder.toString(); } @Override @@ -170,11 +133,41 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor .append(iConfiguration()) .append(bmAttributes()) .append(bMaxPower()) - .append(extra()) .append(extraLength()) .toHashCode(); } + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + + final ConfigDescriptor other = (ConfigDescriptor) obj; + + return new EqualsBuilder() + .append(bLength(), other.bLength()) + .append(bDescriptorType(), other.bDescriptorType()) + .append(wTotalLength(), other.wTotalLength()) + .append(bNumInterfaces(), other.bNumInterfaces()) + .append(bConfigurationValue(), other.bConfigurationValue()) + .append(iConfiguration(), other.iConfiguration()) + .append(bmAttributes(), other.bmAttributes()) + .append(bMaxPower(), other.bMaxPower()) + .append(extraLength(), other.extraLength()) + .isEquals(); + } + @Override public String toString() { diff --git a/src/main/java/de/ailis/usb4java/libusb/Context.java b/src/main/java/de/ailis/usb4java/libusb/Context.java index bf16a10..9a74bb1 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Context.java +++ b/src/main/java/de/ailis/usb4java/libusb/Context.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -11,8 +11,6 @@ package de.ailis.usb4java.libusb; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * Structure representing a libusbx session. The concept of individual libusbx * sessions allows for your program to use two libraries (or dynamically load @@ -37,14 +35,14 @@ public final class Context { /** The native pointer to the context structure. */ private long contextPointer; - + /** * Constructs a new libusb context. Must be passed to * {@link LibUsb#init(Context)} before passing it to any other method. */ public Context() { - // Empty + // Empty } /** @@ -54,21 +52,45 @@ public final class Context */ public long getPointer() { - return this.contextPointer; + return contextPointer; } - + @Override public int hashCode() { - return new HashCodeBuilder().append(this.contextPointer).toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (contextPointer ^ (contextPointer >>> 32)); + return result; } - + @Override public boolean equals(final Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } final Context other = (Context) obj; - return this.contextPointer == other.contextPointer; - } + if (contextPointer != other.contextPointer) + { + return false; + } + return true; + } + + @Override + public String toString() + { + return String.format("libusb context 0x%x", contextPointer); + } } diff --git a/src/main/java/de/ailis/usb4java/libusb/Device.java b/src/main/java/de/ailis/usb4java/libusb/Device.java index f23182c..a7adb61 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Device.java +++ b/src/main/java/de/ailis/usb4java/libusb/Device.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -11,8 +11,6 @@ package de.ailis.usb4java.libusb; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * Structure representing a USB device detected on the system. * @@ -47,7 +45,7 @@ public final class Device { // Empty } - + /** * Returns the native pointer to the device structure. * @@ -55,27 +53,45 @@ public final class Device */ public long getPointer() { - return this.devicePointer; + return devicePointer; } - + @Override public int hashCode() { - return new HashCodeBuilder().append(this.devicePointer).toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (devicePointer ^ (devicePointer >>> 32)); + return result; } @Override public boolean equals(final Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } final Device other = (Device) obj; - return this.devicePointer == other.devicePointer; + if (devicePointer != other.devicePointer) + { + return false; + } + return true; } @Override public String toString() { - return String.format("libusb device 0x%x", this.devicePointer); + return String.format("libusb device 0x%x", devicePointer); } } diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java index cc19f23..195fa8a 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceDescriptor.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -28,7 +28,7 @@ import de.ailis.usb4java.utils.DescriptorUtils; */ public final class DeviceDescriptor implements UsbDeviceDescriptor { - /** The native pointer to the descriptor structure. */ + /** The native pointer to the descriptor structure. */ private long deviceDescriptorPointer; /** @@ -47,7 +47,7 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor */ public long getPointer() { - return this.deviceDescriptorPointer; + return deviceDescriptorPointer; } @Override @@ -112,38 +112,14 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor */ public String dump(final DeviceHandle handle) { - final String sManufacturer = LibUsb.getStringDescriptor(handle, + final String sManufacturer = LibUsb.getStringDescriptor(handle, iManufacturer()); final String sProduct = LibUsb.getStringDescriptor(handle, iProduct()); - final String sSerialNumber = LibUsb.getStringDescriptor(handle, + final String sSerialNumber = LibUsb.getStringDescriptor(handle, iSerialNumber()); - return DescriptorUtils.dump(this, sManufacturer, sProduct, - sSerialNumber); - } - @Override - public boolean equals(final Object obj) - { - if (obj == null) return false; - if (obj == this) return true; - if (obj.getClass() != getClass()) return false; - final DeviceDescriptor other = (DeviceDescriptor) obj; - return new EqualsBuilder() - .append(bLength(), other.bLength()) - .append(bDescriptorType(), other.bDescriptorType()) - .append(bcdUSB(), other.bcdUSB()) - .append(bDeviceClass(), other.bDeviceClass()) - .append(bDeviceSubClass(), other.bDeviceSubClass()) - .append(bDeviceProtocol(), other.bDeviceProtocol()) - .append(bMaxPacketSize0(), other.bMaxPacketSize0()) - .append(idVendor(), other.idVendor()) - .append(idProduct(), other.idProduct()) - .append(bcdDevice(), other.bcdDevice()) - .append(iManufacturer(), other.iManufacturer()) - .append(iProduct(), other.iProduct()) - .append(iSerialNumber(), other.iSerialNumber()) - .append(bNumConfigurations(), other.bNumConfigurations()) - .isEquals(); + return DescriptorUtils.dump(this, sManufacturer, sProduct, + sSerialNumber); } @Override @@ -167,6 +143,42 @@ public final class DeviceDescriptor implements UsbDeviceDescriptor .toHashCode(); } + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + + final DeviceDescriptor other = (DeviceDescriptor) obj; + + return new EqualsBuilder() + .append(bLength(), other.bLength()) + .append(bDescriptorType(), other.bDescriptorType()) + .append(bcdUSB(), other.bcdUSB()) + .append(bDeviceClass(), other.bDeviceClass()) + .append(bDeviceSubClass(), other.bDeviceSubClass()) + .append(bDeviceProtocol(), other.bDeviceProtocol()) + .append(bMaxPacketSize0(), other.bMaxPacketSize0()) + .append(idVendor(), other.idVendor()) + .append(idProduct(), other.idProduct()) + .append(bcdDevice(), other.bcdDevice()) + .append(iManufacturer(), other.iManufacturer()) + .append(iProduct(), other.iProduct()) + .append(iSerialNumber(), other.iSerialNumber()) + .append(bNumConfigurations(), other.bNumConfigurations()) + .isEquals(); + } + @Override public String toString() { diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceHandle.java b/src/main/java/de/ailis/usb4java/libusb/DeviceHandle.java index 4b326d5..4ef4d13 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceHandle.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceHandle.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -11,8 +11,6 @@ package de.ailis.usb4java.libusb; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * Structure representing a handle on a USB device. * @@ -31,8 +29,8 @@ public final class DeviceHandle /** * Constructs a new device handle. Must be passed to - * {@link LibUsb#open(Device, DeviceHandle)} before passing it to any - * other method. + * {@link LibUsb#open(Device, DeviceHandle)} before passing it to any other + * method. */ public DeviceHandle() { @@ -46,28 +44,45 @@ public final class DeviceHandle */ public long getPointer() { - return this.deviceHandlePointer; + return deviceHandlePointer; } @Override public int hashCode() { - return new HashCodeBuilder().append(this.deviceHandlePointer) - .toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (deviceHandlePointer ^ (deviceHandlePointer >>> 32)); + return result; } @Override public boolean equals(final Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } final DeviceHandle other = (DeviceHandle) obj; - return this.deviceHandlePointer == other.deviceHandlePointer; + if (deviceHandlePointer != other.deviceHandlePointer) + { + return false; + } + return true; } @Override public String toString() { - return String.format("libusb handle 0x%x", this.deviceHandlePointer); + return String.format("libusb device handle 0x%x", deviceHandlePointer); } } diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceList.java b/src/main/java/de/ailis/usb4java/libusb/DeviceList.java index 06af70b..b09dee6 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceList.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceList.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -13,12 +13,10 @@ package de.ailis.usb4java.libusb; import java.util.Iterator; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * List of devices as returned by * {@link LibUsb#getDeviceList(Context, DeviceList)}. - * + * * @author Klaus Reimer (k@ailis.de) */ public final class DeviceList implements Iterable @@ -36,7 +34,7 @@ public final class DeviceList implements Iterable public DeviceList() { // Empty - } + } /** * Returns the native pointer. @@ -45,9 +43,9 @@ public final class DeviceList implements Iterable */ public long getPointer() { - return this.deviceListPointer; + return deviceListPointer; } - + /** * Returns the number of devices in the list. * @@ -55,7 +53,7 @@ public final class DeviceList implements Iterable */ public int getSize() { - return this.size; + return size; } /** @@ -76,16 +74,45 @@ public final class DeviceList implements Iterable @Override public int hashCode() { - return new HashCodeBuilder().append(this.deviceListPointer) - .toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (deviceListPointer ^ (deviceListPointer >>> 32)); + result = (prime * result) + size; + return result; } @Override public boolean equals(final Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } final DeviceList other = (DeviceList) obj; - return this.deviceListPointer == other.deviceListPointer; + if (deviceListPointer != other.deviceListPointer) + { + return false; + } + if (size != other.size) + { + return false; + } + return true; + } + + @Override + public String toString() + { + return String.format("libusb device list 0x%x with size %d", + deviceListPointer, size); } } diff --git a/src/main/java/de/ailis/usb4java/libusb/DeviceListIterator.java b/src/main/java/de/ailis/usb4java/libusb/DeviceListIterator.java index 7deeacf..7e9bd1a 100644 --- a/src/main/java/de/ailis/usb4java/libusb/DeviceListIterator.java +++ b/src/main/java/de/ailis/usb4java/libusb/DeviceListIterator.java @@ -34,13 +34,13 @@ final class DeviceListIterator implements Iterator @Override public boolean hasNext() { - return this.nextIndex < this.devices.getSize(); + return nextIndex < devices.getSize(); } @Override public Device next() { - return this.devices.get(this.nextIndex++); + return devices.get(nextIndex++); } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java index dc81959..ec9daa0 100644 --- a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -25,7 +25,7 @@ import de.ailis.usb4java.utils.DescriptorUtils; * * This descriptor is documented in section 9.6.6 of the USB 3.0 specification. * All multiple-byte fields are represented in host-endian format. - * + * * @author Klaus Reimer (k@ailis.de) */ public final class EndpointDescriptor implements UsbEndpointDescriptor @@ -34,14 +34,14 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor private long endpointDescriptorPointer; /** - * Package-private constructor to prevent manual instantiation. Endpoint + * Package-private constructor to prevent manual instantiation. Endpoint * descriptors are always created by JNI. */ EndpointDescriptor() { // Empty } - + /** * Returns the native pointer. * @@ -49,7 +49,7 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor */ public long getPointer() { - return this.endpointDescriptorPointer; + return endpointDescriptorPointer; } @Override @@ -109,36 +109,12 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor */ public String dump() { - return String.format("%s%n" - + " extralen %17d%n" - + " extra:%n" - + "%s", - DescriptorUtils.dump(this), - extraLength(), + return String.format( + "%s%n" + " extralen %17d%n" + " extra:%n" + "%s", + DescriptorUtils.dump(this), extraLength(), DescriptorUtils.dump(extra()).replaceAll("(?m)^", " ")); } - @Override - public boolean equals(final Object obj) - { - if (obj == null) return false; - if (obj == this) return true; - if (obj.getClass() != getClass()) return false; - final EndpointDescriptor other = (EndpointDescriptor) obj; - return new EqualsBuilder() - .append(bLength(), other.bLength()) - .append(bDescriptorType(), other.bDescriptorType()) - .append(bEndpointAddress(), other.bEndpointAddress()) - .append(bmAttributes(), other.bmAttributes()) - .append(wMaxPacketSize(), other.wMaxPacketSize()) - .append(bInterval(), other.bInterval()) - .append(bRefresh(), other.bRefresh()) - .append(bSynchAddress(), other.bSynchAddress()) - .append(extra(), other.extra()) - .append(extraLength(), other.extraLength()) - .isEquals(); - } - @Override public int hashCode() { @@ -151,11 +127,41 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor .append(bInterval()) .append(bRefresh()) .append(bSynchAddress()) - .append(extra()) .append(extraLength()) .toHashCode(); } + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + + final EndpointDescriptor other = (EndpointDescriptor) obj; + + return new EqualsBuilder() + .append(bLength(), other.bLength()) + .append(bDescriptorType(), other.bDescriptorType()) + .append(bEndpointAddress(), other.bEndpointAddress()) + .append(bmAttributes(), other.bmAttributes()) + .append(wMaxPacketSize(), other.wMaxPacketSize()) + .append(bInterval(), other.bInterval()) + .append(bRefresh(), other.bRefresh()) + .append(bSynchAddress(), other.bSynchAddress()) + .append(extraLength(), other.extraLength()) + .isEquals(); + } + @Override public String toString() { diff --git a/src/main/java/de/ailis/usb4java/libusb/Interface.java b/src/main/java/de/ailis/usb4java/libusb/Interface.java index e706f18..bc9a792 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Interface.java +++ b/src/main/java/de/ailis/usb4java/libusb/Interface.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -11,8 +11,6 @@ package de.ailis.usb4java.libusb; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * A collection of alternate settings for a particular USB interface. * @@ -24,14 +22,14 @@ public final class Interface private long interfacePointer; /** - * Package-private constructor to prevent manual instantiation. Interfaces + * Package-private constructor to prevent manual instantiation. Interfaces * are always created by JNI. */ Interface() { // Empty } - + /** * Returns the native pointer. * @@ -39,9 +37,9 @@ public final class Interface */ public long getPointer() { - return this.interfacePointer; + return interfacePointer; } - + /** * Returns the array with interface descriptors. The length of this array is * determined by the {@link #numAltsetting()} field. @@ -59,47 +57,57 @@ public final class Interface /** * Returns a dump of this interface. - * + * * @return The interface dump. */ public String dump() - { - return dump(null); - } - - /** - * Returns a dump of this descriptor. - * - * @param handle - * The USB device handle for resolving string descriptors. If - * null then no strings are resolved. - * @return The descriptor dump. - */ - public String dump(final DeviceHandle handle) { final StringBuilder builder = new StringBuilder(); - for (final InterfaceDescriptor descriptor : altsetting()) + + builder.append(String.format("Interface:%n" + " numAltsetting %10d", + numAltsetting())); + + for (final InterfaceDescriptor intDesc : altsetting()) { - builder.append(descriptor.dump()); + builder.append("%n" + intDesc.dump()); } + return builder.toString(); } @Override public int hashCode() { - return new HashCodeBuilder().append(this.interfacePointer).toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (interfacePointer ^ (interfacePointer >>> 32)); + return result; } @Override public boolean equals(final Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } final Interface other = (Interface) obj; - return this.interfacePointer == other.interfacePointer; + if (interfacePointer != other.interfacePointer) + { + return false; + } + return true; } - + @Override public String toString() { diff --git a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java index fdce545..1b5dd54 100644 --- a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -34,14 +34,14 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor private long interfaceDescriptorPointer; /** - * Package-private constructor to prevent manual instantiation. Interface + * Package-private constructor to prevent manual instantiation. Interface * descriptors are always created by JNI. */ InterfaceDescriptor() { // Empty } - + /** * Returns the native pointer. * @@ -49,7 +49,7 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor */ public long getPointer() { - return this.interfaceDescriptorPointer; + return interfaceDescriptorPointer; } @Override @@ -111,41 +111,17 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor public String dump() { final StringBuilder builder = new StringBuilder(); - builder.append(String.format("%s%n" - + " extralen %17d%n" - + " extra:%n" - + "%s", - DescriptorUtils.dump(this), - extraLength(), - DescriptorUtils.dump(extra()).replaceAll("(?m)^", " "))); - if (extraLength() != 0) return builder.toString(); - for (final EndpointDescriptor edesc: endpoint()) - { - builder.append(edesc.dump().replaceAll("(?m)^", " ")); - } - return builder.toString(); - } - @Override - public boolean equals(final Object obj) - { - if (obj == null) return false; - if (obj == this) return true; - if (obj.getClass() != getClass()) return false; - final InterfaceDescriptor other = (InterfaceDescriptor) obj; - return new EqualsBuilder() - .append(bLength(), other.bLength()) - .append(bDescriptorType(), other.bDescriptorType()) - .append(bInterfaceNumber(), other.bInterfaceNumber()) - .append(bAlternateSetting(), other.bAlternateSetting()) - .append(bNumEndpoints(), other.bNumEndpoints()) - .append(bInterfaceClass(), other.bInterfaceClass()) - .append(bInterfaceSubClass(), other.bInterfaceSubClass()) - .append(bInterfaceProtocol(), other.bInterfaceProtocol()) - .append(iInterface(), other.iInterface()) - .append(extra(), other.extra()) - .append(extraLength(), other.extraLength()) - .isEquals(); + builder.append(String.format("%s%n" + " extralen %17d%n" + + " extra:%n" + "%s", DescriptorUtils.dump(this), extraLength(), + DescriptorUtils.dump(extra()).replaceAll("(?m)^", " "))); + + for (final EndpointDescriptor epDesc : endpoint()) + { + builder.append("%n" + epDesc.dump()); + } + + return builder.toString(); } @Override @@ -161,11 +137,41 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor .append(bInterfaceSubClass()) .append(bInterfaceProtocol()) .append(iInterface()) - .append(extra()) .append(extraLength()) .toHashCode(); } + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + final InterfaceDescriptor other = (InterfaceDescriptor) obj; + + return new EqualsBuilder() + .append(bLength(), other.bLength()) + .append(bDescriptorType(), other.bDescriptorType()) + .append(bInterfaceNumber(), other.bInterfaceNumber()) + .append(bAlternateSetting(), other.bAlternateSetting()) + .append(bNumEndpoints(), other.bNumEndpoints()) + .append(bInterfaceClass(), other.bInterfaceClass()) + .append(bInterfaceSubClass(), other.bInterfaceSubClass()) + .append(bInterfaceProtocol(), other.bInterfaceProtocol()) + .append(iInterface(), other.iInterface()) + .append(extraLength(), other.extraLength()) + .isEquals(); + } + @Override public String toString() { diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 0bad32d..06a38db 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -356,7 +356,7 @@ public final class LibUsb // Synchronization type for isochronous endpoints. // Values for bits 2:3 of the bmAttributes field in // EndpointDescriptor. - + public static final int ISO_SYNC_TYPE_MASK = 0x0C; /** No synchronization. */ @@ -373,7 +373,7 @@ public final class LibUsb // Usage type for isochronous endpoints. Values for bits 4:5 of the // bmAttributes field in EndpointDescriptor. - + public static final int ISO_USAGE_TYPE_MASK = 0x30; /** Data endpoint. */ @@ -394,10 +394,11 @@ public final class LibUsb * Automatically free transfer buffer during {@link #freeTransfer(Transfer)} * * Please note that this flag is effectively a no-op (set to zero) here in - * the Java wrapper, since the ByteBuffer that acts as a buffer for transfers - * is allocated by the JVM and is subject to garbage collection like any other - * object at some point. Nulling the reference is the only needed action to - * take, and it is already done by the TRANSFER_FREE_TRANSFER flag. + * the Java wrapper, since the ByteBuffer that acts as a buffer for + * transfers is allocated by the JVM and is subject to garbage collection + * like any other object at some point. Nulling the reference is the only + * needed action to take, and it is already done by the + * TRANSFER_FREE_TRANSFER flag. */ public static final int TRANSFER_FREE_BUFFER = 0; // Originally 2 @@ -542,8 +543,7 @@ public final class LibUsb * @param level * The log level to set. */ - public static native void setDebug(final Context context, - final int level); + public static native void setDebug(final Context context, final int level); /** * Returns the version of the libusbx runtime. @@ -752,8 +752,7 @@ public final class LibUsb * {@link #ERROR_NO_DEVICE} if the device has been disconnected * another error on other failure */ - public static native int open(final Device device, - final DeviceHandle handle); + public static native int open(final Device device, final DeviceHandle handle); /** * Convenience function for finding a device with a particular @@ -1128,7 +1127,7 @@ public final class LibUsb */ public static native int getDeviceDescriptor(final Device device, final DeviceDescriptor descriptor); - + /** * Free a device descriptor obtained from * {@link #getDeviceDescriptor(Device, DeviceDescriptor)}. @@ -1144,7 +1143,7 @@ public final class LibUsb * The device descriptor to free */ public static native void freeDeviceDescriptor( - final DeviceDescriptor descriptor); + final DeviceDescriptor descriptor); /** * Retrieve a string descriptor in C style ASCII. @@ -1162,8 +1161,8 @@ public final class LibUsb /** * A simple wrapper around - * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer)} - * Simply returns the string (Maximum length of 126) if possible. If not + * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer)}. + * It simply returns the string (Maximum length of 126) if possible. If not * possible (NULL handle or 0-index specified or error occured) then null is * returned. * @@ -1178,7 +1177,10 @@ public final class LibUsb public static String getStringDescriptor(final DeviceHandle handle, final int index) { - if (handle == null || index == 0) return null; + if ((handle == null) || (index == 0)) + { + return null; + } final StringBuffer buffer = new StringBuffer(); if (getStringDescriptorAscii(handle, index, buffer) >= 0) { @@ -1612,7 +1614,7 @@ public final class LibUsb * The only way to implement this in Java is by passing a direct buffer, and * then accessing memory directly. IntBuffers can be direct, if they are * created as a view of a direct ByteBuffer, as in the following code: - * ByteBuffer.allocateDirect(Integer.SIZE / Byte.SIZE).asIntBuffer() + * ByteBuffer.allocateDirect(Integer.SIZE / Byte.SIZE).asIntBuffer() * * @param context * the context to operate on, or NULL for the default context @@ -1806,13 +1808,18 @@ public final class LibUsb */ public static void setPollfdNotifiers(final Context context, final PollfdListener listener, final Object userData) - { + { if (listener == null) + { unsetPollfdNotifiers(context); + } else + { setPollfdNotifiers(context); - - // Once we know the native calls have gone through, update the references. + } + + // Once we know the native calls have gone through, update the + // references. pollfdListener = listener; pollfdListenerUserData = userData; } @@ -1829,7 +1836,9 @@ public final class LibUsb static void triggerPollfdAdded(final FileDescriptor fd, final int events) { if (pollfdListener != null) + { pollfdListener.pollfdAdded(fd, events, pollfdListenerUserData); + } } /** @@ -1841,7 +1850,9 @@ public final class LibUsb static void triggerPollfdRemoved(final FileDescriptor fd) { if (pollfdListener != null) + { pollfdListener.pollfdRemoved(fd, pollfdListenerUserData); + } } /** @@ -1871,10 +1882,11 @@ public final class LibUsb * * @return A newly allocated transfer, or NULL on error */ - public static Transfer allocTransfer() { - return allocTransfer(0); + public static Transfer allocTransfer() + { + return allocTransfer(0); } - + /** * Allocate a libusbx transfer with a specified number of isochronous packet * descriptors. diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsbException.java b/src/main/java/de/ailis/usb4java/libusb/LibUsbException.java index d4af9fe..42afc4b 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsbException.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsbException.java @@ -9,7 +9,7 @@ import javax.usb.UsbException; /** * libusb-specific USB exception. - * + * * @author Klaus Reimer (k@ailis.de) */ public final class LibUsbException extends UsbException @@ -22,7 +22,7 @@ public final class LibUsbException extends UsbException /** * Constructor. - * + * * @param message * The error message. * @param errorCode @@ -37,11 +37,11 @@ public final class LibUsbException extends UsbException /** * Returns the error code. - * + * * @return The error code */ public int getErrorCode() { - return this.errorCode; + return errorCode; } } diff --git a/src/main/java/de/ailis/usb4java/libusb/Version.java b/src/main/java/de/ailis/usb4java/libusb/Version.java index b76bed7..76ab749 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Version.java +++ b/src/main/java/de/ailis/usb4java/libusb/Version.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -24,7 +24,7 @@ public final class Version implements Comparable { /** The native pointer to the version structure. */ private long versionPointer; - + /** * Package-private constructor to prevent manual instantiation. An instance * is only returned by the JNI method {@link LibUsb#getVersion()}. @@ -41,7 +41,7 @@ public final class Version implements Comparable */ public long getPointer() { - return this.versionPointer; + return versionPointer; } /** @@ -65,6 +65,13 @@ public final class Version implements Comparable */ public native int micro(); + /** + * Returns the library nano version. + * + * @return The library nano version. + */ + public native int nano(); + /** * Returns the release candidate suffix string, e.g. "-rc4". * @@ -75,26 +82,44 @@ public final class Version implements Comparable @Override public String toString() { - return major() + "." + minor() + "." + micro() + rc(); + return major() + "." + minor() + "." + micro() + "." + nano() + rc(); } @Override public int hashCode() { - return new HashCodeBuilder().append(this.versionPointer).toHashCode(); + return new HashCodeBuilder() + .append(major()) + .append(minor()) + .append(micro()) + .append(nano()) + .append(rc()) + .toHashCode(); } @Override public boolean equals(final Object obj) { - if (obj == null) return false; - if (obj == this) return true; - if (obj.getClass() != getClass()) return false; + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + final Version other = (Version) obj; + return new EqualsBuilder() .append(major(), other.major()) .append(minor(), other.minor()) .append(micro(), other.micro()) + .append(nano(), other.nano()) .append(rc(), other.rc()) .isEquals(); } @@ -102,10 +127,20 @@ public final class Version implements Comparable @Override public int compareTo(final Version other) { + if (this == other) + { + return 0; + } + if (other == null) + { + return 1; + } + return new CompareToBuilder() .append(major(), other.major()) .append(minor(), other.minor()) .append(micro(), other.micro()) + .append(nano(), other.nano()) .append(rc(), other.rc()) .toComparison(); } diff --git a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java index 3434b92..c170cdc 100644 --- a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java @@ -69,7 +69,12 @@ public final class DescriptorUtils public static String getUSBClassName(final int usbClass) { final String name = CLASS_NAMES.get(usbClass); - if (name == null) return "Unknown"; + + if (name == null) + { + return "Unknown"; + } + return name; } @@ -94,25 +99,31 @@ public final class DescriptorUtils */ public static String dump(final ByteBuffer bytes) { - final int columns = 16; bytes.rewind(); + final int columns = 16; final StringBuilder builder = new StringBuilder(); + int i = 0; while (bytes.hasRemaining()) { - if (i % columns != 0) + if ((i % columns) != 0) + { builder.append(' '); + } else if (i >= columns) + { builder.append(String.format("%n")); + } + builder.append(String.format("%02x", bytes.get())); i++; } + return builder.toString(); } /** - * Dumps the specified USB device descriptor into a string and - * returns it. + * Dumps the specified USB device descriptor into a string and returns it. * * @param descriptor * The USB device descriptor to dump. @@ -124,8 +135,7 @@ public final class DescriptorUtils } /** - * Dumps the specified USB device descriptor into a string and - * returns it. + * Dumps the specified USB device descriptor into a string and returns it. * * @param descriptor * The USB device descriptor to dump. @@ -166,12 +176,12 @@ public final class DescriptorUtils String.format("0x%04x", descriptor.idVendor() & 0xffff), String.format("0x%04x", descriptor.idProduct() & 0xffff), decodeBCD(descriptor.bcdDevice()), - descriptor.iManufacturer() & 0xff, - manufacturer == null ? "" : " " + manufacturer, + descriptor.iManufacturer() & 0xff, + (manufacturer == null) ? ("") : (" " + manufacturer), descriptor.iProduct() & 0xff, - product == null ? "" : " " + product, - descriptor.iSerialNumber() & 0xff, - serial == null ? "" : " " + serial, + (product == null) ? ("") : (" " + product), + descriptor.iSerialNumber() & 0xff, + (serial == null) ? ("") : (" " + serial), descriptor.bNumConfigurations() & 0xff); } @@ -203,16 +213,16 @@ public final class DescriptorUtils descriptor.bConfigurationValue() & 0xff, descriptor.iConfiguration() & 0xff, String.format("0x%02x", descriptor.bmAttributes() & 0xff), - (descriptor.bmAttributes() & 64) == 0 ? "(Bus Powered)" : - "Self Powered", - (descriptor.bmAttributes() & 32) == 0 ? "" : - String.format(" Remote Wakeup%n"), + ((descriptor.bmAttributes() & 64) == 0) ? ("Bus Powered") + : ("Self Powered"), + ((descriptor.bmAttributes() & 32) == 0) ? ("") + : String.format(" Remote Wakeup%n"), (descriptor.bMaxPower() & 0xff) * 2); } /** - * Dumps the specified USB interface descriptor into a string and - * returns it. + * Dumps the specified USB interface descriptor into a string and returns + * it. * * @param descriptor * The USB interface descriptor to dump. @@ -243,8 +253,7 @@ public final class DescriptorUtils } /** - * Dumps the specified USB endpoint descriptor into a string and - * returns it. + * Dumps the specified USB endpoint descriptor into a string and returns it. * * @param descriptor * The USB endpoint descriptor to dump. @@ -265,8 +274,8 @@ public final class DescriptorUtils descriptor.bLength(), descriptor.bDescriptorType(), String.format("0x%02x", descriptor.bEndpointAddress() & 0xff), - descriptor.bEndpointAddress() & 0xf, - (descriptor.bEndpointAddress() & 0x80) == 0 ? "OUT" : "IN", + descriptor.bEndpointAddress() & 0xf, + ((descriptor.bEndpointAddress() & 0x80) == 0) ? ("OUT") : ("IN"), descriptor.bmAttributes() & 0xff, getTransferTypeName(descriptor.bmAttributes() & 0xff), getSynchTypeName(descriptor.bmAttributes() & 0xff), @@ -288,7 +297,7 @@ public final class DescriptorUtils switch (bmAttributes & LibUsb.TRANSFER_TYPE_MASK) { case LibUsb.TRANSFER_TYPE_CONTROL: - return "Control"; + return "Control"; case LibUsb.TRANSFER_TYPE_ISOCHRONOUS: return "Isochronous"; case LibUsb.TRANSFER_TYPE_BULK: @@ -313,7 +322,7 @@ public final class DescriptorUtils switch (bmAttributes & LibUsb.ISO_SYNC_TYPE_ASYNC) { case LibUsb.ISO_SYNC_TYPE_NONE: - return "None"; + return "None"; case LibUsb.ISO_SYNC_TYPE_ASYNC: return "Asynchronous"; case LibUsb.ISO_SYNC_TYPE_ADAPTIVE: From 2ee0b2b7fdb023273990ba6e1e1bd3dae008c49b Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 9 Jun 2013 23:35:20 +0200 Subject: [PATCH 32/82] Also do a deep-equals of the arrays and ByteBuffers. --- .../usb4java/libusb/ConfigDescriptor.java | 4 ++++ .../usb4java/libusb/EndpointDescriptor.java | 2 ++ .../de/ailis/usb4java/libusb/Interface.java | 23 +++++++++++-------- .../usb4java/libusb/InterfaceDescriptor.java | 5 ++++ .../de/ailis/usb4java/libusb/Version.java | 12 +++++----- 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java index c91a0a6..1fe7648 100644 --- a/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/ConfigDescriptor.java @@ -133,6 +133,8 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor .append(iConfiguration()) .append(bmAttributes()) .append(bMaxPower()) + .append(iface()) + .append(extra()) .append(extraLength()) .toHashCode(); } @@ -164,6 +166,8 @@ public final class ConfigDescriptor implements UsbConfigurationDescriptor .append(iConfiguration(), other.iConfiguration()) .append(bmAttributes(), other.bmAttributes()) .append(bMaxPower(), other.bMaxPower()) + .append(iface(), other.iface()) + .append(extra(), other.extra()) .append(extraLength(), other.extraLength()) .isEquals(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java index ec9daa0..42c0862 100644 --- a/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/EndpointDescriptor.java @@ -127,6 +127,7 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor .append(bInterval()) .append(bRefresh()) .append(bSynchAddress()) + .append(extra()) .append(extraLength()) .toHashCode(); } @@ -158,6 +159,7 @@ public final class EndpointDescriptor implements UsbEndpointDescriptor .append(bInterval(), other.bInterval()) .append(bRefresh(), other.bRefresh()) .append(bSynchAddress(), other.bSynchAddress()) + .append(extra(), other.extra()) .append(extraLength(), other.extraLength()) .isEquals(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/Interface.java b/src/main/java/de/ailis/usb4java/libusb/Interface.java index bc9a792..88abdfe 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Interface.java +++ b/src/main/java/de/ailis/usb4java/libusb/Interface.java @@ -11,6 +11,9 @@ package de.ailis.usb4java.libusb; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; + /** * A collection of alternate settings for a particular USB interface. * @@ -78,11 +81,10 @@ public final class Interface @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) - + (int) (interfacePointer ^ (interfacePointer >>> 32)); - return result; + return new HashCodeBuilder() + .append(altsetting()) + .append(numAltsetting()) + .toHashCode(); } @Override @@ -100,12 +102,13 @@ public final class Interface { return false; } + final Interface other = (Interface) obj; - if (interfacePointer != other.interfacePointer) - { - return false; - } - return true; + + return new EqualsBuilder() + .append(altsetting(), other.altsetting()) + .append(numAltsetting(), other.numAltsetting()) + .isEquals(); } @Override diff --git a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java index 1b5dd54..ec5f8c0 100644 --- a/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/InterfaceDescriptor.java @@ -137,6 +137,8 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor .append(bInterfaceSubClass()) .append(bInterfaceProtocol()) .append(iInterface()) + .append(endpoint()) + .append(extra()) .append(extraLength()) .toHashCode(); } @@ -156,6 +158,7 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor { return false; } + final InterfaceDescriptor other = (InterfaceDescriptor) obj; return new EqualsBuilder() @@ -168,6 +171,8 @@ public final class InterfaceDescriptor implements UsbInterfaceDescriptor .append(bInterfaceSubClass(), other.bInterfaceSubClass()) .append(bInterfaceProtocol(), other.bInterfaceProtocol()) .append(iInterface(), other.iInterface()) + .append(endpoint(), other.endpoint()) + .append(extra(), other.extra()) .append(extraLength(), other.extraLength()) .isEquals(); } diff --git a/src/main/java/de/ailis/usb4java/libusb/Version.java b/src/main/java/de/ailis/usb4java/libusb/Version.java index 76ab749..258a82f 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Version.java +++ b/src/main/java/de/ailis/usb4java/libusb/Version.java @@ -79,12 +79,6 @@ public final class Version implements Comparable */ public native String rc(); - @Override - public String toString() - { - return major() + "." + minor() + "." + micro() + "." + nano() + rc(); - } - @Override public int hashCode() { @@ -144,4 +138,10 @@ public final class Version implements Comparable .append(rc(), other.rc()) .toComparison(); } + + @Override + public String toString() + { + return major() + "." + minor() + "." + micro() + "." + nano() + rc(); + } } From 34262a1b00d5c39f4a20234a89b727792b50a02b Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 9 Jun 2013 23:55:34 +0200 Subject: [PATCH 33/82] Add work on async transfers, not yet completed, I may yet change where certain data is kept and how it is checked. --- src/main/c/src/Transfer.c | 86 ++++++---- .../de/ailis/usb4java/libusb/Transfer.java | 148 ++++++++++++++---- .../usb4java/libusb/TransferCallback.java | 5 +- 3 files changed, 170 insertions(+), 69 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index a45a5fc..5c2089f 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -6,8 +6,6 @@ #include "Transfer.h" #include "DeviceHandle.h" -static JavaVM *jvm = NULL; - jobject wrapTransfer(JNIEnv* env, struct libusb_transfer* transfer) { WRAP_POINTER(env, transfer, "Transfer", "transferPointer"); @@ -23,11 +21,15 @@ void resetTransfer(JNIEnv* env, jobject obj) RESET_POINTER(env, obj, "transferPointer"); // We already have the class from the previous call. - // Reset callback and callbackUserData fields to NULL too. + // Reset all data fields to initial values (usually NULL/zero). field = (*env)->GetFieldID(env, cls, "callback", "L"PACKAGE_DIR"/TransferCallback;"); (*env)->SetObjectField(env, obj, field, NULL); field = (*env)->GetFieldID(env, cls, "callbackUserData", "Ljava/lang/Object;"); (*env)->SetObjectField(env, obj, field, NULL); + field = (*env)->GetFieldID(env, cls, "buffer", "Ljava/nio/ByteBuffer;"); + (*env)->SetObjectField(env, obj, field, NULL); + field = (*env)->GetFieldID(env, cls, "maxNumIsoPackets", "I"); + (*env)->SetIntField(env, obj, field, -1); } /** @@ -156,14 +158,13 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getStatus) } /** - * void setLength(int) + * void setLengthNative(int) */ -JNIEXPORT void JNICALL METHOD_NAME(Transfer, setLength) +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setLengthNative) ( JNIEnv *env, jobject this, jint length ) { - // TODO: check length against the buffer! unwrapTransfer(env, this)->length = length; } @@ -189,29 +190,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getActualLength) return unwrapTransfer(env, this)->actual_length; } -/** - * void setNumIsoPackets(int) - */ -JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPackets) -( - JNIEnv *env, jobject this, jint numIsoPackets -) -{ - unwrapTransfer(env, this)->num_iso_packets = numIsoPackets; -} - -/** - * int getNumIsoPackets() - */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) -( - JNIEnv *env, jobject this -) -{ - return unwrapTransfer(env, this)->num_iso_packets; -} - -static void transferCallback(struct libusb_transfer *transfer) { +static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer) { THREAD_BEGIN(env) // The saved reference to the Java Transfer object. @@ -241,10 +220,6 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setCallbackNative) JNIEnv *env, jobject this ) { - // First ensure the JVM is properly registered. - if (!jvm) - (*env)->GetJavaVM(env, &jvm); - // Then, set the callback to the appropriate C function and abuse the user_data field // to keep a reference to the Java Transfer object we'll call back to later. unwrapTransfer(env, this)->callback = &transferCallback; @@ -274,3 +249,48 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, unsetCallbackNative) } } +// getCallback() is done in Java. As the Java class already keeps that information, +// it's quicker to just get it that way. + +// setUserData() and getUserData() are done fully on the Java side. Since the user_data field in +// the libusb_transfer struct is already used to keep a reference to the Transfer object, this +// data has to be kept in Java. That way you also get garbage collection on it for free. + +/** + * void setBufferNative(ByteBuffer) + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setBufferNative) +( + JNIEnv *env, jobject this, jobject buffer +) +{ + NOT_NULL(env, buffer, return); + DIRECT_BUFFER(env, buffer, buf_ptr, return); + + unwrapTransfer(env, this)->buffer = buf_ptr; +} + +// getBuffer() is done in Java. As the Java class already keeps that information, +// it's quicker to just get it that way. + +/** + * void setNumIsoPacketsNative(int) + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPacketsNative) +( + JNIEnv *env, jobject this, jint numIsoPackets +) +{ + unwrapTransfer(env, this)->num_iso_packets = numIsoPackets; +} + +/** + * int getNumIsoPackets() + */ +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) +( + JNIEnv *env, jobject this +) +{ + return unwrapTransfer(env, this)->num_iso_packets; +} diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 6a30ef1..0169832 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -2,7 +2,7 @@ * Copyright 2013 Klaus Reimer * See LICENSE.md for licensing information. * - * Based on libusbx : + * Based on libusbx : * * Copyright 2001 Johannes Erdfelt * Copyright 2007-2008 Daniel Drake @@ -19,17 +19,29 @@ import java.nio.ByteBuffer; * The user populates this structure and then submits it in order to request a * transfer. After the transfer has completed, the library populates the * transfer with the results and passes it back to the user. - * + * * @author Klaus Reimer (k@ailis.de) */ public final class Transfer { /** The native pointer to the transfer structure. */ private long transferPointer; - + private TransferCallback callback; private Object callbackUserData; + // Keeping a reference to the buffer has multiple benefits: faster get(), GC + // prevention + // (while Transfer is alive) and you can check the buffer's original + // capacity. + private ByteBuffer buffer; + + // This is needed to check setNumIsoPackets() against the original number of + // Iso Packets, + // since memory is only allocated for up to that number and going above is + // an error. + private int maxNumIsoPackets = -1; + /** * Constructs a new transfer structure. */ @@ -45,7 +57,7 @@ public final class Transfer */ public long getPointer() { - return this.transferPointer; + return transferPointer; } /** @@ -151,7 +163,30 @@ public final class Transfer * @param length * The data buffer length to set. */ - public native void setLength(final int length); + public void setLength(final int length) + { + // Verify that the new length doesn't exceed the current buffer's + // capacity. + if (length != 0) + { + if (buffer == null) + { + throw new IllegalArgumentException( + "buffer is null, only a length of 0 is allowed"); + } + + if (buffer.capacity() < length) + { + throw new IllegalArgumentException( + "buffer too small for requested length"); + } + } + + // Native call. + setLengthNative(length); + } + + native void setLengthNative(final int length); /** * Returns the actual length of data that was transferred. Read-only, and @@ -161,38 +196,49 @@ public final class Transfer * @return The actual length of the transferred data. */ public native int getActualLength(); - - public TransferCallback getCallback() { - return callback; + + public TransferCallback getCallback() + { + return callback; } - - public void setCallback(final TransferCallback cb) { - callback = cb; - - // Call native method to enable callback and set Transfer correctly. - if (cb == null) { - unsetCallbackNative(); - } - else { - setCallbackNative(); - } + + public void setCallback(final TransferCallback cb) + { + // Call native method to enable callback and set Transfer correctly. + if (cb == null) + { + unsetCallbackNative(); + } + else + { + setCallbackNative(); + } + + // Once we know the native calls have gone through, update the + // reference. + callback = cb; } - + native void setCallbackNative(); + native void unsetCallbackNative(); - - void transferCallback() { - if (callback != null) { - callback.processTransfer(this); - } + + void transferCallback() + { + if (callback != null) + { + callback.processTransfer(this); + } } - - public Object getUserData() { - return callbackUserData; + + public Object getUserData() + { + return callbackUserData; } - - public void setUserData(final Object userData) { - callbackUserData = userData; + + public void setUserData(final Object userData) + { + callbackUserData = userData; } /** @@ -200,7 +246,10 @@ public final class Transfer * * @return The data buffer. */ - public native ByteBuffer getBuffer(); + public ByteBuffer getBuffer() + { + return buffer; + } /** * Sets the data buffer. @@ -208,7 +257,17 @@ public final class Transfer * @param buffer * The data buffer to set. */ - public native void setBuffer(final ByteBuffer buffer); + public void setBuffer(final ByteBuffer transferBuffer) + { + // Native call. + setBufferNative(transferBuffer); + + // Once we know the native calls have gone through, update the + // reference. + buffer = transferBuffer; + } + + native void setBufferNative(final ByteBuffer buffer); /** * Returns the number of isochronous packets. Only used for I/O with @@ -224,5 +283,26 @@ public final class Transfer * @param numIsoPackets * The number of isochronous packets to set. */ - public native void setNumIsoPackets(final int numIsoPackets); + public void setNumIsoPackets(final int numIsoPackets) + { + if (maxNumIsoPackets == -1) + { + // maxNumIsoPackets is not yet set and changing the way we interact + // with + // constructors in JNI for this one case just isn't worth it. + maxNumIsoPackets = getNumIsoPackets(); + } + + // Check that the new number doesn't exceed the maximum. + if (numIsoPackets > maxNumIsoPackets) + { + throw new IllegalArgumentException( + "numIsoPackets exceeds maximum specified with allocTransfer()"); + } + + // Native call. + setNumIsoPacketsNative(numIsoPackets); + } + + native void setNumIsoPacketsNative(final int numIsoPackets); } diff --git a/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java b/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java index 945b845..3406b99 100644 --- a/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java +++ b/src/main/java/de/ailis/usb4java/libusb/TransferCallback.java @@ -1,5 +1,6 @@ package de.ailis.usb4java.libusb; -public interface TransferCallback { - void processTransfer(Transfer transfer); +public interface TransferCallback +{ + void processTransfer(Transfer transfer); } From 1b93df20ca6a09699a49ee64353d49c2e99a2f29 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 10:16:47 +0200 Subject: [PATCH 34/82] Transfer.java: rename get methods to just be the name of the field with the appropriate type, like in the other classes (Descriptors etc.). This is consistent and easy to use. Move callback and maxNumIsoPacketSize to C, minimizing what is kept in Java: only the pointer and the transferBuffer. setLength() is still checked here, as that's easiest. Update the tests to match the changes and add documentation on the new methods. --- .../de/ailis/usb4java/libusb/Transfer.java | 141 +++++++----------- .../ailis/usb4java/libusb/TransferTest.java | 49 +++--- 2 files changed, 77 insertions(+), 113 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 0169832..6da947e 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -27,20 +27,10 @@ public final class Transfer /** The native pointer to the transfer structure. */ private long transferPointer; - private TransferCallback callback; - private Object callbackUserData; - // Keeping a reference to the buffer has multiple benefits: faster get(), GC - // prevention - // (while Transfer is alive) and you can check the buffer's original - // capacity. - private ByteBuffer buffer; - - // This is needed to check setNumIsoPackets() against the original number of - // Iso Packets, - // since memory is only allocated for up to that number and going above is - // an error. - private int maxNumIsoPackets = -1; + // prevention (while Transfer is alive) and you can check the buffer's + // original capacity (needed to check setLength() properly). + private ByteBuffer transferBuffer; /** * Constructs a new transfer structure. @@ -65,7 +55,7 @@ public final class Transfer * * @return The handle of the device. */ - public native DeviceHandle getDevHandle(); + public native DeviceHandle devHandle(); /** * Sets the handle of the device that this transfer will be submitted to. @@ -80,7 +70,7 @@ public final class Transfer * * @return The transfer flags. */ - public native byte getFlags(); + public native byte flags(); /** * Sets the bitwise OR combination of libusb transfer flags. @@ -95,7 +85,7 @@ public final class Transfer * * @return The endpoint address. */ - public native byte getEndpoint(); + public native byte endpoint(); /** * Sets the address of the endpoint where this transfer will be sent. @@ -110,7 +100,7 @@ public final class Transfer * * @return The endpoint type. */ - public native byte getType(); + public native byte type(); /** * Sets the type of the endpoint. @@ -126,7 +116,7 @@ public final class Transfer * * @return The timeout. */ - public native int getTimeout(); + public native int timeout(); /** * Sets the timeout for this transfer in milliseconds. A value of 0 @@ -148,34 +138,36 @@ public final class Transfer * * @return The transfer status. */ - public native int getStatus(); + public native int status(); /** * Returns the length of the data buffer. * * @return The data buffer length. */ - public native int getLength(); + public native int length(); /** * Sets the length of the data buffer. * + * This is checked against the maximum capacity of the supplied ByteBuffer. + * * @param length * The data buffer length to set. */ public void setLength(final int length) { // Verify that the new length doesn't exceed the current buffer's - // capacity. + // maximum capacity. if (length != 0) { - if (buffer == null) + if (transferBuffer == null) { throw new IllegalArgumentException( "buffer is null, only a length of 0 is allowed"); } - if (buffer.capacity() < length) + if (transferBuffer.capacity() < length) { throw new IllegalArgumentException( "buffer too small for requested length"); @@ -195,51 +187,41 @@ public final class Transfer * * @return The actual length of the transferred data. */ - public native int getActualLength(); + public native int actualLength(); - public TransferCallback getCallback() - { - return callback; - } - public void setCallback(final TransferCallback cb) - { - // Call native method to enable callback and set Transfer correctly. - if (cb == null) - { - unsetCallbackNative(); - } - else - { - setCallbackNative(); - } + /** + * Returns the current callback object. + * + * @return The current callback object. + */ + public native TransferCallback callback(); - // Once we know the native calls have gone through, update the - // reference. - callback = cb; - } + /** + * Sets the callback object. + * + * This will be invoked when the transfer completes, fails, or is cancelled. + * + * @param callback + * The callback object to use. + */ + public native void setCallback(final TransferCallback callback); - native void setCallbackNative(); + /** + * Returns the current user data object. + * + * @return The current user data object. + */ + public native Object userData(); - native void unsetCallbackNative(); - - void transferCallback() - { - if (callback != null) - { - callback.processTransfer(this); - } - } - - public Object getUserData() - { - return callbackUserData; - } - - public void setUserData(final Object userData) - { - callbackUserData = userData; - } + /** + * Sets the user data object, representing user context data to pass to + * the callback function and that can be accessed from there. + * + * @param userData + * The user data object to set. + */ + public native void setUserData(final Object userData); /** * Returns the data buffer. @@ -248,7 +230,7 @@ public final class Transfer */ public ByteBuffer getBuffer() { - return buffer; + return transferBuffer; } /** @@ -257,14 +239,14 @@ public final class Transfer * @param buffer * The data buffer to set. */ - public void setBuffer(final ByteBuffer transferBuffer) + public void setBuffer(final ByteBuffer buffer) { // Native call. - setBufferNative(transferBuffer); + setBufferNative(buffer); // Once we know the native calls have gone through, update the // reference. - buffer = transferBuffer; + transferBuffer = buffer; } native void setBufferNative(final ByteBuffer buffer); @@ -275,7 +257,7 @@ public final class Transfer * * @return The number of isochronous packets. */ - public native int getNumIsoPackets(); + public native int numIsoPackets(); /** * Sets the number of isochronous packets. @@ -283,26 +265,5 @@ public final class Transfer * @param numIsoPackets * The number of isochronous packets to set. */ - public void setNumIsoPackets(final int numIsoPackets) - { - if (maxNumIsoPackets == -1) - { - // maxNumIsoPackets is not yet set and changing the way we interact - // with - // constructors in JNI for this one case just isn't worth it. - maxNumIsoPackets = getNumIsoPackets(); - } - - // Check that the new number doesn't exceed the maximum. - if (numIsoPackets > maxNumIsoPackets) - { - throw new IllegalArgumentException( - "numIsoPackets exceeds maximum specified with allocTransfer()"); - } - - // Native call. - setNumIsoPacketsNative(numIsoPackets); - } - - native void setNumIsoPacketsNative(final int numIsoPackets); + public native void setNumIsoPackets(final int numIsoPackets); } diff --git a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java index 9e1440e..62ab62a 100644 --- a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java @@ -35,14 +35,14 @@ public class TransferTest @Before public void setUp() { - this.context = new Context(); + context = new Context(); try { - LibUsb.init(this.context); + LibUsb.init(context); } catch (Throwable e) { - this.context = null; + context = null; } } @@ -52,7 +52,10 @@ public class TransferTest @After public void tearDown() { - if (this.context != null) LibUsb.exit(this.context); + if (context != null) + { + LibUsb.exit(context); + } } /** @@ -113,14 +116,14 @@ public class TransferTest setPointer(handle, 1); DeviceHandle handle2 = new DeviceHandle(); setPointer(handle2, 2); - assertNull(transfer.getDevHandle()); + assertNull(transfer.devHandle()); transfer.setDevHandle(handle); - assertNotNull(transfer.getDevHandle()); - assertNotSame(handle, transfer.getDevHandle()); - assertNotEquals(handle2, transfer.getDevHandle()); - assertEquals(handle, transfer.getDevHandle()); + assertNotNull(transfer.devHandle()); + assertNotSame(handle, transfer.devHandle()); + assertNotEquals(handle2, transfer.devHandle()); + assertEquals(handle, transfer.devHandle()); transfer.setDevHandle(null); - assertNull(transfer.getDevHandle()); + assertNull(transfer.devHandle()); LibUsb.freeTransfer(transfer); } @@ -133,11 +136,11 @@ public class TransferTest { assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); - assertEquals(0, transfer.getFlags()); + assertEquals(0, transfer.flags()); transfer.setFlags((byte) 1); - assertEquals(1, transfer.getFlags()); + assertEquals(1, transfer.flags()); transfer.setFlags((byte) 0); - assertEquals(0, transfer.getFlags()); + assertEquals(0, transfer.flags()); LibUsb.freeTransfer(transfer); } @@ -150,11 +153,11 @@ public class TransferTest { assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); - assertEquals(0, transfer.getEndpoint()); + assertEquals(0, transfer.endpoint()); transfer.setEndpoint((byte) 1); - assertEquals(1, transfer.getEndpoint()); + assertEquals(1, transfer.endpoint()); transfer.setEndpoint((byte) 0); - assertEquals(0, transfer.getEndpoint()); + assertEquals(0, transfer.endpoint()); LibUsb.freeTransfer(transfer); } @@ -167,11 +170,11 @@ public class TransferTest { assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); - assertEquals(0, transfer.getType()); + assertEquals(0, transfer.type()); transfer.setType((byte) 1); - assertEquals(1, transfer.getType()); + assertEquals(1, transfer.type()); transfer.setType((byte) 0); - assertEquals(0, transfer.getType()); + assertEquals(0, transfer.type()); LibUsb.freeTransfer(transfer); } @@ -184,11 +187,11 @@ public class TransferTest { assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); - assertEquals(0, transfer.getTimeout()); + assertEquals(0, transfer.timeout()); transfer.setTimeout(1); - assertEquals(1, transfer.getTimeout()); + assertEquals(1, transfer.timeout()); transfer.setTimeout(0); - assertEquals(0, transfer.getTimeout()); + assertEquals(0, transfer.timeout()); LibUsb.freeTransfer(transfer); } @@ -200,7 +203,7 @@ public class TransferTest { assumeUsbTestsEnabled(); Transfer transfer = LibUsb.allocTransfer(0); - assertEquals(0, transfer.getStatus()); + assertEquals(0, transfer.status()); LibUsb.freeTransfer(transfer); } } From c1c32c3faf5924e937d909cdc9e62ebc6fadd40e Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 11:39:20 +0200 Subject: [PATCH 35/82] Add new transfer_data structure (Java and other objects). Update transfer functions accordingly. Check all variable names for consistency. Fix memory leak on failed getDeviceDescriptor. Use result == LIBUSB_SUCCESS instead of just !result, it is much clearer what the integer that you get as result actually means that way. --- src/main/c/src/LibUsb.c | 113 +++++++++++++++++++++++--------------- src/main/c/src/Transfer.h | 8 +++ 2 files changed, 77 insertions(+), 44 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index d3c2199..c054ad8 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -52,7 +52,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) libusb_context *ctx; int result = libusb_init(&ctx); - if (!result) setContext(env, ctx, context); + if (result == LIBUSB_SUCCESS) setContext(env, ctx, context); return result; } } @@ -173,16 +173,16 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) { NOT_NULL(env, device, return 0); NOT_NULL(env, path, return 0); - DIRECT_BUFFER(env, path, ptr, return 0); + DIRECT_BUFFER(env, path, path_ptr, return 0); libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return 0; libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; #if defined(LIBUSBX_API_VERSION) - jlong size = (*env)->GetDirectBufferCapacity(env, path); + jlong path_size = (*env)->GetDirectBufferCapacity(env, path); - return libusb_get_port_path(ctx, dev, ptr, size); + return libusb_get_port_path(ctx, dev, path_ptr, path_size); #else return 0; #endif @@ -313,9 +313,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, open) libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - libusb_device_handle *deviceHandle; - int result = libusb_open(dev, &deviceHandle); - if (!result) setDeviceHandle(env, deviceHandle, handle); + libusb_device_handle *dev_handle; + int result = libusb_open(dev, &dev_handle); + if (result == LIBUSB_SUCCESS) setDeviceHandle(env, dev_handle, handle); return result; } @@ -381,7 +381,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfiguration) int config; int result = libusb_get_configuration(dev_handle, &config); - if (!result) + if (result == LIBUSB_SUCCESS) { jclass cls = (*env)->GetObjectClass(env, buffer); jmethodID method = (*env)->GetMethodID(env, cls, "put", "(II)Ljava/nio/IntBuffer;"); @@ -541,7 +541,7 @@ JNIEXPORT jboolean JNICALL METHOD_NAME(LibUsb, hasCapability) */ JNIEXPORT jstring JNICALL METHOD_NAME(LibUsb, errorName) ( - JNIEnv *env, jobject this, jint code + JNIEnv *env, jclass class, jint code ) { return (*env)->NewStringUTF(env, libusb_error_name(code)); @@ -552,7 +552,7 @@ JNIEXPORT jstring JNICALL METHOD_NAME(LibUsb, errorName) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, le16ToCpu) ( - JNIEnv *env, jobject this, jint x + JNIEnv *env, jclass class, jint x ) { return libusb_le16_to_cpu(x); @@ -563,7 +563,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, le16ToCpu) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, cpuToLe16) ( - JNIEnv *env, jobject this, jint x + JNIEnv *env, jclass class, jint x ) { return libusb_cpu_to_le16(x); @@ -583,10 +583,18 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceDescriptor) libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - struct libusb_device_descriptor *data = - malloc(sizeof(struct libusb_device_descriptor)); - int result = libusb_get_device_descriptor(dev, data); - if (!result) setDeviceDescriptor(env, data, descriptor); + struct libusb_device_descriptor *dev_desc = calloc(1, sizeof(*dev_desc)); + if (!dev_desc) return LIBUSB_ERROR_NO_MEM; + + int result = libusb_get_device_descriptor(dev, dev_desc); + if (result == LIBUSB_SUCCESS) + { + setDeviceDescriptor(env, dev_desc, descriptor); + } + else + { + free(dev_desc); + } return result; } @@ -599,11 +607,11 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeDeviceDescriptor) ) { NOT_NULL(env, descriptor, return); - struct libusb_device_descriptor *data = unwrapDeviceDescriptor(env, + struct libusb_device_descriptor *dev_desc = unwrapDeviceDescriptor(env, descriptor); - if (!data) return; + if (!dev_desc) return; - free(data); + free(dev_desc); resetDeviceDescriptor(env, descriptor); } @@ -652,7 +660,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getActiveConfigDescriptor) struct libusb_config_descriptor *config; int result = libusb_get_active_config_descriptor(dev, &config); - if (!result) setConfigDescriptor(env, config, descriptor); + if (result == LIBUSB_SUCCESS) setConfigDescriptor(env, config, descriptor); return result; } @@ -672,7 +680,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) struct libusb_config_descriptor *config; int result = libusb_get_config_descriptor(dev, index, &config); - if (!result) setConfigDescriptor(env, config, descriptor); + if (result == LIBUSB_SUCCESS) setConfigDescriptor(env, config, descriptor); return result; } @@ -693,7 +701,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptorByValue) struct libusb_config_descriptor *config; int result = libusb_get_config_descriptor_by_value( dev, index, &config); - if (!result) setConfigDescriptor(env, config, descriptor); + if (result == LIBUSB_SUCCESS) setConfigDescriptor(env, config, descriptor); return result; } @@ -706,7 +714,7 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeConfigDescriptor) ) { NOT_NULL(env, descriptor, return); - struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, descriptor); if (!config) return; @@ -725,12 +733,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDescriptor) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, ptr, return 0); + DIRECT_BUFFER(env, data, data_ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - jlong size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_get_descriptor(dev_handle, type, index, ptr, size); + jlong data_size = (*env)->GetDirectBufferCapacity(env, data); + return libusb_get_descriptor(dev_handle, type, index, data_ptr, data_size); } /** @@ -744,12 +752,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptor) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, ptr, return 0); + DIRECT_BUFFER(env, data, data_ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - jlong size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_get_string_descriptor(dev_handle, index, langId, ptr, size); + jlong data_size = (*env)->GetDirectBufferCapacity(env, data); + return libusb_get_string_descriptor(dev_handle, index, langId, data_ptr, data_size); } /** @@ -763,13 +771,13 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) { NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, ptr, return 0); + DIRECT_BUFFER(env, data, data_ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - jlong size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_control_transfer(dev_handle, bmRequestType, bRequest, - wValue, wIndex, ptr, size, timeout); + jlong data_size = (*env)->GetDirectBufferCapacity(env, data); + return libusb_control_transfer(dev_handle, bmRequestType, bRequest, + wValue, wIndex, data_ptr, data_size, timeout); } /** @@ -784,15 +792,15 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); NOT_NULL(env, transferred, return 0); - DIRECT_BUFFER(env, data, ptr, return 0); + DIRECT_BUFFER(env, data, data_ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; int sent; - jlong size = (*env)->GetDirectBufferCapacity(env, data); - int result = libusb_bulk_transfer(dev_handle, endpoint, ptr, size, &sent, + jlong data_size = (*env)->GetDirectBufferCapacity(env, data); + int result = libusb_bulk_transfer(dev_handle, endpoint, data_ptr, data_size, &sent, timeout); - if (!result) + if (result == LIBUSB_SUCCESS) { jclass cls = (*env)->GetObjectClass(env, transferred); jmethodID method = (*env)->GetMethodID(env, cls, "put", @@ -814,15 +822,15 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) NOT_NULL(env, handle, return 0); NOT_NULL(env, data, return 0); NOT_NULL(env, transferred, return 0); - DIRECT_BUFFER(env, data, ptr, return 0); + DIRECT_BUFFER(env, data, data_ptr, return 0); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; int sent; - jlong size = (*env)->GetDirectBufferCapacity(env, data); - int result = libusb_interrupt_transfer(dev_handle, endpoint, ptr, size, + jlong data_size = (*env)->GetDirectBufferCapacity(env, data); + int result = libusb_interrupt_transfer(dev_handle, endpoint, data_ptr, data_size, &sent, timeout); - if (!result) + if (result == LIBUSB_SUCCESS) { jclass cls = (*env)->GetObjectClass(env, transferred); jmethodID method = (*env)->GetMethodID(env, cls, "put", @@ -944,6 +952,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, waitForEvent) struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; + return libusb_wait_for_event(ctx, &tv); } @@ -986,6 +995,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeout) struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; + return libusb_handle_events_timeout(ctx, &tv); } @@ -1037,6 +1047,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsLocked) struct timeval tv; tv.tv_sec = timeout / 1000000; tv.tv_usec = timeout % 1000000; + return libusb_handle_events_locked(ctx, &tv); } @@ -1148,7 +1159,20 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, allocTransfer) JNIEnv *env, jclass class, jint isoPackets ) { - return wrapTransfer(env, libusb_alloc_transfer(isoPackets)); + struct libusb_transfer *trans = libusb_alloc_transfer(isoPackets); + if (!trans) return NULL; + + struct transfer_data *transData = calloc(1, sizeof(*transData)); + if (!transData) + { + libusb_free_transfer(trans); + return NULL; + } + + trans->user_data = transData; + transData->maxNumIsoPackets = isoPackets; + + return wrapTransfer(env, trans); } /** @@ -1160,9 +1184,10 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeTransfer) ) { NOT_NULL(env, transfer, return); - struct libusb_transfer *handle = unwrapTransfer(env, transfer); - if (!handle) return; + struct libusb_transfer *trans = unwrapTransfer(env, transfer); + if (!trans) return; - libusb_free_transfer(handle); + free(trans->user_data); + libusb_free_transfer(trans); resetTransfer(env, transfer); } diff --git a/src/main/c/src/Transfer.h b/src/main/c/src/Transfer.h index dbca82d..2d6331a 100644 --- a/src/main/c/src/Transfer.h +++ b/src/main/c/src/Transfer.h @@ -8,6 +8,14 @@ #include "usb4java.h" +struct transfer_data +{ + jobject transferObject; + jobject callbackObject; + jobject callbackUserDataObject; + size_t maxNumIsoPackets; +}; + jobject wrapTransfer(JNIEnv*, struct libusb_transfer*); struct libusb_transfer* unwrapTransfer(JNIEnv*, jobject); void resetTransfer(JNIEnv*, jobject); From f04e3e43819da5318a801f7980144ea730dfb941 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 14:37:30 +0200 Subject: [PATCH 36/82] Rename trans to transfer inside LibUsb functions, like in Transfer.c. Add methodID field to transfer_data structure, so that it can be cached at set() time and the callback is faster. Also update the length when setting a new buffer! --- src/main/c/src/LibUsb.c | 30 +++++++++---------- src/main/c/src/Transfer.h | 1 + .../de/ailis/usb4java/libusb/Transfer.java | 3 ++ 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index c054ad8..2def572 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1159,20 +1159,20 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, allocTransfer) JNIEnv *env, jclass class, jint isoPackets ) { - struct libusb_transfer *trans = libusb_alloc_transfer(isoPackets); - if (!trans) return NULL; + struct libusb_transfer *transfer = libusb_alloc_transfer(isoPackets); + if (!transfer) return NULL; - struct transfer_data *transData = calloc(1, sizeof(*transData)); - if (!transData) + struct transfer_data *transferData = calloc(1, sizeof(*transferData)); + if (!transferData) { - libusb_free_transfer(trans); + libusb_free_transfer(transfer); return NULL; } - trans->user_data = transData; - transData->maxNumIsoPackets = isoPackets; + transfer->user_data = transferData; + transferData->maxNumIsoPackets = isoPackets; - return wrapTransfer(env, trans); + return wrapTransfer(env, transfer); } /** @@ -1180,14 +1180,14 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, allocTransfer) */ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeTransfer) ( - JNIEnv *env, jclass class, jobject transfer + JNIEnv *env, jclass class, jobject trans ) { - NOT_NULL(env, transfer, return); - struct libusb_transfer *trans = unwrapTransfer(env, transfer); - if (!trans) return; + NOT_NULL(env, trans, return); + struct libusb_transfer *transfer = unwrapTransfer(env, trans); + if (!transfer) return; - free(trans->user_data); - libusb_free_transfer(trans); - resetTransfer(env, transfer); + free(transfer->user_data); + libusb_free_transfer(transfer); + resetTransfer(env, trans); } diff --git a/src/main/c/src/Transfer.h b/src/main/c/src/Transfer.h index 2d6331a..caabec9 100644 --- a/src/main/c/src/Transfer.h +++ b/src/main/c/src/Transfer.h @@ -12,6 +12,7 @@ struct transfer_data { jobject transferObject; jobject callbackObject; + jmethodID callbackObjectMethod; jobject callbackUserDataObject; size_t maxNumIsoPackets; }; diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 6da947e..218157c 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -244,6 +244,9 @@ public final class Transfer // Native call. setBufferNative(buffer); + // Set new length. The native call above ensures that buffer isn't null. + setLengthNative(buffer.capacity()); + // Once we know the native calls have gone through, update the // reference. transferBuffer = buffer; From dca1ed7693b5cb59312568114fed922d5ee2e051 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 16:00:17 +0200 Subject: [PATCH 37/82] Finish work on Transfer implementation. Everything is consistent, fast callbacks are provided, support for FREE_TRANSFER is there and fully cleans up resources. To support FREE_TRANSFER in the case the user doesn't set (or explicitely sets) a callback of null on the Java side, a small C-callback was created that just takes care of cleaning up the Java objects and resources. --- src/main/c/src/LibUsb.c | 12 +- src/main/c/src/Transfer.c | 354 ++++++++++++++++++++++++++++---------- src/main/c/src/Transfer.h | 3 + 3 files changed, 280 insertions(+), 89 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 2def572..0810bca 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1172,7 +1172,14 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, allocTransfer) transfer->user_data = transferData; transferData->maxNumIsoPackets = isoPackets; - return wrapTransfer(env, transfer); + jobject transferObject = wrapTransfer(env, transfer); + + // Make sure the cleanup callback is always there, as it's perfectly legal + // to not set any callback and still enable the FREE_TRANSFER flag, in which + // case one would expect the Java Transfer object to be properly cleaned up. + cleanupCallbackEnable(env, transferObject); + + return transferObject; } /** @@ -1187,7 +1194,8 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeTransfer) struct libusb_transfer *transfer = unwrapTransfer(env, trans); if (!transfer) return; + cleanupGlobalReferences(env, trans); + resetTransfer(env, trans); free(transfer->user_data); libusb_free_transfer(transfer); - resetTransfer(env, trans); } diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 5c2089f..1a00520 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -3,15 +3,19 @@ * See COPYING file for copying conditions */ +#include #include "Transfer.h" #include "DeviceHandle.h" +static void LIBUSB_CALL cleanupCallback(struct libusb_transfer *transfer); +static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer); + jobject wrapTransfer(JNIEnv* env, struct libusb_transfer* transfer) { WRAP_POINTER(env, transfer, "Transfer", "transferPointer"); } -struct libusb_transfer* unwrapTransfer(JNIEnv *env, jobject obj) +struct libusb_transfer* unwrapTransfer(JNIEnv* env, jobject obj) { UNWRAP_POINTER(env, obj, struct libusb_transfer*, "transferPointer"); } @@ -21,15 +25,10 @@ void resetTransfer(JNIEnv* env, jobject obj) RESET_POINTER(env, obj, "transferPointer"); // We already have the class from the previous call. - // Reset all data fields to initial values (usually NULL/zero). - field = (*env)->GetFieldID(env, cls, "callback", "L"PACKAGE_DIR"/TransferCallback;"); + // Reset transferBuffer field to NULL too. + field = (*env)->GetFieldID(env, cls, "transferBuffer", + "Ljava/nio/ByteBuffer;"); (*env)->SetObjectField(env, obj, field, NULL); - field = (*env)->GetFieldID(env, cls, "callbackUserData", "Ljava/lang/Object;"); - (*env)->SetObjectField(env, obj, field, NULL); - field = (*env)->GetFieldID(env, cls, "buffer", "Ljava/nio/ByteBuffer;"); - (*env)->SetObjectField(env, obj, field, NULL); - field = (*env)->GetFieldID(env, cls, "maxNumIsoPackets", "I"); - (*env)->SetIntField(env, obj, field, -1); } /** @@ -43,19 +42,24 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setDevHandle) NOT_NULL(env, handle, return); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; - unwrapTransfer(env, this)->dev_handle = dev_handle; + transfer->dev_handle = dev_handle; } /** - * DeviceHandle getDevHandle() + * DeviceHandle devHandle() */ -JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, getDevHandle) +JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, devHandle) ( JNIEnv *env, jobject this ) { - return wrapDeviceHandle(env, unwrapTransfer(env, this)->dev_handle); + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return NULL; + + return wrapDeviceHandle(env, transfer->dev_handle); } /** @@ -66,18 +70,24 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setFlags) JNIEnv *env, jobject this, jint flags ) { - unwrapTransfer(env, this)->flags = flags; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + transfer->flags = flags; } /** - * byte getFlags() + * byte flags() */ -JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getFlags) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, flags) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->flags; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->flags; } /** @@ -88,18 +98,24 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setEndpoint) JNIEnv *env, jobject this, jint endpoint ) { - unwrapTransfer(env, this)->endpoint = endpoint; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + transfer->endpoint = endpoint; } /** - * byte getEndpoint() + * byte endpoint() */ -JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getEndpoint) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, endpoint) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->endpoint; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->endpoint; } /** @@ -110,18 +126,24 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setType) JNIEnv *env, jobject this, jint type ) { - unwrapTransfer(env, this)->type = type; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + transfer->type = type; } /** - * byte getType() + * byte type() */ -JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, getType) +JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, type) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->type; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->type; } /** @@ -132,29 +154,38 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setTimeout) JNIEnv *env, jobject this, jint timeout ) { - unwrapTransfer(env, this)->timeout = timeout; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + transfer->timeout = timeout; } /** - * int getTimeout() + * int timeout() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getTimeout) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, timeout) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->timeout; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->timeout; } /** - * int getStatus() + * int status() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getStatus) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, status) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->status; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->status; } /** @@ -165,96 +196,230 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setLengthNative) JNIEnv *env, jobject this, jint length ) { - unwrapTransfer(env, this)->length = length; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + transfer->length = length; } /** - * int getLength() + * int length() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getLength) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, length) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->length; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->length; } /** - * int getActualLength() + * int actualLength() */ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getActualLength) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->actual_length; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->actual_length; } -static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer) { +void cleanupGlobalReferences(JNIEnv *env, jobject obj) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, obj); + if (!transfer) return; + + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); + + // Cleanup all global references, if any currently exist. + if (transferData->callbackObject != NULL) + { + (*env)->DeleteGlobalRef(env, transferData->callbackObject); + } + + if (transferData->callbackUserDataObject != NULL) + { + (*env)->DeleteGlobalRef(env, transferData->callbackUserDataObject); + } + + if (transferData->transferObject != NULL) + { + (*env)->DeleteGlobalRef(env, transferData->transferObject); + } +} + +void cleanupCallbackEnable(JNIEnv *env, jobject obj) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, obj); + if (!transfer) return; + + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); + + transferData->transferObject = (*env)->NewGlobalRef(env, obj); + + transfer->callback = &cleanupCallback; + + transferData->callbackObject = NULL; + transferData->callbackObjectMethod = 0; +} + +static void LIBUSB_CALL cleanupCallback(struct libusb_transfer *transfer) +{ THREAD_BEGIN(env) - // The saved reference to the Java Transfer object. - jobject jTransfer = transfer->user_data; + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); - // Call back into Java. - jclass cls = (*env)->GetObjectClass(env, jTransfer); - jmethodID method = (*env)->GetMethodID(env, cls, "transferCallback", "()V"); - (*env)->CallVoidMethod(env, jTransfer, method); + // The saved reference to the Java Transfer object. + jobject jTransfer = transferData->transferObject; // Cleanup Java Transfer object too, if requested. if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) { + cleanupGlobalReferences(env, jTransfer); resetTransfer(env, jTransfer); + free(transferData); } - (*env)->DeleteGlobalRef(env, jTransfer); + THREAD_END +} + +static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer) +{ + THREAD_BEGIN(env) + + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); + + // The saved references to the Java TransferCallback object. + jobject jCallback = transferData->callbackObject; + jmethodID jCallbackMethod = transferData->callbackObjectMethod; + + // The saved reference to the Java Transfer object. + jobject jTransfer = transferData->transferObject; + + // Call back into Java. + (*env)->CallVoidMethod(env, jCallback, jCallbackMethod, jTransfer); + + // Cleanup Java Transfer object too, if requested. + if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) + { + cleanupGlobalReferences(env, jTransfer); + resetTransfer(env, jTransfer); + free(transferData); + } THREAD_END } /** - * void setCallbackNative() + * void setCallback(TransferCallback) */ -JNIEXPORT void JNICALL METHOD_NAME(Transfer, setCallbackNative) +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setCallback) ( - JNIEnv *env, jobject this + JNIEnv *env, jobject this, jobject callback ) { - // Then, set the callback to the appropriate C function and abuse the user_data field - // to keep a reference to the Java Transfer object we'll call back to later. - unwrapTransfer(env, this)->callback = &transferCallback; - unwrapTransfer(env, this)->user_data = this; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; - // To ensure the Java Transfer object's reference will still be valid after waiting on - // completion (for example it might get GC'd because no references in Java are held to - // it anymore, while the C part is still working fine), we have to make it a global ref. - (*env)->NewGlobalRef(env, this); -} + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); -/** - * void unsetCallbackNative() - */ -JNIEXPORT void JNICALL METHOD_NAME(Transfer, unsetCallbackNative) -( - JNIEnv *env, jobject this -) -{ - // If the callback was already set, unset it, and remember to delete the global reference again! - if (unwrapTransfer(env, this)->callback) + if (transferData->transferObject != NULL) { - (*env)->DeleteGlobalRef(env, unwrapTransfer(env, this)->user_data); + (*env)->DeleteGlobalRef(env, transferData->transferObject); + } - unwrapTransfer(env, this)->callback = NULL; - unwrapTransfer(env, this)->user_data = NULL; + if (transferData->callbackObject != NULL) + { + (*env)->DeleteGlobalRef(env, transferData->callbackObject); + } + + if (callback != NULL) + { + transferData->transferObject = (*env)->NewGlobalRef(env, this); + + transfer->callback = &transferCallback; + + jclass cls = (*env)->GetObjectClass(env, callback); + jmethodID method = (*env)->GetMethodID(env, cls, "processTransfer", + "(L"PACKAGE_DIR"/Transfer;)V"); + + transferData->callbackObject = (*env)->NewGlobalRef(env, callback); + transferData->callbackObjectMethod = method; + } + else + { + cleanupCallbackEnable(env, this); } } -// getCallback() is done in Java. As the Java class already keeps that information, -// it's quicker to just get it that way. +/** + * TransferCallback callback() + */ +JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, callback) +( + JNIEnv *env, jobject this +) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return NULL; -// setUserData() and getUserData() are done fully on the Java side. Since the user_data field in -// the libusb_transfer struct is already used to keep a reference to the Transfer object, this -// data has to be kept in Java. That way you also get garbage collection on it for free. + return ((struct transfer_data *) transfer->user_data)->callbackObject; +} + +/** + * void setUserData(Object) + */ +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setUserData) +( + JNIEnv *env, jobject this, jobject userData +) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + struct transfer_data *transferData = + ((struct transfer_data *) transfer->user_data); + + if (transferData->callbackUserDataObject != NULL) + { + (*env)->DeleteGlobalRef(env, transferData->callbackUserDataObject); + } + + if (userData != NULL) + { + transferData->callbackUserDataObject = (*env)->NewGlobalRef(env, + userData); + } + else + { + transferData->callbackUserDataObject = NULL; + } +} + +/** + * Object userData() + */ +JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, userData) +( + JNIEnv *env, jobject this +) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return NULL; + + return ((struct transfer_data *) transfer->user_data)->callbackUserDataObject; +} /** * void setBufferNative(ByteBuffer) @@ -265,32 +430,47 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setBufferNative) ) { NOT_NULL(env, buffer, return); - DIRECT_BUFFER(env, buffer, buf_ptr, return); + DIRECT_BUFFER(env, buffer, buffer_ptr, return); + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; - unwrapTransfer(env, this)->buffer = buf_ptr; + transfer->buffer = buffer_ptr; } -// getBuffer() is done in Java. As the Java class already keeps that information, -// it's quicker to just get it that way. - /** - * void setNumIsoPacketsNative(int) + * void setNumIsoPackets(int) */ -JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPacketsNative) +JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPackets) ( JNIEnv *env, jobject this, jint numIsoPackets ) { - unwrapTransfer(env, this)->num_iso_packets = numIsoPackets; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return; + + // Check that calls to setNumIsoPackets() never set a number exceeding + // the maximum, which was originally set at allocTransfer() time. + if (((struct transfer_data *) transfer->user_data)->maxNumIsoPackets + < numIsoPackets) + { + illegalArgument(env, + "numIsoPackets exceeds maximum allowed number set with allocTransfer()"); + return; + } + + transfer->num_iso_packets = numIsoPackets; } /** - * int getNumIsoPackets() + * int numIsoPackets() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getNumIsoPackets) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, numIsoPackets) ( JNIEnv *env, jobject this ) { - return unwrapTransfer(env, this)->num_iso_packets; + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return 0; + + return transfer->num_iso_packets; } diff --git a/src/main/c/src/Transfer.h b/src/main/c/src/Transfer.h index caabec9..a61187c 100644 --- a/src/main/c/src/Transfer.h +++ b/src/main/c/src/Transfer.h @@ -17,6 +17,9 @@ struct transfer_data size_t maxNumIsoPackets; }; +void cleanupGlobalReferences(JNIEnv*, jobject); +void cleanupCallbackEnable(JNIEnv*, jobject); + jobject wrapTransfer(JNIEnv*, struct libusb_transfer*); struct libusb_transfer* unwrapTransfer(JNIEnv*, jobject); void resetTransfer(JNIEnv*, jobject); From cac32974581bde1f8131ee846296ca829de5f9d9 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 16:58:41 +0200 Subject: [PATCH 38/82] Add BufferUtils to centralize creation of appropriate Buffers for LibUsb (various types, directly allocated). --- .../de/ailis/usb4java/utils/BufferUtils.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/de/ailis/usb4java/utils/BufferUtils.java diff --git a/src/main/java/de/ailis/usb4java/utils/BufferUtils.java b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java new file mode 100644 index 0000000..4a83b9d --- /dev/null +++ b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java @@ -0,0 +1,26 @@ +package de.ailis.usb4java.utils; + +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; + +public final class BufferUtils +{ + private static int intSize = Integer.SIZE / Byte.SIZE; + private static int longSize = Long.SIZE / Byte.SIZE; + + public static ByteBuffer allocateByteBuffer(final int bytes) + { + return ByteBuffer.allocateDirect(bytes); + } + + public static IntBuffer allocateIntBuffer() + { + return ByteBuffer.allocateDirect(intSize).asIntBuffer(); + } + + public static LongBuffer allocateLongBuffer() + { + return ByteBuffer.allocateDirect(longSize).asLongBuffer(); + } +} From 09cf25cfae0f3beca19220d0fe5e8d19d5f389c8 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 17:42:27 +0200 Subject: [PATCH 39/82] Fix NULL dereferences. Using the result of unwrap*() directly can lead to dereferencing NULL, for example if called on an already freed object. InterfaceDescriptor still to do. --- src/main/c/src/ConfigDescriptor.c | 66 ++++++++++++++++++------- src/main/c/src/DeviceDescriptor.c | 73 ++++++++++++++++++++++------ src/main/c/src/DeviceHandle.c | 6 ++- src/main/c/src/DeviceList.c | 6 ++- src/main/c/src/EndpointDescriptor.c | 68 ++++++++++++++++++-------- src/main/c/src/EndpointDescriptor.h | 3 +- src/main/c/src/Interface.c | 21 +++++--- src/main/c/src/InterfaceDescriptor.c | 14 +++--- src/main/c/src/Version.c | 27 +++++++--- 9 files changed, 207 insertions(+), 77 deletions(-) diff --git a/src/main/c/src/ConfigDescriptor.c b/src/main/c/src/ConfigDescriptor.c index 376a8cc..366c984 100644 --- a/src/main/c/src/ConfigDescriptor.c +++ b/src/main/c/src/ConfigDescriptor.c @@ -15,7 +15,8 @@ void setConfigDescriptor(JNIEnv* env, struct libusb_config_descriptor* unwrapConfigDescriptor(JNIEnv* env, jobject descriptor) { - UNWRAP_POINTER(env, descriptor, struct libusb_config_descriptor*, "configDescriptorPointer"); + UNWRAP_POINTER(env, descriptor, struct libusb_config_descriptor*, + "configDescriptorPointer"); } void resetConfigDescriptor(JNIEnv* env, jobject obj) @@ -31,7 +32,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bLength) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->bLength; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->bLength; } /** @@ -42,7 +46,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bDescriptorType) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->bDescriptorType; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->bDescriptorType; } /** @@ -53,7 +60,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(ConfigDescriptor, wTotalLength) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->wTotalLength; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->wTotalLength; } /** @@ -64,7 +74,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bNumInterfaces) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->bNumInterfaces; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->bNumInterfaces; } /** @@ -75,7 +88,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bConfigurationValue) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->bConfigurationValue; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->bConfigurationValue; } /** @@ -86,7 +102,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, iConfiguration) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->iConfiguration; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->iConfiguration; } /** @@ -97,7 +116,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bmAttributes) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->bmAttributes; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->bmAttributes; } /** @@ -108,7 +130,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bMaxPower) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->MaxPower; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->MaxPower; } /** @@ -119,10 +144,11 @@ JNIEXPORT jobjectArray JNICALL METHOD_NAME(ConfigDescriptor, iface) JNIEnv *env, jobject this ) { - struct libusb_config_descriptor *descriptor = unwrapConfigDescriptor( - env, this); - return wrapInterfaces(env, descriptor->bNumInterfaces, - descriptor->interface); + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return NULL; + + return wrapInterfaces(env, config->bNumInterfaces, + config->interface); } /** @@ -133,10 +159,11 @@ JNIEXPORT jobject JNICALL METHOD_NAME(ConfigDescriptor, extra) JNIEnv *env, jobject this ) { - struct libusb_config_descriptor *descriptor = - unwrapConfigDescriptor(env, this); - return (*env)->NewDirectByteBuffer(env, (void *) descriptor->extra, - descriptor->extra_length); + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return NULL; + + return (*env)->NewDirectByteBuffer(env, (void *) config->extra, + config->extra_length); } /** @@ -147,5 +174,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(ConfigDescriptor, extraLength) JNIEnv *env, jobject this ) { - return unwrapConfigDescriptor(env, this)->extra_length; + struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); + if (!config) return 0; + + return config->extra_length; } diff --git a/src/main/c/src/DeviceDescriptor.c b/src/main/c/src/DeviceDescriptor.c index b9932fe..100040d 100644 --- a/src/main/c/src/DeviceDescriptor.c +++ b/src/main/c/src/DeviceDescriptor.c @@ -14,7 +14,8 @@ void setDeviceDescriptor(JNIEnv* env, struct libusb_device_descriptor* unwrapDeviceDescriptor(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_device_descriptor*, "deviceDescriptorPointer"); + UNWRAP_POINTER(env, obj, struct libusb_device_descriptor*, + "deviceDescriptorPointer"); } void resetDeviceDescriptor(JNIEnv* env, jobject obj) @@ -30,7 +31,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bLength) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bLength; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bLength; } /** @@ -41,7 +45,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDescriptorType) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bDescriptorType; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bDescriptorType; } /** @@ -52,7 +59,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, bcdUSB) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bcdUSB; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bcdUSB; } /** @@ -63,7 +73,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceClass) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bDeviceClass; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bDeviceClass; } /** @@ -74,7 +87,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceSubClass) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bDeviceSubClass; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bDeviceSubClass; } /** @@ -85,7 +101,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceProtocol) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bDeviceProtocol; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bDeviceProtocol; } /** @@ -96,7 +115,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bMaxPacketSize0) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bMaxPacketSize0; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bMaxPacketSize0; } /** @@ -107,7 +129,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, idVendor) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->idVendor; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->idVendor; } /** @@ -118,7 +143,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, idProduct) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->idProduct; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->idProduct; } /** @@ -129,7 +157,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, bcdDevice) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bcdDevice; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bcdDevice; } @@ -141,7 +172,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iManufacturer) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->iManufacturer; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->iManufacturer; } /** @@ -152,7 +186,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iProduct) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->iProduct; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->iProduct; } /** @@ -161,7 +198,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iProduct) JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iSerialNumber) (JNIEnv *env, jobject this) { - return unwrapDeviceDescriptor(env, this)->iSerialNumber; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->iSerialNumber; } /** @@ -172,5 +212,8 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bNumConfigurations) JNIEnv *env, jobject this ) { - return unwrapDeviceDescriptor(env, this)->bNumConfigurations; + struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); + if (!device) return 0; + + return device->bNumConfigurations; } diff --git a/src/main/c/src/DeviceHandle.c b/src/main/c/src/DeviceHandle.c index 0de351b..9b0b7b3 100644 --- a/src/main/c/src/DeviceHandle.c +++ b/src/main/c/src/DeviceHandle.c @@ -5,7 +5,8 @@ #include "DeviceHandle.h" -void setDeviceHandle(JNIEnv* env, libusb_device_handle* deviceHandle, jobject object) +void setDeviceHandle(JNIEnv* env, libusb_device_handle* deviceHandle, + jobject object) { SET_POINTER(env, deviceHandle, object, "deviceHandlePointer"); } @@ -17,7 +18,8 @@ jobject wrapDeviceHandle(JNIEnv* env, libusb_device_handle* deviceHandle) libusb_device_handle* unwrapDeviceHandle(JNIEnv* env, jobject deviceHandle) { - UNWRAP_POINTER(env, deviceHandle, libusb_device_handle*, "deviceHandlePointer"); + UNWRAP_POINTER(env, deviceHandle, libusb_device_handle*, + "deviceHandlePointer"); } void resetDeviceHandle(JNIEnv* env, jobject object) diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index 4b7fd39..178bd82 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -38,9 +38,13 @@ JNIEXPORT jobject JNICALL METHOD_NAME(DeviceList, get) JNIEnv *env, jobject this, jint index ) { + libusb_device **list = unwrapDeviceList(env, this); + if (!list) return NULL; + jclass cls = (*env)->GetObjectClass(env, this); jfieldID field = (*env)->GetFieldID(env, cls, "size", "I"); int size = (*env)->GetIntField(env, this, field); if (index < 0 || index >= size) return NULL; - return wrapDevice(env, unwrapDeviceList(env, this)[index]); + + return wrapDevice(env, list[index]); } diff --git a/src/main/c/src/EndpointDescriptor.c b/src/main/c/src/EndpointDescriptor.c index 0ef0891..d95046b 100644 --- a/src/main/c/src/EndpointDescriptor.c +++ b/src/main/c/src/EndpointDescriptor.c @@ -8,27 +8,29 @@ jobject wrapEndpointDescriptor(JNIEnv *env, const struct libusb_endpoint_descriptor *descriptor) { - WRAP_POINTER(env, descriptor, "EndpointDescriptor", "endpointDescriptorPointer"); + WRAP_POINTER(env, descriptor, "EndpointDescriptor", + "endpointDescriptorPointer"); } jobjectArray wrapEndpointDescriptors(JNIEnv *env, int count, const struct libusb_endpoint_descriptor *descriptors) { - int i; + jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, + (*env)->FindClass(env, PACKAGE_DIR"/EndpointDescriptor"), NULL); - jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, - count, (*env)->FindClass(env, PACKAGE_DIR"/EndpointDescriptor"), - NULL); + int i; for (i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapEndpointDescriptor(env, &descriptors[i])); + return array; } struct libusb_endpoint_descriptor *unwrapEndpointDescriptor(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_endpoint_descriptor*, "endpointDescriptorPointer"); + UNWRAP_POINTER(env, obj, struct libusb_endpoint_descriptor*, + "endpointDescriptorPointer"); } /** @@ -39,7 +41,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bLength) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bLength; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bLength; } /** @@ -50,7 +55,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bDescriptorType) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bDescriptorType; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bDescriptorType; } /** @@ -61,7 +69,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bEndpointAddress) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bEndpointAddress; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bEndpointAddress; } /** @@ -72,7 +83,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bmAttributes) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bmAttributes; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bmAttributes; } /** @@ -83,7 +97,10 @@ JNIEXPORT jshort JNICALL METHOD_NAME(EndpointDescriptor, wMaxPacketSize) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->wMaxPacketSize; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->wMaxPacketSize; } /** @@ -94,7 +111,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bInterval) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bInterval; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bInterval; } /** @@ -105,7 +125,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bRefresh) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bRefresh; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bRefresh; } /** @@ -116,7 +139,10 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bSynchAddress) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->bSynchAddress; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->bSynchAddress; } /** @@ -127,10 +153,11 @@ JNIEXPORT jobject JNICALL METHOD_NAME(EndpointDescriptor, extra) JNIEnv *env, jobject this ) { - struct libusb_endpoint_descriptor *descriptor = - unwrapEndpointDescriptor(env, this); - return (*env)->NewDirectByteBuffer(env, (void *) descriptor->extra, - descriptor->extra_length); + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return NULL; + + return (*env)->NewDirectByteBuffer(env, (void *) ep->extra, + ep->extra_length); } /** @@ -141,5 +168,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(EndpointDescriptor, extraLength) JNIEnv *env, jobject this ) { - return unwrapEndpointDescriptor(env, this)->extra_length; + struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); + if (!ep) return 0; + + return ep->extra_length; } diff --git a/src/main/c/src/EndpointDescriptor.h b/src/main/c/src/EndpointDescriptor.h index 5f6cbd0..0bc3c49 100644 --- a/src/main/c/src/EndpointDescriptor.h +++ b/src/main/c/src/EndpointDescriptor.h @@ -12,7 +12,6 @@ jobject wrapEndpointDescriptor(JNIEnv*, const struct libusb_endpoint_descriptor*); jobjectArray wrapEndpointDescriptors(JNIEnv*, int, const struct libusb_endpoint_descriptor*); -struct libusb_endpoint_descriptor *unwrapEndpointDescriptor(JNIEnv *, - jobject); +struct libusb_endpoint_descriptor *unwrapEndpointDescriptor(JNIEnv*, jobject); #endif diff --git a/src/main/c/src/Interface.c b/src/main/c/src/Interface.c index d10e243..a0fb948 100644 --- a/src/main/c/src/Interface.c +++ b/src/main/c/src/Interface.c @@ -14,14 +14,14 @@ jobject wrapInterface(JNIEnv *env, const struct libusb_interface *iface) jobjectArray wrapInterfaces(JNIEnv *env, int count, const struct libusb_interface *interfaces) { - int i; + jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, + (*env)->FindClass(env, PACKAGE_DIR"/Interface"), NULL); - jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, - count, (*env)->FindClass(env, PACKAGE_DIR"/Interface"), - NULL); + int i; for (i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapInterface(env, &interfaces[i])); + return array; } @@ -35,7 +35,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(Interface, numAltsetting) JNIEnv *env, jobject this ) { - return unwrapInterface(env, this)->num_altsetting; + struct libusb_interface *iface = unwrapInterface(env, this); + if (!iface) return 0; + + return iface->num_altsetting; } JNIEXPORT jobjectArray JNICALL METHOD_NAME(Interface, altsetting) @@ -43,7 +46,9 @@ JNIEXPORT jobjectArray JNICALL METHOD_NAME(Interface, altsetting) JNIEnv *env, jobject this ) { - struct libusb_interface* interface = unwrapInterface(env, this); - return wrapInterfaceDescriptors(env, interface->num_altsetting, - interface->altsetting); + struct libusb_interface *iface = unwrapInterface(env, this); + if (!iface) return NULL; + + return wrapInterfaceDescriptors(env, iface->num_altsetting, + iface->altsetting); } diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index f6135fb..b488f3f 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -10,27 +10,29 @@ jobject wrapInterfaceDescriptor(JNIEnv *env, const struct libusb_interface_descriptor *descriptor) { - WRAP_POINTER(env, descriptor, "InterfaceDescriptor", "interfaceDescriptorPointer"); + WRAP_POINTER(env, descriptor, "InterfaceDescriptor", + "interfaceDescriptorPointer"); } jobjectArray wrapInterfaceDescriptors(JNIEnv *env, int count, const struct libusb_interface_descriptor *descriptors) { - int i; + jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, + (*env)->FindClass(env, PACKAGE_DIR"/InterfaceDescriptor"), NULL); - jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, - count, (*env)->FindClass(env, PACKAGE_DIR"/InterfaceDescriptor"), - NULL); + int i; for (i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapInterfaceDescriptor(env, &descriptors[i])); + return array; } struct libusb_interface_descriptor *unwrapInterfaceDescriptor(JNIEnv *env, jobject obj) { - UNWRAP_POINTER(env, obj, struct libusb_interface_descriptor*, "interfaceDescriptorPointer"); + UNWRAP_POINTER(env, obj, struct libusb_interface_descriptor*, + "interfaceDescriptorPointer"); } /** diff --git a/src/main/c/src/Version.c b/src/main/c/src/Version.c index d6fcfbd..007c73d 100644 --- a/src/main/c/src/Version.c +++ b/src/main/c/src/Version.c @@ -12,7 +12,7 @@ jobject wrapVersion(JNIEnv* env, const struct libusb_version* pointer) const struct libusb_version* unwrapVersion(JNIEnv* env, jobject object) { - UNWRAP_POINTER(env, object, struct libusb_version*, "versionPointer"); + UNWRAP_POINTER(env, object, const struct libusb_version*, "versionPointer"); } /** @@ -23,7 +23,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(Version, major) JNIEnv *env, jobject this ) { - return unwrapVersion(env, this)->major; + const struct libusb_version *version = unwrapVersion(env, this); + if (!version) return 0; + + return version->major; } /** @@ -34,7 +37,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(Version, minor) JNIEnv *env, jobject this ) { - return unwrapVersion(env, this)->minor; + const struct libusb_version *version = unwrapVersion(env, this); + if (!version) return 0; + + return version->minor; } /** @@ -45,7 +51,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(Version, micro) JNIEnv *env, jobject this ) { - return unwrapVersion(env, this)->micro; + const struct libusb_version *version = unwrapVersion(env, this); + if (!version) return 0; + + return version->micro; } /** @@ -56,7 +65,10 @@ JNIEXPORT jint JNICALL METHOD_NAME(Version, nano) JNIEnv *env, jobject this ) { - return unwrapVersion(env, this)->nano; + const struct libusb_version *version = unwrapVersion(env, this); + if (!version) return 0; + + return version->nano; } /** @@ -67,7 +79,10 @@ JNIEXPORT jstring JNICALL METHOD_NAME(Version, rc) JNIEnv *env, jobject this ) { - return (*env)->NewStringUTF(env, unwrapVersion(env, this)->rc); + const struct libusb_version *version = unwrapVersion(env, this); + if (!version) return NULL; + + return (*env)->NewStringUTF(env, version->rc); } From d26a0e0d626c7ff226a3e80fb96f0872ae4a0079 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 20:25:17 +0200 Subject: [PATCH 40/82] Fix NULL deref in InterfaceDescriptor too. --- src/main/c/src/InterfaceDescriptor.c | 77 ++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 16 deletions(-) diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index b488f3f..297b666 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -43,7 +43,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bLength) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bLength; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bLength; } /** @@ -54,7 +58,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bDescriptorType) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bDescriptorType; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bDescriptorType; } /** @@ -65,7 +73,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceNumber) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bInterfaceNumber; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bInterfaceNumber; } /** @@ -76,7 +88,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bAlternateSetting) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bAlternateSetting; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bAlternateSetting; } /** @@ -87,7 +103,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bNumEndpoints) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bNumEndpoints; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bNumEndpoints; } /** @@ -98,7 +118,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceClass) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bInterfaceClass; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bInterfaceClass; } /** @@ -109,7 +133,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceSubClass) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bInterfaceSubClass; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bInterfaceSubClass; } /** @@ -120,7 +148,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceProtocol) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->bInterfaceProtocol; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->bInterfaceProtocol; } /** @@ -131,7 +163,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, iInterface) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->iInterface; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->iInterface; } /** @@ -142,9 +178,12 @@ JNIEXPORT jobjectArray JNICALL METHOD_NAME(InterfaceDescriptor, endpoint) JNIEnv *env, jobject this ) { - struct libusb_interface_descriptor *descriptor = unwrapInterfaceDescriptor( - env, this); - return wrapEndpointDescriptors(env, descriptor->bNumEndpoints, descriptor->endpoint); + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return NULL; + + return wrapEndpointDescriptors(env, interface->bNumEndpoints, + interface->endpoint); } /** @@ -155,10 +194,12 @@ JNIEXPORT jobject JNICALL METHOD_NAME(InterfaceDescriptor, extra) JNIEnv *env, jobject this ) { - struct libusb_interface_descriptor *descriptor = + struct libusb_interface_descriptor *interface = unwrapInterfaceDescriptor(env, this); - return (*env)->NewDirectByteBuffer(env, (void *) descriptor->extra, - descriptor->extra_length); + if (!interface) return NULL; + + return (*env)->NewDirectByteBuffer(env, (void *) interface->extra, + interface->extra_length); } /** @@ -169,5 +210,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(InterfaceDescriptor, extraLength) JNIEnv *env, jobject this ) { - return unwrapInterfaceDescriptor(env, this)->extra_length; + struct libusb_interface_descriptor *interface = + unwrapInterfaceDescriptor(env, this); + if (!interface) return 0; + + return interface->extra_length; } From fddb83de2f1b608e9e2b9903024efe1641797e42 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 10 Jun 2013 23:32:51 +0200 Subject: [PATCH 41/82] Add submitTransfer and cancelTransfer. Rudimentary async I/O should now work (not tested yet!). --- src/main/c/src/LibUsb.c | 30 +++++++++++++++++ .../java/de/ailis/usb4java/libusb/LibUsb.java | 33 +++++++++++++++++-- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 0810bca..2a76b50 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1199,3 +1199,33 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeTransfer) free(transfer->user_data); libusb_free_transfer(transfer); } + +/** + * int submitTransfer(Transfer) + */ +JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, submitTransfer) +( + JNIEnv *env, jclass class, jobject trans +) +{ + NOT_NULL(env, trans, return 0); + struct libusb_transfer *transfer = unwrapTransfer(env, trans); + if (!transfer) return 0; + + return libusb_submit_transfer(transfer); +} + +/** + * int cancelTransfer(Transfer) + */ +JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, cancelTransfer) +( + JNIEnv *env, jclass class, jobject trans +) +{ + NOT_NULL(env, trans, return 0); + struct libusb_transfer *transfer = unwrapTransfer(env, trans); + if (!transfer) return 0; + + return libusb_cancel_transfer(transfer); +} diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 06a38db..bbb439b 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -1920,9 +1920,8 @@ public final class LibUsb * This should be called for all transfers allocated with * {@link #allocTransfer(int)}. * - * If the LIBUSB_TRANSFER_FREE_BUFFER flag is set and the transfer buffer is - * non-NULL, this function will also free the transfer buffer using the - * standard system memory allocator (e.g. free()). + * Please refer to {@link #TRANSFER_FREE_BUFFER} for an explanation + * of how buffers are freed. * * It is legal to call this function with a NULL transfer. In this case, the * function will simply return safely. @@ -1934,4 +1933,32 @@ public final class LibUsb * The transfer to free */ public static native void freeTransfer(final Transfer transfer); + + /** + * Submit a transfer. + * + * This function will fire off the USB transfer and then return immediately. + * + * @param transfer + * The transfer to submit + * @return 0 on success, {@link #LIBUSB_ERROR_NO_DEVICE} if the device has been + * disconnected, {@link #LIBUSB_ERROR_BUSY} if the transfer has already been + * submitted. {@link #LIBUSB_ERROR_NOT_SUPPORTED} if the transfer flags are + * not supported by the operating system. Another LIBUSB_ERROR code on failure. + */ + public static native int submitTransfer(final Transfer transfer); + + /** + * Asynchronously cancel a previously submitted transfer. + * + * This function returns immediately, but this does not indicate cancellation + * is complete. Your callback function will be invoked at some later time + * with a transfer status of {@link #LIBUSB_TRANSFER_CANCELLED}. + * + * @param transfer + * The transfer to cancel + * @return 0 on success, {@link #LIBUSB_ERROR_NOT_FOUND} if the transfer is + * already complete or cancelled. Another LIBUSB_ERROR code on failure. + */ + public static native int cancelTransfer(final Transfer transfer); } From 47543fa352f393a7c11b262ae660436e828b2f7d Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 09:37:45 +0200 Subject: [PATCH 42/82] Constify wrapper functions (set and wrap). --- src/main/c/src/ConfigDescriptor.c | 2 +- src/main/c/src/ConfigDescriptor.h | 2 +- src/main/c/src/Context.c | 2 +- src/main/c/src/Context.h | 2 +- src/main/c/src/Device.c | 2 +- src/main/c/src/Device.h | 2 +- src/main/c/src/DeviceDescriptor.c | 2 +- src/main/c/src/DeviceDescriptor.h | 2 +- src/main/c/src/DeviceHandle.c | 4 ++-- src/main/c/src/DeviceHandle.h | 4 ++-- src/main/c/src/DeviceList.c | 2 +- src/main/c/src/DeviceList.h | 2 +- src/main/c/src/Transfer.c | 2 +- src/main/c/src/Transfer.h | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/c/src/ConfigDescriptor.c b/src/main/c/src/ConfigDescriptor.c index 366c984..aa23a84 100644 --- a/src/main/c/src/ConfigDescriptor.c +++ b/src/main/c/src/ConfigDescriptor.c @@ -7,7 +7,7 @@ #include "Interface.h" void setConfigDescriptor(JNIEnv* env, - struct libusb_config_descriptor* descriptor, jobject object) + const struct libusb_config_descriptor* descriptor, jobject object) { SET_POINTER(env, descriptor, object, "configDescriptorPointer"); } diff --git a/src/main/c/src/ConfigDescriptor.h b/src/main/c/src/ConfigDescriptor.h index b5d8bea..a7d2039 100644 --- a/src/main/c/src/ConfigDescriptor.h +++ b/src/main/c/src/ConfigDescriptor.h @@ -8,7 +8,7 @@ #include "usb4java.h" -void setConfigDescriptor(JNIEnv*, struct libusb_config_descriptor*, jobject); +void setConfigDescriptor(JNIEnv*, const struct libusb_config_descriptor*, jobject); struct libusb_config_descriptor* unwrapConfigDescriptor(JNIEnv*, jobject); void resetConfigDescriptor(JNIEnv*, jobject); diff --git a/src/main/c/src/Context.c b/src/main/c/src/Context.c index 5f98f03..cf43868 100644 --- a/src/main/c/src/Context.c +++ b/src/main/c/src/Context.c @@ -5,7 +5,7 @@ #include "Context.h" -void setContext(JNIEnv* env, libusb_context* context, jobject object) +void setContext(JNIEnv* env, const libusb_context* context, jobject object) { SET_POINTER(env, context, object, "contextPointer"); } diff --git a/src/main/c/src/Context.h b/src/main/c/src/Context.h index d348a1a..24c45c3 100644 --- a/src/main/c/src/Context.h +++ b/src/main/c/src/Context.h @@ -8,7 +8,7 @@ #include "usb4java.h" -void setContext(JNIEnv*, libusb_context*, jobject); +void setContext(JNIEnv*, const libusb_context*, jobject); libusb_context* unwrapContext(JNIEnv*, jobject); void resetContext(JNIEnv*, jobject); diff --git a/src/main/c/src/Device.c b/src/main/c/src/Device.c index 96e8480..f91ce28 100644 --- a/src/main/c/src/Device.c +++ b/src/main/c/src/Device.c @@ -5,7 +5,7 @@ #include "Device.h" -jobject wrapDevice(JNIEnv* env, libusb_device* device) +jobject wrapDevice(JNIEnv* env, const libusb_device* device) { WRAP_POINTER(env, device, "Device", "devicePointer"); } diff --git a/src/main/c/src/Device.h b/src/main/c/src/Device.h index 6bc41ec..d6f2d2f 100644 --- a/src/main/c/src/Device.h +++ b/src/main/c/src/Device.h @@ -8,7 +8,7 @@ #include "usb4java.h" -jobject wrapDevice(JNIEnv*, libusb_device*); +jobject wrapDevice(JNIEnv*, const libusb_device*); libusb_device* unwrapDevice(JNIEnv*, jobject); void resetDevice(JNIEnv*, jobject); diff --git a/src/main/c/src/DeviceDescriptor.c b/src/main/c/src/DeviceDescriptor.c index 100040d..7200052 100644 --- a/src/main/c/src/DeviceDescriptor.c +++ b/src/main/c/src/DeviceDescriptor.c @@ -6,7 +6,7 @@ #include "DeviceDescriptor.h" void setDeviceDescriptor(JNIEnv* env, - struct libusb_device_descriptor* descriptor, jobject object) + const struct libusb_device_descriptor* descriptor, jobject object) { SET_POINTER(env, descriptor, object, "deviceDescriptorPointer"); } diff --git a/src/main/c/src/DeviceDescriptor.h b/src/main/c/src/DeviceDescriptor.h index 1ddf033..faf66a7 100644 --- a/src/main/c/src/DeviceDescriptor.h +++ b/src/main/c/src/DeviceDescriptor.h @@ -8,7 +8,7 @@ #include "usb4java.h" -void setDeviceDescriptor(JNIEnv*, struct libusb_device_descriptor*, jobject); +void setDeviceDescriptor(JNIEnv*, const struct libusb_device_descriptor*, jobject); struct libusb_device_descriptor* unwrapDeviceDescriptor(JNIEnv*, jobject); void resetDeviceDescriptor(JNIEnv*, jobject); diff --git a/src/main/c/src/DeviceHandle.c b/src/main/c/src/DeviceHandle.c index 9b0b7b3..2d06da0 100644 --- a/src/main/c/src/DeviceHandle.c +++ b/src/main/c/src/DeviceHandle.c @@ -5,13 +5,13 @@ #include "DeviceHandle.h" -void setDeviceHandle(JNIEnv* env, libusb_device_handle* deviceHandle, +void setDeviceHandle(JNIEnv* env, const libusb_device_handle* deviceHandle, jobject object) { SET_POINTER(env, deviceHandle, object, "deviceHandlePointer"); } -jobject wrapDeviceHandle(JNIEnv* env, libusb_device_handle* deviceHandle) +jobject wrapDeviceHandle(JNIEnv* env, const libusb_device_handle* deviceHandle) { WRAP_POINTER(env, deviceHandle, "DeviceHandle", "deviceHandlePointer"); } diff --git a/src/main/c/src/DeviceHandle.h b/src/main/c/src/DeviceHandle.h index 81ff999..c234d4f 100644 --- a/src/main/c/src/DeviceHandle.h +++ b/src/main/c/src/DeviceHandle.h @@ -8,8 +8,8 @@ #include "usb4java.h" -void setDeviceHandle(JNIEnv*, libusb_device_handle*, jobject); -jobject wrapDeviceHandle(JNIEnv*, libusb_device_handle*); +void setDeviceHandle(JNIEnv*, const libusb_device_handle*, jobject); +jobject wrapDeviceHandle(JNIEnv*, const libusb_device_handle*); libusb_device_handle* unwrapDeviceHandle(JNIEnv*, jobject); void resetDeviceHandle(JNIEnv*, jobject); diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index 178bd82..4247b65 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -6,7 +6,7 @@ #include "DeviceList.h" #include "Device.h" -void setDeviceList(JNIEnv* env, libusb_device** list, int size, jobject object) +void setDeviceList(JNIEnv* env, libusb_device* const * list, int size, jobject object) { SET_POINTER(env, list, object, "deviceListPointer"); diff --git a/src/main/c/src/DeviceList.h b/src/main/c/src/DeviceList.h index 79cf469..817b306 100644 --- a/src/main/c/src/DeviceList.h +++ b/src/main/c/src/DeviceList.h @@ -8,7 +8,7 @@ #include "usb4java.h" -void setDeviceList(JNIEnv*, libusb_device**, int, jobject); +void setDeviceList(JNIEnv*, libusb_device* const *, int, jobject); libusb_device** unwrapDeviceList(JNIEnv*, jobject); void resetDeviceList(JNIEnv*, jobject); diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 1a00520..012b8a2 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -10,7 +10,7 @@ static void LIBUSB_CALL cleanupCallback(struct libusb_transfer *transfer); static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer); -jobject wrapTransfer(JNIEnv* env, struct libusb_transfer* transfer) +jobject wrapTransfer(JNIEnv* env, const struct libusb_transfer* transfer) { WRAP_POINTER(env, transfer, "Transfer", "transferPointer"); } diff --git a/src/main/c/src/Transfer.h b/src/main/c/src/Transfer.h index a61187c..d77d44b 100644 --- a/src/main/c/src/Transfer.h +++ b/src/main/c/src/Transfer.h @@ -20,7 +20,7 @@ struct transfer_data void cleanupGlobalReferences(JNIEnv*, jobject); void cleanupCallbackEnable(JNIEnv*, jobject); -jobject wrapTransfer(JNIEnv*, struct libusb_transfer*); +jobject wrapTransfer(JNIEnv*, const struct libusb_transfer*); struct libusb_transfer* unwrapTransfer(JNIEnv*, jobject); void resetTransfer(JNIEnv*, jobject); From 51c07e1dbce64104ebf41b0026d76d4d5f856cc0 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 10:32:43 +0200 Subject: [PATCH 43/82] Add IsoPacketDescriptor objects and get them from the Transfer. Also add equals/hashcode for Transfer and IsoPacketDescriptor. --- src/main/c/src/IsoPacketDescriptor.c | 89 +++++++++++++++++++ src/main/c/src/IsoPacketDescriptor.h | 12 +++ src/main/c/src/Transfer.c | 16 ++++ .../usb4java/libusb/IsoPacketDescriptor.java | 72 +++++++++++++++ .../de/ailis/usb4java/libusb/Transfer.java | 67 +++++++++++++- 5 files changed, 255 insertions(+), 1 deletion(-) create mode 100644 src/main/c/src/IsoPacketDescriptor.c create mode 100644 src/main/c/src/IsoPacketDescriptor.h create mode 100644 src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java diff --git a/src/main/c/src/IsoPacketDescriptor.c b/src/main/c/src/IsoPacketDescriptor.c new file mode 100644 index 0000000..aabdb08 --- /dev/null +++ b/src/main/c/src/IsoPacketDescriptor.c @@ -0,0 +1,89 @@ +#include "IsoPacketDescriptor.h" + +jobject wrapIsoPacketDescriptor(JNIEnv *env, + const struct libusb_iso_packet_descriptor *descriptor) +{ + WRAP_POINTER(env, descriptor, "IsoPacketDescriptor", + "isoPacketDescriptorPointer"); +} + +jobjectArray wrapIsoPacketDescriptors(JNIEnv *env, int count, + const struct libusb_iso_packet_descriptor *descriptors) +{ + jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, + (*env)->FindClass(env, PACKAGE_DIR"/IsoPacketDescriptor"), NULL); + + int i; + for (i = 0; i < count; i++) + (*env)->SetObjectArrayElement(env, array, i, + wrapIsoPacketDescriptor(env, &descriptors[i])); + + return array; +} + +struct libusb_iso_packet_descriptor *unwrapIsoPacketDescriptor(JNIEnv *env, + jobject obj) +{ + UNWRAP_POINTER(env, obj, struct libusb_iso_packet_descriptor*, + "isoPacketDescriptorPointer"); +} + +/** + * int length() + */ +JNIEXPORT jint JNICALL METHOD_NAME(IsoPacketDescriptor, length) +( + JNIEnv *env, jobject this +) +{ + struct libusb_iso_packet_descriptor *isopacket = + unwrapIsoPacketDescriptor(env, this); + if (!isopacket) return 0; + + return isopacket->length; +} + +/** + * void setLength(int) + */ +JNIEXPORT void JNICALL METHOD_NAME(IsoPacketDescriptor, setLength) +( + JNIEnv *env, jobject this, jint length +) +{ + struct libusb_iso_packet_descriptor *isopacket = + unwrapIsoPacketDescriptor(env, this); + if (!isopacket) return; + + isopacket->length = length; +} + +/** + * int actualLength() + */ +JNIEXPORT jint JNICALL METHOD_NAME(IsoPacketDescriptor, actualLength) +( + JNIEnv *env, jobject this +) +{ + struct libusb_iso_packet_descriptor *isopacket = + unwrapIsoPacketDescriptor(env, this); + if (!isopacket) return 0; + + return isopacket->actual_length; +} + +/** + * int status() + */ +JNIEXPORT jint JNICALL METHOD_NAME(IsoPacketDescriptor, status) +( + JNIEnv *env, jobject this +) +{ + struct libusb_iso_packet_descriptor *isopacket = + unwrapIsoPacketDescriptor(env, this); + if (!isopacket) return 0; + + return isopacket->status; +} diff --git a/src/main/c/src/IsoPacketDescriptor.h b/src/main/c/src/IsoPacketDescriptor.h new file mode 100644 index 0000000..4057dd1 --- /dev/null +++ b/src/main/c/src/IsoPacketDescriptor.h @@ -0,0 +1,12 @@ +#ifndef USB4JAVA_ISO_PACKET_DESCRIPTOR_H +#define USB4JAVA_ISO_PACKET_DESCRIPTOR_H + +#include "usb4java.h" + +jobject wrapIsoPacketDescriptor(JNIEnv*, + const struct libusb_iso_packet_descriptor*); +jobjectArray wrapIsoPacketDescriptors(JNIEnv*, int, + const struct libusb_iso_packet_descriptor*); +struct libusb_iso_packet_descriptor *unwrapIsoPacketDescriptor(JNIEnv*, jobject); + +#endif diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 012b8a2..6059524 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -6,6 +6,7 @@ #include #include "Transfer.h" #include "DeviceHandle.h" +#include "IsoPacketDescriptor.h" static void LIBUSB_CALL cleanupCallback(struct libusb_transfer *transfer); static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer); @@ -474,3 +475,18 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, numIsoPackets) return transfer->num_iso_packets; } + +/** + * IsoPacketDescriptor[] isoPacketDesc() + */ +JNIEXPORT jobjectArray JNICALL METHOD_NAME(Transfer, isoPacketDesc) +( + JNIEnv *env, jobject this +) +{ + struct libusb_transfer *transfer = unwrapTransfer(env, this); + if (!transfer) return NULL; + + return wrapIsoPacketDescriptors(env, transfer->num_iso_packets, + transfer->iso_packet_desc); +} diff --git a/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java new file mode 100644 index 0000000..2435147 --- /dev/null +++ b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java @@ -0,0 +1,72 @@ +package de.ailis.usb4java.libusb; + +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; + +public final class IsoPacketDescriptor +{ + /** The native pointer to the descriptor structure. */ + private long isoPacketDescriptorPointer; + + /** + * Package-private constructor to prevent manual instantiation. + * IsoPacketDescriptors are always created by JNI. + */ + IsoPacketDescriptor() + { + // Empty + } + + /** + * Returns the native pointer. + * + * @return The native pointer. + */ + public long getPointer() + { + return isoPacketDescriptorPointer; + } + + public native int length(); + + public native void setLength(final int length); + + public native int actualLength(); + + public native int status(); + + @Override + public int hashCode() + { + return new HashCodeBuilder() + .append(length()) + .append(actualLength()) + .append(status()) + .toHashCode(); + } + + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + + final IsoPacketDescriptor other = (IsoPacketDescriptor) obj; + + return new EqualsBuilder() + .append(length(), other.length()) + .append(actualLength(), other.actualLength()) + .append(status(), other.status()) + .isEquals(); + } +} diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 218157c..06fec2f 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -13,6 +13,9 @@ package de.ailis.usb4java.libusb; import java.nio.ByteBuffer; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; + /** * The generic USB transfer structure. * @@ -228,7 +231,7 @@ public final class Transfer * * @return The data buffer. */ - public ByteBuffer getBuffer() + public ByteBuffer buffer() { return transferBuffer; } @@ -269,4 +272,66 @@ public final class Transfer * The number of isochronous packets to set. */ public native void setNumIsoPackets(final int numIsoPackets); + + /** + * Array of isochronous packet descriptors, for isochronous transfers only. + * + * @return The array of isochronous packet descriptors. + */ + public native IsoPacketDescriptor[] isoPacketDesc(); + + @Override + public int hashCode() + { + return new HashCodeBuilder() + .append(devHandle()) + .append(flags()) + .append(endpoint()) + .append(type()) + .append(timeout()) + .append(status()) + .append(length()) + .append(actualLength()) + .append(callback()) + .append(userData()) + .append(buffer()) + .append(numIsoPackets()) + .append(isoPacketDesc()) + .toHashCode(); + } + + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + + final Transfer other = (Transfer) obj; + + return new EqualsBuilder() + .append(devHandle(), other.devHandle()) + .append(flags(), other.flags()) + .append(endpoint(), other.endpoint()) + .append(type(), other.type()) + .append(timeout(), other.timeout()) + .append(status(), other.status()) + .append(length(), other.length()) + .append(actualLength(), other.actualLength()) + .append(callback(), other.callback()) + .append(userData(), other.userData()) + .append(buffer(), other.buffer()) + .append(numIsoPackets(), other.numIsoPackets()) + .append(isoPacketDesc(), other.isoPacketDesc()) + .isEquals(); + } } From 95534657c936f5b3318a0c986d7c8debc7183151 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 13:06:02 +0200 Subject: [PATCH 44/82] Transfer constructor also package private, since you never create them but only get them through allocTransfer(). --- src/main/java/de/ailis/usb4java/libusb/Transfer.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 06fec2f..72754ae 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -36,9 +36,10 @@ public final class Transfer private ByteBuffer transferBuffer; /** - * Constructs a new transfer structure. + * Package-private constructor to prevent manual instantiation. + * Transfers are always created by JNI with allocTransfer(). */ - public Transfer() + Transfer() { // Empty } From db62b8496b05d155778e9e3a29767485a0e548ea Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 13:14:04 +0200 Subject: [PATCH 45/82] Add IsoPacketDescriptor.c to Makefile. --- src/main/c/src/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/src/Makefile.am b/src/main/c/src/Makefile.am index 9be6ead..95ebe12 100644 --- a/src/main/c/src/Makefile.am +++ b/src/main/c/src/Makefile.am @@ -17,4 +17,5 @@ libusb4java_la_SOURCES = \ Interface.c \ InterfaceDescriptor.c \ EndpointDescriptor.c \ - Transfer.c \ No newline at end of file + IsoPacketDescriptor.c \ + Transfer.c From 13e83fd59e840d76216c5e002578bbb9392fccd2 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 15:48:16 +0200 Subject: [PATCH 46/82] Add isochronous transfer functions and async transfer fill functions. They are implemented directly in Java since they are static inline convenience functions in libusb.h and don't really need to call into C via JNI at all to work, this keeps the JNI layer simple and minimal. Only fill_control/get_control is still outstanding. getDescriptor() and getStringDescriptor() were removed from native JNI, since they are static inline convenience functions in libusb.h and don't do anything more than calling the appropriate real function. --- src/main/c/src/LibUsb.c | 38 ------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 106 ++++++++++++++++-- .../de/ailis/usb4java/utils/BufferUtils.java | 17 +++ 3 files changed, 115 insertions(+), 46 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 2a76b50..fc762ae 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -722,44 +722,6 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeConfigDescriptor) resetConfigDescriptor(env, descriptor); } -/** - * int getDescriptor(DeviceHandle, int, int, ByteBuffer) - */ -JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDescriptor) -( - JNIEnv *env, jclass class, jobject handle, jint type, jint index, - jobject data -) -{ - NOT_NULL(env, handle, return 0); - NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, data_ptr, return 0); - libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); - if (!dev_handle) return 0; - - jlong data_size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_get_descriptor(dev_handle, type, index, data_ptr, data_size); -} - -/** - * int getStringDescriptor(DeviceHandle, int, int, ByteBuffer) - */ -JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptor) -( - JNIEnv *env, jclass class, jobject handle, jint index, jint langId, - jobject data -) -{ - NOT_NULL(env, handle, return 0); - NOT_NULL(env, data, return 0); - DIRECT_BUFFER(env, data, data_ptr, return 0); - libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); - if (!dev_handle) return 0; - - jlong data_size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_get_string_descriptor(dev_handle, index, langId, data_ptr, data_size); -} - /** * int controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int) */ diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index bbb439b..afc45cb 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -16,6 +16,8 @@ import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.nio.LongBuffer; +import de.ailis.usb4java.utils.BufferUtils; + /** * Static class providing the constants and functions of libusbx. * @@ -695,10 +697,8 @@ public final class LibUsb * * This function is useful for setting up isochronous transfers, for example * you might pass the return value from this function to - * libusb_set_iso_packet_lengths() in order to set the length field of every - * isochronous packet in a transfer. - * - * TODO Link to libusb_set_iso_packet_lengths when implemented + * {@link #setIsoPacketLengths(Transfer, int)} in order to set the length + * field of every isochronous packet in a transfer. * * @param device * A device. @@ -1288,8 +1288,12 @@ public final class LibUsb * @return number of bytes returned in data, or ERROR code on failure * */ - public static native int getDescriptor(final DeviceHandle handle, - final int type, final int index, final ByteBuffer data); + public static int getDescriptor(final DeviceHandle handle, final int type, + final int index, final ByteBuffer data) + { + return controlTransfer(handle, ENDPOINT_IN, REQUEST_GET_DESCRIPTOR, + (type << 8) | index, 0, data, 1000); + } /** * Retrieve a descriptor from a device. @@ -1309,8 +1313,12 @@ public final class LibUsb * @return number of bytes returned in data, or LIBUSB_ERROR code on failure * @see #getStringDescriptorAscii(DeviceHandle, int, StringBuffer) */ - public static native int getStringDescriptor(final DeviceHandle handle, - final int index, final int langId, final ByteBuffer data); + public static int getStringDescriptor(final DeviceHandle handle, + final int index, final int langId, final ByteBuffer data) + { + return controlTransfer(handle, ENDPOINT_IN, REQUEST_GET_DESCRIPTOR, + (DT_STRING << 8) | index, langId, data, 1000); + } /** * Perform a USB control transfer. @@ -1961,4 +1969,86 @@ public final class LibUsb * already complete or cancelled. Another LIBUSB_ERROR code on failure. */ public static native int cancelTransfer(final Transfer transfer); + + public static void fillBulkTransfer(Transfer transfer, DeviceHandle handle, + int endpoint, ByteBuffer buffer, TransferCallback callback, + Object userData, int timeout) + { + transfer.setDevHandle(handle); + transfer.setEndpoint(endpoint); + transfer.setType(TRANSFER_TYPE_BULK); + transfer.setTimeout(timeout); + transfer.setBuffer(buffer); + transfer.setUserData(userData); + transfer.setCallback(callback); + } + + public static void fillInterruptTransfer(Transfer transfer, + DeviceHandle handle, int endpoint, ByteBuffer buffer, + TransferCallback callback, Object userData, int timeout) + { + transfer.setDevHandle(handle); + transfer.setEndpoint(endpoint); + transfer.setType(TRANSFER_TYPE_INTERRUPT); + transfer.setTimeout(timeout); + transfer.setBuffer(buffer); + transfer.setUserData(userData); + transfer.setCallback(callback); + } + + public static void fillIsoTransfer(Transfer transfer, DeviceHandle handle, + int endpoint, ByteBuffer buffer, int numIsoPackets, + TransferCallback callback, Object userData, int timeout) + { + transfer.setDevHandle(handle); + transfer.setEndpoint(endpoint); + transfer.setType(TRANSFER_TYPE_ISOCHRONOUS); + transfer.setTimeout(timeout); + transfer.setBuffer(buffer); + transfer.setNumIsoPackets(numIsoPackets); + transfer.setUserData(userData); + transfer.setCallback(callback); + } + + public static void setIsoPacketLengths(Transfer transfer, int length) + { + for (IsoPacketDescriptor isoDesc: transfer.isoPacketDesc()) + { + isoDesc.setLength(length); + } + } + + public static ByteBuffer getIsoPacketBuffer(Transfer transfer, int packet) + { + if (packet >= transfer.numIsoPackets()) + { + return null; + } + + IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); + int offset = 0; + + for (int i = 0; i < packet; i++) + { + offset += isoDescriptors[i].length(); + } + + return BufferUtils.slice(transfer.buffer(), offset, + isoDescriptors[packet].length()); + } + + public static ByteBuffer getIsoPacketBufferSimple(Transfer transfer, + int packet) + { + if (packet >= transfer.numIsoPackets()) + { + return null; + } + + IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); + int offset = isoDescriptors[0].length() * packet; + + return BufferUtils.slice(transfer.buffer(), offset, + isoDescriptors[packet].length()); + } } diff --git a/src/main/java/de/ailis/usb4java/utils/BufferUtils.java b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java index 4a83b9d..8626598 100644 --- a/src/main/java/de/ailis/usb4java/utils/BufferUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java @@ -23,4 +23,21 @@ public final class BufferUtils { return ByteBuffer.allocateDirect(longSize).asLongBuffer(); } + + public static ByteBuffer slice(final ByteBuffer buffer, final int offset, + final int length) + { + int oldPosition = buffer.position(); + int oldLimit = buffer.limit(); + + buffer.position(offset); + buffer.limit(offset + length); + + final ByteBuffer slice = buffer.slice(); + + buffer.position(oldPosition); + buffer.limit(oldLimit); + + return slice; + } } From a47e3cd3c30f90c6f097468b36b2a4b502a989ae Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 11 Jun 2013 18:08:51 +0200 Subject: [PATCH 47/82] Implement the remaining Control Transfer fill functions and the ControlSetup object. Everything is done in Java here as it's much easier and cleaner, since those are only convenience functions/structs. Byte order conversion is conveniently handled by ByteBuffer too, and using slice() we access the same memory all around. Added some final keywords to LibUsb and BufferUtils. --- .../ailis/usb4java/libusb/ControlSetup.java | 84 +++++++++++++++++++ .../java/de/ailis/usb4java/libusb/LibUsb.java | 82 ++++++++++++++---- .../de/ailis/usb4java/utils/BufferUtils.java | 8 +- 3 files changed, 153 insertions(+), 21 deletions(-) create mode 100644 src/main/java/de/ailis/usb4java/libusb/ControlSetup.java diff --git a/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java new file mode 100644 index 0000000..ede48f6 --- /dev/null +++ b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java @@ -0,0 +1,84 @@ +package de.ailis.usb4java.libusb; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +import de.ailis.usb4java.utils.BufferUtils; + +public final class ControlSetup +{ + private final ByteBuffer controlSetup; + + ControlSetup(final ByteBuffer buffer) + { + if (buffer == null) + { + throw new IllegalArgumentException("buffer cannot be null"); + } + + controlSetup = BufferUtils.slice(buffer, 0, LibUsb.CONTROL_SETUP_SIZE); + + // Control Setup (as all of USB) is Little Endian. + controlSetup.order(ByteOrder.LITTLE_ENDIAN); + } + + /** + * USB Control Setup is always 8 bytes long. + * Structured as follows: + * byte 0: bmRequestType + * byte 1: bRequest + * bytes 2-3: wValue (Little Endian) + * bytes 4-5: wIndex (Little Endian) + * bytes 6-7: wLength (Little Endian) + */ + + public byte bmRequestType() + { + return controlSetup.get(0); + } + + public void setBmRequestType(final int bmRequestType) + { + controlSetup.put(0, (byte) bmRequestType); + } + + public byte bRequest() + { + return controlSetup.get(1); + } + + public void setBRequest(final int bRequest) + { + controlSetup.put(1, (byte) bRequest); + } + + public short wValue() + { + return controlSetup.getShort(2); + } + + public void setWValue(final int wValue) + { + controlSetup.putShort(2, (short) wValue); + } + + public short wIndex() + { + return controlSetup.getShort(4); + } + + public void setWIndex(final int wIndex) + { + controlSetup.putShort(4, (short) wIndex); + } + + public short wLength() + { + return controlSetup.getShort(6); + } + + public void setWLength(final int wLength) + { + controlSetup.putShort(6, (short) wLength); + } +} diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index afc45cb..efefb9b 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -190,6 +190,8 @@ public final class LibUsb /** The hasCapability() API is available. */ public static final int CAP_HAS_CAPABILITY = 0x00; + public static final int CONTROL_SETUP_SIZE = 8; + // Device and/or Interface Class codes. /** @@ -1970,9 +1972,51 @@ public final class LibUsb */ public static native int cancelTransfer(final Transfer transfer); - public static void fillBulkTransfer(Transfer transfer, DeviceHandle handle, - int endpoint, ByteBuffer buffer, TransferCallback callback, - Object userData, int timeout) + public static ByteBuffer controlTransferGetData(final Transfer transfer) + { + return BufferUtils.slice(transfer.buffer(), CONTROL_SETUP_SIZE, + transfer.buffer().limit() - CONTROL_SETUP_SIZE); + } + + public static ControlSetup controlTransferGetSetup(final Transfer transfer) + { + return new ControlSetup(transfer.buffer()); + } + + public static void fillControlSetup(final ByteBuffer buffer, + final int bmRequestType, final int bRequest, final int wValue, + final int wIndex, final int wLength) + { + final ControlSetup setup = new ControlSetup(buffer); + setup.setBmRequestType(bmRequestType); + setup.setBRequest(bRequest); + setup.setWValue(wValue); + setup.setWIndex(wIndex); + setup.setWLength(wLength); + } + + public static void fillControlTransfer(final Transfer transfer, + final DeviceHandle handle, final ByteBuffer buffer, + final TransferCallback callback, final Object userData, + final int timeout) + { + transfer.setDevHandle(handle); + transfer.setEndpoint(0); + transfer.setType(TRANSFER_TYPE_CONTROL); + transfer.setTimeout(timeout); + transfer.setBuffer(buffer); + transfer.setUserData(userData); + transfer.setCallback(callback); + + // Set length based on wLength from Control Setup. + final ControlSetup setup = new ControlSetup(buffer); + transfer.setLength(CONTROL_SETUP_SIZE + setup.wLength()); + } + + public static void fillBulkTransfer(final Transfer transfer, + final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final TransferCallback callback, final Object userData, + final int timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); @@ -1983,9 +2027,10 @@ public final class LibUsb transfer.setCallback(callback); } - public static void fillInterruptTransfer(Transfer transfer, - DeviceHandle handle, int endpoint, ByteBuffer buffer, - TransferCallback callback, Object userData, int timeout) + public static void fillInterruptTransfer(final Transfer transfer, + final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final TransferCallback callback, final Object userData, + final int timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); @@ -1996,9 +2041,10 @@ public final class LibUsb transfer.setCallback(callback); } - public static void fillIsoTransfer(Transfer transfer, DeviceHandle handle, - int endpoint, ByteBuffer buffer, int numIsoPackets, - TransferCallback callback, Object userData, int timeout) + public static void fillIsoTransfer(final Transfer transfer, + final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final int numIsoPackets, final TransferCallback callback, + final Object userData, final int timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); @@ -2010,22 +2056,24 @@ public final class LibUsb transfer.setCallback(callback); } - public static void setIsoPacketLengths(Transfer transfer, int length) + public static void setIsoPacketLengths(final Transfer transfer, + final int length) { - for (IsoPacketDescriptor isoDesc: transfer.isoPacketDesc()) + for (final IsoPacketDescriptor isoDesc : transfer.isoPacketDesc()) { isoDesc.setLength(length); } } - public static ByteBuffer getIsoPacketBuffer(Transfer transfer, int packet) + public static ByteBuffer getIsoPacketBuffer(final Transfer transfer, + final int packet) { if (packet >= transfer.numIsoPackets()) { return null; } - IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); + final IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); int offset = 0; for (int i = 0; i < packet; i++) @@ -2037,16 +2085,16 @@ public final class LibUsb isoDescriptors[packet].length()); } - public static ByteBuffer getIsoPacketBufferSimple(Transfer transfer, - int packet) + public static ByteBuffer getIsoPacketBufferSimple(final Transfer transfer, + final int packet) { if (packet >= transfer.numIsoPackets()) { return null; } - IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); - int offset = isoDescriptors[0].length() * packet; + final IsoPacketDescriptor isoDescriptors[] = transfer.isoPacketDesc(); + final int offset = isoDescriptors[0].length() * packet; return BufferUtils.slice(transfer.buffer(), offset, isoDescriptors[packet].length()); diff --git a/src/main/java/de/ailis/usb4java/utils/BufferUtils.java b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java index 8626598..c19c71c 100644 --- a/src/main/java/de/ailis/usb4java/utils/BufferUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/BufferUtils.java @@ -6,8 +6,8 @@ import java.nio.LongBuffer; public final class BufferUtils { - private static int intSize = Integer.SIZE / Byte.SIZE; - private static int longSize = Long.SIZE / Byte.SIZE; + private static final int intSize = Integer.SIZE / Byte.SIZE; + private static final int longSize = Long.SIZE / Byte.SIZE; public static ByteBuffer allocateByteBuffer(final int bytes) { @@ -27,8 +27,8 @@ public final class BufferUtils public static ByteBuffer slice(final ByteBuffer buffer, final int offset, final int length) { - int oldPosition = buffer.position(); - int oldLimit = buffer.limit(); + final int oldPosition = buffer.position(); + final int oldLimit = buffer.limit(); buffer.position(offset); buffer.limit(offset + length); From 275bc37a77903c2635feb49a408bb818ff7aefe2 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 13:38:10 +0200 Subject: [PATCH 48/82] Right now if you add different PollfdListeners to different contexts, only the last one will be remembered, and subsequent callbacks, even from other contexts, will always use that last one. This is obviously unexpected and incorrect, yet cannot be fixed by just adding more data on the C side: you'd have to remember the callback object at the very least, which you could in the user_data field, but you'd have to make it a global reference. Yet, there would be no easy way to later correctly delete that global reference, since to unset the pollfdNotifiers you just pass NULL to the same function again, and you don't get back any data on what was there before. The easiest way to fix this was thus to change to a HashMap, Concurrent since access can be from random threads. The key was chosen to be the Context.hashCode(), as Integer lookup and comparison is fast, and the hashCode depends directly on the contextPointer stored in the Context (which identifies it). This works for sure on 32bit systems, but I'm still concerned about 64bit systems, where a long would probably make more sense, I need to think about it some more. --- src/main/c/src/LibUsb.c | 23 ++++--- .../java/de/ailis/usb4java/libusb/LibUsb.java | 62 +++++++++++++------ .../de/ailis/usb4java/libusb/LibUSBTest.java | 18 +++--- 3 files changed, 65 insertions(+), 38 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index fc762ae..15d8a30 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1047,12 +1047,13 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getNextTimeout) jmethodID method = (*env)->GetMethodID(env, cls, "put", "(IJ)Ljava/nio/LongBuffer;"); (*env)->CallObjectMethod(env, timeout, method, 0, - tv.tv_sec * 1000000 + tv.tv_usec); + (jlong) (tv.tv_sec * 1000000 + tv.tv_usec)); } return result; } -static void LIBUSB_CALL triggerPollfdAdded(int fd, short events, void *user_data) +static void LIBUSB_CALL triggerPollfdAdded(int fd, short events, + void *user_data) { THREAD_BEGIN(env) @@ -1061,9 +1062,10 @@ static void LIBUSB_CALL triggerPollfdAdded(int fd, short events, void *user_data jobject object = (*env)->NewObject(env, fdcls, constructor, fd); jclass cls = (*env)->FindClass(env, PACKAGE_DIR"/LibUsb"); - jmethodID method = (*env)->GetStaticMethodID(env, cls, - "triggerPollfdAdded", "(Ljava/io/FileDescriptor;I)V"); - (*env)->CallStaticVoidMethod(env, cls, method, object, events); + jmethodID method = (*env)->GetStaticMethodID(env, cls, "triggerPollfdAdded", + "(Ljava/io/FileDescriptor;II)V"); + (*env)->CallStaticVoidMethod(env, cls, method, object, (jint) events, + (jint) (intptr_t) user_data); THREAD_END } @@ -1078,25 +1080,26 @@ static void LIBUSB_CALL triggerPollfdRemoved(int fd, void *user_data) jclass cls = (*env)->FindClass(env, PACKAGE_DIR"/LibUsb"); jmethodID method = (*env)->GetStaticMethodID(env, cls, - "triggerPollfdRemoved", "(Ljava/io/FileDescriptor;)V"); - (*env)->CallStaticVoidMethod(env, cls, method, object); + "triggerPollfdRemoved", "(Ljava/io/FileDescriptor;I)V"); + (*env)->CallStaticVoidMethod(env, cls, method, object, + (jint) (intptr_t) user_data); THREAD_END } /** - * void setPollfdNotifiers(Context) + * void setPollfdNotifiers(Context, int) */ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) ( - JNIEnv *env, jclass class, jobject context + JNIEnv *env, jclass class, jobject context, jint context_hash ) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, - NULL); + (void *) (intptr_t) context_hash); } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index efefb9b..871f797 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -15,6 +15,10 @@ import java.io.FileDescriptor; import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.nio.LongBuffer; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import org.apache.commons.lang3.tuple.ImmutablePair; import de.ailis.usb4java.utils.BufferUtils; @@ -469,11 +473,11 @@ public final class LibUsb /** Device sent more data than requested. */ public static final int TRANSFER_OVERFLOW = 6; - /** The currently set pollfd listener. */ - private static PollfdListener pollfdListener; - - /** The currently set pollfd listener user data. */ - private static Object pollfdListenerUserData; + /** + * pollfd listeners (to support different listeners for different contexts). + */ + private static final ConcurrentMap> pollfdListeners = + new ConcurrentHashMap>(); static { @@ -1819,19 +1823,30 @@ public final class LibUsb public static void setPollfdNotifiers(final Context context, final PollfdListener listener, final Object userData) { - if (listener == null) + int contextHash; + + if (context == null) { - unsetPollfdNotifiers(context); + contextHash = 31; // Manual result of Context.hashCode() for 0. } else { - setPollfdNotifiers(context); + contextHash = context.hashCode(); } - // Once we know the native calls have gone through, update the - // references. - pollfdListener = listener; - pollfdListenerUserData = userData; + if (listener == null) + { + unsetPollfdNotifiers(context); + + pollfdListeners.remove(contextHash); + } + else + { + setPollfdNotifiers(context, contextHash); + + pollfdListeners.put(contextHash, + new ImmutablePair(listener, userData)); + } } /** @@ -1843,11 +1858,15 @@ public final class LibUsb * @param events * events to monitor for, see libusb_pollfd for a description */ - static void triggerPollfdAdded(final FileDescriptor fd, final int events) + static void triggerPollfdAdded(final FileDescriptor fd, final int events, + final int contextHash) { - if (pollfdListener != null) + final ImmutablePair listener = pollfdListeners + .get(contextHash); + + if (listener != null) { - pollfdListener.pollfdAdded(fd, events, pollfdListenerUserData); + listener.left.pollfdAdded(fd, events, listener.right); } } @@ -1857,11 +1876,15 @@ public final class LibUsb * @param fd * The removed file descriptor. */ - static void triggerPollfdRemoved(final FileDescriptor fd) + static void triggerPollfdRemoved(final FileDescriptor fd, + final int contextHash) { - if (pollfdListener != null) + final ImmutablePair listener = pollfdListeners + .get(contextHash); + + if (listener != null) { - pollfdListener.pollfdRemoved(fd, pollfdListenerUserData); + listener.left.pollfdRemoved(fd, listener.right); } } @@ -1872,7 +1895,8 @@ public final class LibUsb * @param context * The context to operate on, or NULL for the default context */ - static native void setPollfdNotifiers(final Context context); + static native void setPollfdNotifiers(final Context context, + final int contextHash); /** * Tells libusbx to stop informing this class about pollfd additions and diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index 7785e57..5526266 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -161,7 +161,7 @@ public class LibUSBTest assertNotNull(version); assertEquals(1, version.major()); assertEquals(0, version.minor()); - assertTrue(version.micro() > 0 && version.micro() < 100); + assertTrue((version.micro() > 0) && (version.micro() < 100)); assertNotNull(version.rc()); assertTrue(version.toString().startsWith("1.0.")); } @@ -176,7 +176,7 @@ public class LibUSBTest assumeUsbTestsEnabled(); assertEquals(LibUsb.SUCCESS, LibUsb.init(null)); LibUsb.exit(null); - + try { // Double-exit should throw exception @@ -186,7 +186,7 @@ public class LibUSBTest catch (IllegalStateException e) { // Expected behavior - } + } } /** @@ -200,7 +200,7 @@ public class LibUSBTest Context context = new Context(); assertEquals(LibUsb.SUCCESS, LibUsb.init(context)); LibUsb.exit(context); - + try { LibUsb.exit(context); @@ -880,7 +880,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.setPollfdNotifiers(context); + LibUsb.setPollfdNotifiers(context, context.hashCode()); } /** @@ -910,7 +910,7 @@ public class LibUSBTest LibUsb.setPollfdNotifiers(context, listener, "test"); FileDescriptor fd = new FileDescriptor(); - LibUsb.triggerPollfdAdded(fd, 53); + LibUsb.triggerPollfdAdded(fd, 53, context.hashCode()); assertEquals(53, listener.addedEvents); assertSame(fd, listener.addedFd); assertSame("test", listener.addedUserData); @@ -920,7 +920,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdRemoved(fd); + LibUsb.triggerPollfdRemoved(fd, context.hashCode()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); @@ -931,7 +931,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdAdded(fd, 53); + LibUsb.triggerPollfdAdded(fd, 53, context.hashCode()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); @@ -941,7 +941,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdRemoved(fd); + LibUsb.triggerPollfdRemoved(fd, context.hashCode()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); From 81eea492136d9e4c25ffd3ff91843e73e70df4ab Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 14:07:42 +0200 Subject: [PATCH 49/82] Change to long, this makes sure there will be no collisions or problems in the HashMap even on 64bits. On 32bits the pointer will only have at most 32bits set, so converting it to a void * (which also is 32bits) will not actually loose any information. --- src/main/c/src/LibUsb.c | 14 ++++---- .../java/de/ailis/usb4java/libusb/LibUsb.java | 32 +++++++++++-------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 15d8a30..99e22ef 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1063,9 +1063,9 @@ static void LIBUSB_CALL triggerPollfdAdded(int fd, short events, jclass cls = (*env)->FindClass(env, PACKAGE_DIR"/LibUsb"); jmethodID method = (*env)->GetStaticMethodID(env, cls, "triggerPollfdAdded", - "(Ljava/io/FileDescriptor;II)V"); + "(Ljava/io/FileDescriptor;IJ)V"); (*env)->CallStaticVoidMethod(env, cls, method, object, (jint) events, - (jint) (intptr_t) user_data); + (jlong) (intptr_t) user_data); THREAD_END } @@ -1080,26 +1080,26 @@ static void LIBUSB_CALL triggerPollfdRemoved(int fd, void *user_data) jclass cls = (*env)->FindClass(env, PACKAGE_DIR"/LibUsb"); jmethodID method = (*env)->GetStaticMethodID(env, cls, - "triggerPollfdRemoved", "(Ljava/io/FileDescriptor;I)V"); + "triggerPollfdRemoved", "(Ljava/io/FileDescriptor;J)V"); (*env)->CallStaticVoidMethod(env, cls, method, object, - (jint) (intptr_t) user_data); + (jlong) (intptr_t) user_data); THREAD_END } /** - * void setPollfdNotifiers(Context, int) + * void setPollfdNotifiers(Context, long) */ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, setPollfdNotifiers) ( - JNIEnv *env, jclass class, jobject context, jint context_hash + JNIEnv *env, jclass class, jobject context, jlong context_id ) { libusb_context *ctx = unwrapContext(env, context); if (!ctx && context) return; libusb_set_pollfd_notifiers(ctx, &triggerPollfdAdded, &triggerPollfdRemoved, - (void *) (intptr_t) context_hash); + (void *) (intptr_t) context_id); } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 871f797..32a887d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -476,8 +476,8 @@ public final class LibUsb /** * pollfd listeners (to support different listeners for different contexts). */ - private static final ConcurrentMap> pollfdListeners = - new ConcurrentHashMap>(); + private static final ConcurrentMap> pollfdListeners = + new ConcurrentHashMap>(); static { @@ -1823,28 +1823,28 @@ public final class LibUsb public static void setPollfdNotifiers(final Context context, final PollfdListener listener, final Object userData) { - int contextHash; + long contextId; if (context == null) { - contextHash = 31; // Manual result of Context.hashCode() for 0. + contextId = 0; // NULL pointer has value 0. } else { - contextHash = context.hashCode(); + contextId = context.getPointer(); } if (listener == null) { unsetPollfdNotifiers(context); - pollfdListeners.remove(contextHash); + pollfdListeners.remove(contextId); } else { - setPollfdNotifiers(context, contextHash); + setPollfdNotifiers(context, contextId); - pollfdListeners.put(contextHash, + pollfdListeners.put(contextId, new ImmutablePair(listener, userData)); } } @@ -1857,12 +1857,14 @@ public final class LibUsb * The new file descriptor, * @param events * events to monitor for, see libusb_pollfd for a description + * @param contextId + * A unique identifier for the originating context. */ static void triggerPollfdAdded(final FileDescriptor fd, final int events, - final int contextHash) + final long contextId) { final ImmutablePair listener = pollfdListeners - .get(contextHash); + .get(contextId); if (listener != null) { @@ -1875,12 +1877,14 @@ public final class LibUsb * * @param fd * The removed file descriptor. + * @param contextId + * A unique identifier for the originating context. */ static void triggerPollfdRemoved(final FileDescriptor fd, - final int contextHash) + final long contextId) { final ImmutablePair listener = pollfdListeners - .get(contextHash); + .get(contextId); if (listener != null) { @@ -1894,9 +1898,11 @@ public final class LibUsb * * @param context * The context to operate on, or NULL for the default context + * @param contextId + * A unique identifier for the given context. */ static native void setPollfdNotifiers(final Context context, - final int contextHash); + final long contextId); /** * Tells libusbx to stop informing this class about pollfd additions and From 032b7487d4ce045c9c2e5ed801baa7186c93cc33 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 14:44:24 +0200 Subject: [PATCH 50/82] Add a few capability constants that were missing, from libusbx-1.0.15. --- .../java/de/ailis/usb4java/libusb/LibUsb.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index 32a887d..a48f0a3 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -192,7 +192,24 @@ public final class LibUsb // library supports a given capability by calling hasCapability(). /** The hasCapability() API is available. */ - public static final int CAP_HAS_CAPABILITY = 0x00; + public static final int CAP_HAS_CAPABILITY = 0x0000; + + /** Hotplug support is available. */ + public static final int CAP_HAS_HOTPLUG = 0x0001; + + /** + * The library can access HID devices without requiring user intervention. + * Note that before being able to actually access an HID device, you may + * still have to call additional libusbx functions such as + * {@link #detachKernelDriver(DeviceHandle, int)}. + */ + public static final int CAP_HAS_HID_ACCESS = 0x0100; + + /** + * The library supports detaching of the default USB driver, using + * {@link #detachKernelDriver(DeviceHandle, int)}, if one is set by the OS. + */ + public static final int CAP_SUPPORTS_DETACH_KERNEL_DRIVER = 0x0101; public static final int CONTROL_SETUP_SIZE = 8; From ea680a9be79dbdb11aba17dce9feba8e16a481b4 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 14:45:08 +0200 Subject: [PATCH 51/82] Add linux and windows 64bit updated builds for more testing (linux works at a basic level). --- .../libusb/linux-x86_64/libusb4java.so | Bin 130344 -> 138520 bytes .../libusb/windows-x86/libusb4java.dll | Bin 59435 -> 78068 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 149802 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 58006 -> 86686 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index 765e8deac64fdc6c7030c547223a15f134472d64..be74e3fdf2480e890758ce8afb3326bbbd5e48f5 100644 GIT binary patch literal 138520 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 literal 130344 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 z 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 HcOU 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 DO{fLq literal 59435 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

?S!rS$UY4;T!*4pN-F!82&llnqXyCtlI#^tn@9B za{hn!*9RJ>#p3tckRrj~P{2`4>{QHTU=nqCFj-`)b(lMV*{Q=k3(RaCW-~CIx{`6p zBwMe;;C4ASL&tRi=%kve&q!d_=(wig+iN<^JbZgr$8`%Zhje+K!M7K6m==6n(^D&J zCos?I@*KgpHXSA&a;!R87vS3>9p(yrOVwe>HrsUNR01@4MhqXG)L0}%!arKYG-Of79rNGqdFqObqbeP`)lY-_@+u{jesQxPEHDIVFDrP@0 z6Lpv#@eDUfYV-61W}ps}3Cv&}W;QTII?OU)8g-a8z^vC{HUhIshxr_sEjmoMZiv`A z%!R+%!=bGHt2126?T%nD$Z>oDtpp+ATeI{y`zUAjC6fLWr$B=x`@vpRjw1xDYdBY|0~ z<0=OxUx#S~W}r^`6Tr;X#j)3b*{0+A6d3xI7gc9JFzpJaH~5D*=Ssf=kM-w@`89U= zHqXE%PVAuRGw4=>>Cmd49BT14s0_`DMnPZ!{4k1Gc?lxYa;mhP7ewOg-pbmPO4cvH z(;+Io!c-)!J!)1KgY@OE(DLo)yq=XUR3?WGLR$061*x* zv!}p0!6YrA*d18DqP1`#$Z*3#6)5c|=oKR)s0+|)UZI?B4O3l1RP_`2_)CyVgYpdw zy&S#@DlOAVOYuRX)aCsk5I6r_bkQG#wMF}SJ7BF0PW!TI$j z63eYY@#)AXS>DTCDK$M+T2 z5<7@?JNZVP%Yp3>#XBww*fk9*ij)qqlM|#i<BIAc#-w%!tl(o!>?E$q?Vnf%?$KE=508Y1CX+t>CFq(?m@$Ts2w1+rW)lX^9Sjo>tFH) zj%K9cL#Z4hC1IHvc1M7w`hAQb`FbG~HJoK?CS|`|v~kE220@A&Y&`|#BZt>*9dW_D hM%41b&5x=9uU1t*&I^lb-90$=g*pqNDkjbh{6D79A3gv8 diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index 0c2832510733f4ce60ad0c7288f1c012f77ab137..90f8a5d1963aa07de4094f886145abe6e57fbb3e 100644 GIT binary patch literal 171636 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 lJCND1W*l)j&q<pji84JM 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 YQ>ZO8_m~#3{55HDc}5W~{3!VU0U0qxrT_o{ From 0ba3d8869fadfbc52af520d22efbab0fab100b38 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 18:45:31 +0200 Subject: [PATCH 52/82] Fixed test to also use the pointer instead of the Context hashCode. --- src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index 5526266..3fa58cb 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -880,7 +880,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.setPollfdNotifiers(context, context.hashCode()); + LibUsb.setPollfdNotifiers(context, context.getPointer()); } /** @@ -910,7 +910,7 @@ public class LibUSBTest LibUsb.setPollfdNotifiers(context, listener, "test"); FileDescriptor fd = new FileDescriptor(); - LibUsb.triggerPollfdAdded(fd, 53, context.hashCode()); + LibUsb.triggerPollfdAdded(fd, 53, context.getPointer()); assertEquals(53, listener.addedEvents); assertSame(fd, listener.addedFd); assertSame("test", listener.addedUserData); @@ -920,7 +920,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdRemoved(fd, context.hashCode()); + LibUsb.triggerPollfdRemoved(fd, context.getPointer()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); @@ -931,7 +931,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdAdded(fd, 53, context.hashCode()); + LibUsb.triggerPollfdAdded(fd, 53, context.getPointer()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); @@ -941,7 +941,7 @@ public class LibUSBTest listener.reset(); fd = new FileDescriptor(); - LibUsb.triggerPollfdRemoved(fd, context.hashCode()); + LibUsb.triggerPollfdRemoved(fd, context.getPointer()); assertEquals(0, listener.addedEvents); assertNull(listener.addedFd); assertNull(listener.addedUserData); From a4d3ab69da28a453d34fff351780ecaf23d02f42 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 21:39:02 +0200 Subject: [PATCH 53/82] Destroying the default context twice, even if it is refcounted, results in a segfault. Fix submitted to libusbx as pull request #116. Also fix this inside the Java wrapper, by adding our own refcount (similar to what was in original usb4java, but allowing multiple calls with the default context), and making the access to said variable thread-safe. Once libusbx fixes this, the above code can be removed. --- src/main/c/src/LibUsb.c | 28 ++++++++++++------- .../java/de/ailis/usb4java/libusb/LibUsb.java | 4 +-- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 99e22ef..748cf64 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -23,6 +23,8 @@ #include "ConfigDescriptor.h" #include "Transfer.h" +static int defaultContextRefcnt = 0; + /** * Version getVersion() */ @@ -44,7 +46,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, init) { if (!context) { - return libusb_init(NULL); + int result = libusb_init(NULL); + if (result == LIBUSB_SUCCESS) defaultContextRefcnt++; + return result; } else { @@ -65,19 +69,23 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, exit) JNIEnv *env, jclass class, jobject context ) { - if (!context) - { - libusb_exit(NULL); - } - else - { - libusb_context *ctx = unwrapContext(env, context); - if (!ctx) return; + if (!context) + { + if (defaultContextRefcnt <= 0) return; + + libusb_exit(NULL); + + defaultContextRefcnt--; + } + else + { + libusb_context *ctx = unwrapContext(env, context); + if (!ctx) return; libusb_exit(ctx); resetContext(env, context); - } + } } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index a48f0a3..cceac40 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -525,7 +525,7 @@ public final class LibUsb * * @see Contexts */ - public static native int init(final Context context); + public static synchronized native int init(final Context context); /** * Deinitialize libusb. @@ -537,7 +537,7 @@ public final class LibUsb * The {@link Context} to deinitialize, or NULL for the default * context. */ - public static native void exit(final Context context); + public static synchronized native void exit(final Context context); /** * Set log message verbosity. From 5b58cb0302f3c3c684712b7b28adf1dd0e5b1dd8 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 22:22:58 +0200 Subject: [PATCH 54/82] Issue expected exception when default context refcount is zero or smaller. Make sure that returning a new reference always leads to a new Java object being created, else freeing/unref'ing that one would lead to the reset of the original object too. Furthermore, ensure that getDevice also increments the reference count, since if you then free it, which is usual and not forbidden (libusbx docs just tell you are not obligated to unref it), the reference count would be wrong and lead to a segfault. This way it would lead at most to keeping a device around, instead of segfaulting. Still, always free your references!!! --- src/main/c/src/LibUsb.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 748cf64..97e556f 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -71,7 +71,10 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, exit) { if (!context) { - if (defaultContextRefcnt <= 0) return; + if (defaultContextRefcnt <= 0) { + illegalState(env, "default context is not initialized"); + return; + } libusb_exit(NULL); @@ -287,8 +290,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, refDevice) libusb_device *dev = unwrapDevice(env, device); if (!dev) return NULL; - libusb_ref_device(dev); - return device; + return wrapDevice(env, libusb_ref_device(dev)); } /** @@ -371,7 +373,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getDevice) libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return NULL; - return wrapDevice(env, libusb_get_device(dev_handle)); + return wrapDevice(env, libusb_ref_device(libusb_get_device(dev_handle))); } /** From 8967434994b27ecdc051e8e8f43f5bd0fcf5cbbd Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 23:09:58 +0200 Subject: [PATCH 55/82] Fix descriptor dumps. Forgot to shift the masked values, other minor changes. --- .../java/de/ailis/usb4java/utils/DescriptorUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java index c170cdc..61ef83c 100644 --- a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java @@ -213,7 +213,7 @@ public final class DescriptorUtils descriptor.bConfigurationValue() & 0xff, descriptor.iConfiguration() & 0xff, String.format("0x%02x", descriptor.bmAttributes() & 0xff), - ((descriptor.bmAttributes() & 64) == 0) ? ("Bus Powered") + ((descriptor.bmAttributes() & 64) == 0) ? ("(Bus Powered)") : ("Self Powered"), ((descriptor.bmAttributes() & 32) == 0) ? ("") : String.format(" Remote Wakeup%n"), @@ -319,7 +319,7 @@ public final class DescriptorUtils */ public static String getSynchTypeName(final int bmAttributes) { - switch (bmAttributes & LibUsb.ISO_SYNC_TYPE_ASYNC) + switch ((bmAttributes & LibUsb.ISO_SYNC_TYPE_MASK) >> 2) { case LibUsb.ISO_SYNC_TYPE_NONE: return "None"; @@ -343,7 +343,7 @@ public final class DescriptorUtils */ public static String getUsageTypeName(final int bmAttributes) { - switch (bmAttributes & LibUsb.ISO_USAGE_TYPE_MASK) + switch ((bmAttributes & LibUsb.ISO_USAGE_TYPE_MASK) >> 4) { case LibUsb.ISO_USAGE_TYPE_DATA: return "Data"; @@ -351,6 +351,8 @@ public final class DescriptorUtils return "Feedback"; case LibUsb.ISO_USAGE_TYPE_IMPLICIT: return "Implicit Feedback Data"; + case 3: // b11 is considered "Reserved" according to USB 3.0 spec. + return "Reserved"; default: return "Unknown"; } From b3e261f0508c5cda92db8a684975015b95056124 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Wed, 12 Jun 2013 23:18:39 +0200 Subject: [PATCH 56/82] Fix tests: use direct int buffers where needed, it's Implicit and not Explicit, the class 5 is known. Setting devHandle or buffer to NULL in Transfer is not supported (doesn't make sense at all...). --- .../java/de/ailis/usb4java/libusb/LibUSBTest.java | 5 +++-- .../java/de/ailis/usb4java/libusb/TransferTest.java | 13 +++++++++++-- .../ailis/usb4java/utils/DescriptorUtilsTest.java | 12 ++++++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index 3fa58cb..c54d0b1 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -21,6 +21,7 @@ import java.nio.LongBuffer; import org.junit.Test; import de.ailis.usb4java.libusb.mocks.PollfdListenerMock; +import de.ailis.usb4java.utils.BufferUtils; /** * Tests the {@link LibUsb} class. @@ -796,7 +797,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.handleEventsTimeoutCompleted(context, 53, IntBuffer.allocate(1)); + LibUsb.handleEventsTimeoutCompleted(context, 53, BufferUtils.allocateIntBuffer()); } /** @@ -832,7 +833,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.handleEventsCompleted(context, IntBuffer.allocate(1)); + LibUsb.handleEventsCompleted(context, BufferUtils.allocateIntBuffer()); } /** diff --git a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java index 62ab62a..df7a478 100644 --- a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java @@ -122,8 +122,17 @@ public class TransferTest assertNotSame(handle, transfer.devHandle()); assertNotEquals(handle2, transfer.devHandle()); assertEquals(handle, transfer.devHandle()); - transfer.setDevHandle(null); - assertNull(transfer.devHandle()); + + try + { + transfer.setDevHandle(null); + fail("Setting devHandle to null should throw IllegalArgumentException"); + } + catch (IllegalArgumentException e) + { + // Expected behavior + } + LibUsb.freeTransfer(transfer); } diff --git a/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java b/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java index a7f5fd6..b9c32d9 100644 --- a/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java +++ b/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java @@ -68,7 +68,7 @@ public class DescriptorUtilsTest { assertEquals("Data", DescriptorUtils.getUsageTypeName(0)); assertEquals("Feedback", DescriptorUtils.getUsageTypeName(16)); - assertEquals("Explicit Feedback Data", + assertEquals("Implicit Feedback Data", DescriptorUtils.getUsageTypeName(32)); assertEquals("Reserved", DescriptorUtils.getUsageTypeName(48)); } @@ -85,7 +85,7 @@ public class DescriptorUtilsTest assertEquals("Bulk", DescriptorUtils.getTransferTypeName(2)); assertEquals("Interrupt", DescriptorUtils.getTransferTypeName(3)); } - + /** * Tests the {@link DescriptorUtils#getUSBClassName(int)} method. */ @@ -178,7 +178,7 @@ public class DescriptorUtilsTest (byte) 7, (byte) 8, (byte) 9, (byte) 10, (byte) 11, (byte) 12, (byte) 13), "Manufacturer", "Product", "Serial")); } - + /** * Tests the * {@link DescriptorUtils#dump(javax.usb.UsbConfigurationDescriptor)} @@ -248,7 +248,7 @@ public class DescriptorUtilsTest (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 0x20, (byte) 7))); } - + /** * Tests the {@link DescriptorUtils#dump(javax.usb.UsbInterfaceDescriptor)} * method. @@ -262,7 +262,7 @@ public class DescriptorUtilsTest + " bInterfaceNumber 2\n" + " bAlternateSetting 3\n" + " bNumEndpoints 4\n" - + " bInterfaceClass 5 Unknown\n" + + " bInterfaceClass 5 Physical\n" + " bInterfaceSubClass 6\n" + " bInterfaceProtocol 7\n" + " iInterface 8", @@ -312,7 +312,7 @@ public class DescriptorUtilsTest DescriptorUtils.dump(new SimpleUsbEndpointDescriptor((byte) 0, (byte) 1, (byte) 0x82, (byte) 3, (byte) 4, (byte) 5))); } - + /** * Ensure constructor is private. * From 95ee591d46c54ed52b30f154895b223103e816b1 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 13 Jun 2013 12:59:42 +0200 Subject: [PATCH 57/82] Remove memcpy wrap stuff to support old, broken systems... memcpy is never used here, only libusb uses it and there they don't support it in any particular way, so I don't believe there should be a workaround for this that forces memcpy to be slower on all x86_64 linux systems. Enable silent building and C99 support. Enable lots of warnings and don't enable Werror, as there are warnings in libusb.h. Fix all warnings. Add const to exceptions. Make it possible to pass null to setDevHandle and setBuffer in Transfer now. --- src/main/c/build/linux-x86_64.sh | 3 +- src/main/c/configure.ac | 2 + src/main/c/src/ConfigDescriptor.c | 16 ++--- src/main/c/src/DeviceDescriptor.c | 28 ++++----- src/main/c/src/DeviceList.c | 2 +- src/main/c/src/DeviceList.h | 2 +- src/main/c/src/EndpointDescriptor.c | 16 ++--- src/main/c/src/InterfaceDescriptor.c | 18 +++--- src/main/c/src/IsoPacketDescriptor.c | 6 +- src/main/c/src/LibUsb.c | 63 ++++++++++--------- src/main/c/src/Makefile.am | 3 +- src/main/c/src/Transfer.c | 30 +++++---- src/main/c/src/usb4java.c | 4 +- src/main/c/src/usb4java.h | 4 +- src/main/c/src/wrappers.c | 15 ----- .../de/ailis/usb4java/libusb/Transfer.java | 11 +++- 16 files changed, 111 insertions(+), 112 deletions(-) delete mode 100644 src/main/c/src/wrappers.c diff --git a/src/main/c/build/linux-x86_64.sh b/src/main/c/build/linux-x86_64.sh index 8604fe7..e1b369e 100755 --- a/src/main/c/build/linux-x86_64.sh +++ b/src/main/c/build/linux-x86_64.sh @@ -9,9 +9,8 @@ set -e OS="linux" ARCH="x86_64" HOST="$ARCH-$OS-gnu" -CFLAGS="-m64 -Wl,--wrap=memcpy" +CFLAGS="-m64" LIBUSB_CONFIG="--disable-shared" USB4JAVA_LIBS="-lrt" -USB4JAVA_CFLAGS="-DWRAP_MEMCPY" build diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index 557863c..1721999 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -1,12 +1,14 @@ AC_PREREQ([2.61]) AC_INIT([libusb4java], [1.0.0], [k@ailis.de]) AM_INIT_AUTOMAKE([foreign -Wall -Werror -Wno-extra-portability]) +AM_SILENT_RULES(yes) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/usb4java.h]) AC_LANG_C AC_PROG_CC +AC_PROG_CC_STDC AM_PROG_LIBTOOL AC_CHECK_JAVA AC_CHECK_SIZEOF([void *]) diff --git a/src/main/c/src/ConfigDescriptor.c b/src/main/c/src/ConfigDescriptor.c index aa23a84..c95059f 100644 --- a/src/main/c/src/ConfigDescriptor.c +++ b/src/main/c/src/ConfigDescriptor.c @@ -35,7 +35,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bLength) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->bLength; + return (jbyte) config->bLength; } /** @@ -49,7 +49,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bDescriptorType) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->bDescriptorType; + return (jbyte) config->bDescriptorType; } /** @@ -63,7 +63,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(ConfigDescriptor, wTotalLength) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->wTotalLength; + return (jshort) config->wTotalLength; } /** @@ -77,7 +77,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bNumInterfaces) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->bNumInterfaces; + return (jbyte) config->bNumInterfaces; } /** @@ -91,7 +91,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bConfigurationValue) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->bConfigurationValue; + return (jbyte) config->bConfigurationValue; } /** @@ -105,7 +105,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, iConfiguration) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->iConfiguration; + return (jbyte) config->iConfiguration; } /** @@ -119,7 +119,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bmAttributes) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->bmAttributes; + return (jbyte) config->bmAttributes; } /** @@ -133,7 +133,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(ConfigDescriptor, bMaxPower) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return 0; - return config->MaxPower; + return (jbyte) config->MaxPower; } /** diff --git a/src/main/c/src/DeviceDescriptor.c b/src/main/c/src/DeviceDescriptor.c index 7200052..eb1e1df 100644 --- a/src/main/c/src/DeviceDescriptor.c +++ b/src/main/c/src/DeviceDescriptor.c @@ -34,7 +34,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bLength) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bLength; + return (jbyte) device->bLength; } /** @@ -48,7 +48,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDescriptorType) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bDescriptorType; + return (jbyte) device->bDescriptorType; } /** @@ -62,7 +62,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, bcdUSB) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bcdUSB; + return (jshort) device->bcdUSB; } /** @@ -76,7 +76,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceClass) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bDeviceClass; + return (jbyte) device->bDeviceClass; } /** @@ -90,7 +90,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceSubClass) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bDeviceSubClass; + return (jbyte) device->bDeviceSubClass; } /** @@ -104,7 +104,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bDeviceProtocol) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bDeviceProtocol; + return (jbyte) device->bDeviceProtocol; } /** @@ -118,7 +118,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bMaxPacketSize0) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bMaxPacketSize0; + return (jbyte) device->bMaxPacketSize0; } /** @@ -132,7 +132,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, idVendor) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->idVendor; + return (jshort) device->idVendor; } /** @@ -146,7 +146,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, idProduct) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->idProduct; + return (jshort) device->idProduct; } /** @@ -160,7 +160,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(DeviceDescriptor, bcdDevice) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bcdDevice; + return (jshort) device->bcdDevice; } @@ -175,7 +175,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iManufacturer) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->iManufacturer; + return (jbyte) device->iManufacturer; } /** @@ -189,7 +189,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iProduct) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->iProduct; + return (jbyte) device->iProduct; } /** @@ -201,7 +201,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, iSerialNumber) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->iSerialNumber; + return (jbyte) device->iSerialNumber; } /** @@ -215,5 +215,5 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(DeviceDescriptor, bNumConfigurations) struct libusb_device_descriptor *device = unwrapDeviceDescriptor(env, this); if (!device) return 0; - return device->bNumConfigurations; + return (jbyte) device->bNumConfigurations; } diff --git a/src/main/c/src/DeviceList.c b/src/main/c/src/DeviceList.c index 4247b65..cdbfe56 100644 --- a/src/main/c/src/DeviceList.c +++ b/src/main/c/src/DeviceList.c @@ -6,7 +6,7 @@ #include "DeviceList.h" #include "Device.h" -void setDeviceList(JNIEnv* env, libusb_device* const * list, int size, jobject object) +void setDeviceList(JNIEnv* env, libusb_device* const * list, jint size, jobject object) { SET_POINTER(env, list, object, "deviceListPointer"); diff --git a/src/main/c/src/DeviceList.h b/src/main/c/src/DeviceList.h index 817b306..23df636 100644 --- a/src/main/c/src/DeviceList.h +++ b/src/main/c/src/DeviceList.h @@ -8,7 +8,7 @@ #include "usb4java.h" -void setDeviceList(JNIEnv*, libusb_device* const *, int, jobject); +void setDeviceList(JNIEnv*, libusb_device* const *, jint, jobject); libusb_device** unwrapDeviceList(JNIEnv*, jobject); void resetDeviceList(JNIEnv*, jobject); diff --git a/src/main/c/src/EndpointDescriptor.c b/src/main/c/src/EndpointDescriptor.c index d95046b..7e40a56 100644 --- a/src/main/c/src/EndpointDescriptor.c +++ b/src/main/c/src/EndpointDescriptor.c @@ -44,7 +44,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bLength) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bLength; + return (jbyte) ep->bLength; } /** @@ -58,7 +58,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bDescriptorType) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bDescriptorType; + return (jbyte) ep->bDescriptorType; } /** @@ -72,7 +72,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bEndpointAddress) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bEndpointAddress; + return (jbyte) ep->bEndpointAddress; } /** @@ -86,7 +86,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bmAttributes) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bmAttributes; + return (jbyte) ep->bmAttributes; } /** @@ -100,7 +100,7 @@ JNIEXPORT jshort JNICALL METHOD_NAME(EndpointDescriptor, wMaxPacketSize) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->wMaxPacketSize; + return (jshort) ep->wMaxPacketSize; } /** @@ -114,7 +114,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bInterval) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bInterval; + return (jbyte) ep->bInterval; } /** @@ -128,7 +128,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bRefresh) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bRefresh; + return (jbyte) ep->bRefresh; } /** @@ -142,7 +142,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(EndpointDescriptor, bSynchAddress) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return 0; - return ep->bSynchAddress; + return (jbyte) ep->bSynchAddress; } /** diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index 297b666..d2834d5 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -47,7 +47,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bLength) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bLength; + return (jbyte) interface->bLength; } /** @@ -62,7 +62,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bDescriptorType) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bDescriptorType; + return (jbyte) interface->bDescriptorType; } /** @@ -77,7 +77,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceNumber) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bInterfaceNumber; + return (jbyte) interface->bInterfaceNumber; } /** @@ -92,7 +92,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bAlternateSetting) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bAlternateSetting; + return (jbyte) interface->bAlternateSetting; } /** @@ -107,7 +107,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bNumEndpoints) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bNumEndpoints; + return (jbyte) interface->bNumEndpoints; } /** @@ -122,7 +122,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceClass) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bInterfaceClass; + return (jbyte) interface->bInterfaceClass; } /** @@ -137,7 +137,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceSubClass) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bInterfaceSubClass; + return (jbyte) interface->bInterfaceSubClass; } /** @@ -152,7 +152,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, bInterfaceProtocol) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->bInterfaceProtocol; + return (jbyte) interface->bInterfaceProtocol; } /** @@ -167,7 +167,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(InterfaceDescriptor, iInterface) unwrapInterfaceDescriptor(env, this); if (!interface) return 0; - return interface->iInterface; + return (jbyte) interface->iInterface; } /** diff --git a/src/main/c/src/IsoPacketDescriptor.c b/src/main/c/src/IsoPacketDescriptor.c index aabdb08..5bd5b72 100644 --- a/src/main/c/src/IsoPacketDescriptor.c +++ b/src/main/c/src/IsoPacketDescriptor.c @@ -40,7 +40,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(IsoPacketDescriptor, length) unwrapIsoPacketDescriptor(env, this); if (!isopacket) return 0; - return isopacket->length; + return (jint) isopacket->length; } /** @@ -55,7 +55,7 @@ JNIEXPORT void JNICALL METHOD_NAME(IsoPacketDescriptor, setLength) unwrapIsoPacketDescriptor(env, this); if (!isopacket) return; - isopacket->length = length; + isopacket->length = (unsigned int) length; } /** @@ -70,7 +70,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(IsoPacketDescriptor, actualLength) unwrapIsoPacketDescriptor(env, this); if (!isopacket) return 0; - return isopacket->actual_length; + return (jint) isopacket->actual_length; } /** diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 97e556f..6da314a 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -120,8 +120,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceList) libusb_device **list; ssize_t result = libusb_get_device_list(ctx, &list); - if (result >= 0) setDeviceList(env, list, result, deviceList); - return result; + if (result >= 0) setDeviceList(env, list, (jint) result, deviceList); + return (jint) result; } /** @@ -193,7 +193,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getPortPath) #if defined(LIBUSBX_API_VERSION) jlong path_size = (*env)->GetDirectBufferCapacity(env, path); - return libusb_get_port_path(ctx, dev, path_ptr, path_size); + return libusb_get_port_path(ctx, dev, path_ptr, (uint8_t) path_size); #else return 0; #endif @@ -260,7 +260,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxPacketSize) libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - return libusb_get_max_packet_size(dev, endpoint); + return libusb_get_max_packet_size(dev, (unsigned char) endpoint); } /** @@ -275,7 +275,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxIsoPacketSize) libusb_device *dev = unwrapDevice(env, device); if (!dev) return 0; - return libusb_get_max_iso_packet_size(dev, endpoint); + return libusb_get_max_iso_packet_size(dev, (unsigned char) endpoint); } /** @@ -342,7 +342,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, openDeviceWithVidPid) if (!ctx && context) return NULL; return wrapDeviceHandle(env, libusb_open_device_with_vid_pid( - ctx, vendorId, productId)); + ctx, (uint16_t) vendorId, (uint16_t) productId)); } /** @@ -472,7 +472,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, clearHalt) libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return 0; - return libusb_clear_halt(dev_handle, endpoint); + return libusb_clear_halt(dev_handle, (unsigned char) endpoint); } /** @@ -543,7 +543,7 @@ JNIEXPORT jboolean JNICALL METHOD_NAME(LibUsb, hasCapability) JNIEnv *env, jclass class, jint capability ) { - return libusb_has_capability(capability); + return (jboolean) libusb_has_capability((uint32_t) capability); } /** @@ -565,7 +565,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, le16ToCpu) JNIEnv *env, jclass class, jint x ) { - return libusb_le16_to_cpu(x); + return libusb_le16_to_cpu((uint16_t) x); } /** @@ -576,7 +576,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, cpuToLe16) JNIEnv *env, jclass class, jint x ) { - return libusb_cpu_to_le16(x); + return libusb_cpu_to_le16((uint16_t) x); } /** @@ -642,7 +642,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) // and then +1 for the terminating NUL byte for C strings (the descriptor itself doesn't necessarily have one!). unsigned char buffer[127 + 1]; int result = libusb_get_string_descriptor_ascii( - dev_handle, index, buffer, 127); + dev_handle, (uint8_t) index, buffer, 127); if (result >= 0) { buffer[result] = 0x00; @@ -689,7 +689,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) if (!dev) return 0; struct libusb_config_descriptor *config; - int result = libusb_get_config_descriptor(dev, index, &config); + int result = libusb_get_config_descriptor(dev, (uint8_t) index, &config); if (result == LIBUSB_SUCCESS) setConfigDescriptor(env, config, descriptor); return result; } @@ -710,7 +710,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptorByValue) struct libusb_config_descriptor *config; int result = libusb_get_config_descriptor_by_value( - dev, index, &config); + dev, (uint8_t) index, &config); if (result == LIBUSB_SUCCESS) setConfigDescriptor(env, config, descriptor); return result; } @@ -748,8 +748,9 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) if (!dev_handle) return 0; jlong data_size = (*env)->GetDirectBufferCapacity(env, data); - return libusb_control_transfer(dev_handle, bmRequestType, bRequest, - wValue, wIndex, data_ptr, data_size, timeout); + return libusb_control_transfer(dev_handle, (uint8_t) bmRequestType, + (uint8_t) bRequest, (uint16_t) wValue, (uint16_t) wIndex, data_ptr, + (uint16_t) data_size, (unsigned int) timeout); } /** @@ -770,8 +771,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) int sent; jlong data_size = (*env)->GetDirectBufferCapacity(env, data); - int result = libusb_bulk_transfer(dev_handle, endpoint, data_ptr, data_size, &sent, - timeout); + int result = libusb_bulk_transfer(dev_handle, (unsigned char) endpoint, + data_ptr, (int) data_size, &sent, (unsigned int) timeout); if (result == LIBUSB_SUCCESS) { jclass cls = (*env)->GetObjectClass(env, transferred); @@ -800,8 +801,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) int sent; jlong data_size = (*env)->GetDirectBufferCapacity(env, data); - int result = libusb_interrupt_transfer(dev_handle, endpoint, data_ptr, data_size, - &sent, timeout); + int result = libusb_interrupt_transfer(dev_handle, (unsigned char) endpoint, + data_ptr, (int) data_size, &sent, (unsigned int) timeout); if (result == LIBUSB_SUCCESS) { jclass cls = (*env)->GetObjectClass(env, transferred); @@ -922,8 +923,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, waitForEvent) if (!ctx && context) return 0; struct timeval tv; - tv.tv_sec = timeout / 1000000; - tv.tv_usec = timeout % 1000000; + tv.tv_sec = (long int) timeout / 1000000; + tv.tv_usec = (long int) timeout % 1000000; return libusb_wait_for_event(ctx, &tv); } @@ -938,7 +939,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeoutCompleted) ) { int *complete = NULL; - if (completed) { + if (completed) + { DIRECT_BUFFER(env, completed, complete_tmp, return 0); complete = (int *) complete_tmp; } @@ -947,8 +949,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeoutCompleted) if (!ctx && context) return 0; struct timeval tv; - tv.tv_sec = timeout / 1000000; - tv.tv_usec = timeout % 1000000; + tv.tv_sec = (long int) timeout / 1000000; + tv.tv_usec = (long int) timeout % 1000000; return libusb_handle_events_timeout_completed(ctx, &tv, complete); } @@ -965,8 +967,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsTimeout) if (!ctx && context) return 0; struct timeval tv; - tv.tv_sec = timeout / 1000000; - tv.tv_usec = timeout % 1000000; + tv.tv_sec = (long int) timeout / 1000000; + tv.tv_usec = (long int) timeout % 1000000; return libusb_handle_events_timeout(ctx, &tv); } @@ -994,7 +996,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsCompleted) ) { int *complete = NULL; - if (completed) { + if (completed) + { DIRECT_BUFFER(env, completed, complete_tmp, return 0); complete = (int *) complete_tmp; } @@ -1017,8 +1020,8 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, handleEventsLocked) if (!ctx && context) return 0; struct timeval tv; - tv.tv_sec = timeout / 1000000; - tv.tv_usec = timeout % 1000000; + tv.tv_sec = (long int) timeout / 1000000; + tv.tv_usec = (long int) timeout % 1000000; return libusb_handle_events_locked(ctx, &tv); } @@ -1145,7 +1148,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, allocTransfer) } transfer->user_data = transferData; - transferData->maxNumIsoPackets = isoPackets; + transferData->maxNumIsoPackets = (size_t) isoPackets; jobject transferObject = wrapTransfer(env, transfer); diff --git a/src/main/c/src/Makefile.am b/src/main/c/src/Makefile.am index 95ebe12..5b7cda4 100644 --- a/src/main/c/src/Makefile.am +++ b/src/main/c/src/Makefile.am @@ -1,10 +1,9 @@ lib_LTLIBRARIES = libusb4java.la -libusb4java_la_CFLAGS = -Wall -Werror $(LIBUSB_CFLAGS) +libusb4java_la_CFLAGS = -pedantic -Wall -Wextra -Wformat=2 -Winit-self -Wunused -Wno-unused-parameter -Wuninitialized -Wundef -Wshadow -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wlogical-op -Wstrict-prototypes -Wredundant-decls -Wnested-externs $(LIBUSB_CFLAGS) libusb4java_la_LIBADD = $(LIBUSB_LIBS) libusb4java_la_LDFLAGS = -version-info 1:0:0 -no-undefined EXTRA_DIST = *.h libusb4java_la_SOURCES = \ - wrappers.c \ usb4java.c \ LibUsb.c \ Version.c \ diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 6059524..79da173 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -40,9 +40,8 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setDevHandle) JNIEnv *env, jobject this, jobject handle ) { - NOT_NULL(env, handle, return); libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); - if (!dev_handle) return; + if (!dev_handle && handle) return; struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; @@ -74,7 +73,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setFlags) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; - transfer->flags = flags; + transfer->flags = (uint8_t) flags; } /** @@ -88,7 +87,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, flags) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return 0; - return transfer->flags; + return (jbyte) transfer->flags; } /** @@ -102,7 +101,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setEndpoint) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; - transfer->endpoint = endpoint; + transfer->endpoint = (unsigned char) endpoint; } /** @@ -116,7 +115,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, endpoint) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return 0; - return transfer->endpoint; + return (jbyte) transfer->endpoint; } /** @@ -130,7 +129,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setType) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; - transfer->type = type; + transfer->type = (unsigned char) type; } /** @@ -144,7 +143,7 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, type) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return 0; - return transfer->type; + return (jbyte) transfer->type; } /** @@ -158,7 +157,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setTimeout) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; - transfer->timeout = timeout; + transfer->timeout = (unsigned int) timeout; } /** @@ -172,7 +171,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, timeout) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return 0; - return transfer->timeout; + return (jint) transfer->timeout; } /** @@ -430,8 +429,13 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setBufferNative) JNIEnv *env, jobject this, jobject buffer ) { - NOT_NULL(env, buffer, return); - DIRECT_BUFFER(env, buffer, buffer_ptr, return); + unsigned char *buffer_ptr = NULL; + if (buffer) + { + DIRECT_BUFFER(env, buffer, buffer_tmp, return); + buffer_ptr = buffer_tmp; + } + struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return; @@ -452,7 +456,7 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setNumIsoPackets) // Check that calls to setNumIsoPackets() never set a number exceeding // the maximum, which was originally set at allocTransfer() time. if (((struct transfer_data *) transfer->user_data)->maxNumIsoPackets - < numIsoPackets) + < (size_t) numIsoPackets) { illegalArgument(env, "numIsoPackets exceeds maximum allowed number set with allocTransfer()"); diff --git a/src/main/c/src/usb4java.c b/src/main/c/src/usb4java.c index 9fc6b10..ebcd1cc 100644 --- a/src/main/c/src/usb4java.c +++ b/src/main/c/src/usb4java.c @@ -7,13 +7,13 @@ JavaVM *jvm = NULL; -jint illegalArgument(JNIEnv *env, char *message) +jint illegalArgument(JNIEnv *env, const char *message) { jclass cls = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); return (*env)->ThrowNew(env, cls, message); } -jint illegalState(JNIEnv *env, char *message) +jint illegalState(JNIEnv *env, const char *message) { jclass cls = (*env)->FindClass(env, "java/lang/IllegalStateException"); return (*env)->ThrowNew(env, cls, message); diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 24fcf91..0ca325f 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -86,7 +86,7 @@ extern JavaVM *jvm; -jint illegalArgument(JNIEnv *env, char *message); -jint illegalState(JNIEnv *env, char *message); +jint illegalArgument(JNIEnv *env, const char *message); +jint illegalState(JNIEnv *env, const char *message); #endif diff --git a/src/main/c/src/wrappers.c b/src/main/c/src/wrappers.c deleted file mode 100644 index da85ad0..0000000 --- a/src/main/c/src/wrappers.c +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (C) 2013 Klaus Reimer (k@ailis.de) - * See COPYING file for copying conditions - */ - -#include - -// Enforce usage of older memcpy to be compatible with older libc versions -#if WRAP_MEMCPY -asm (".symver memcpy, memcpy@GLIBC_2.2.5"); -void *__wrap_memcpy(void *dest, const void *src, size_t n) -{ - return memcpy(dest, src, n); -} -#endif diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 72754ae..739e65d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -248,8 +248,15 @@ public final class Transfer // Native call. setBufferNative(buffer); - // Set new length. The native call above ensures that buffer isn't null. - setLengthNative(buffer.capacity()); + if (buffer != null) + { + // Set new length based on buffer's capacity. + setLengthNative(buffer.capacity()); + } + else + { + setLengthNative(0); + } // Once we know the native calls have gone through, update the // reference. From 0f6031ab889e5e62977d2155b484e468cef87536 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 13 Jun 2013 13:40:06 +0200 Subject: [PATCH 58/82] Revert TransferTest to original, since null is now supported again. --- .../java/de/ailis/usb4java/libusb/TransferTest.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java index df7a478..62ab62a 100644 --- a/src/test/java/de/ailis/usb4java/libusb/TransferTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/TransferTest.java @@ -122,17 +122,8 @@ public class TransferTest assertNotSame(handle, transfer.devHandle()); assertNotEquals(handle2, transfer.devHandle()); assertEquals(handle, transfer.devHandle()); - - try - { - transfer.setDevHandle(null); - fail("Setting devHandle to null should throw IllegalArgumentException"); - } - catch (IllegalArgumentException e) - { - // Expected behavior - } - + transfer.setDevHandle(null); + assertNull(transfer.devHandle()); LibUsb.freeTransfer(transfer); } From 266ab299cc7c780f62d2b8cd237200194c8ac465 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 13 Jun 2013 13:43:27 +0200 Subject: [PATCH 59/82] Wcast-qual was useuful to discover those errors in extra(): the returned ByteBuffer is fully writable, but the backing memory isn't really intended to be written to (and you never should modify the descriptors in memory). So fixed by getting a read-only ByteBuffer and passing that back to Java instead. --- src/main/c/src/ConfigDescriptor.c | 3 +-- src/main/c/src/EndpointDescriptor.c | 3 +-- src/main/c/src/InterfaceDescriptor.c | 2 +- src/main/c/src/usb4java.c | 18 +++++++++++++++++- src/main/c/src/usb4java.h | 2 ++ 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/c/src/ConfigDescriptor.c b/src/main/c/src/ConfigDescriptor.c index c95059f..f26c13c 100644 --- a/src/main/c/src/ConfigDescriptor.c +++ b/src/main/c/src/ConfigDescriptor.c @@ -162,8 +162,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(ConfigDescriptor, extra) struct libusb_config_descriptor *config = unwrapConfigDescriptor(env, this); if (!config) return NULL; - return (*env)->NewDirectByteBuffer(env, (void *) config->extra, - config->extra_length); + return NewDirectReadOnlyByteBuffer(env, config->extra, config->extra_length); } /** diff --git a/src/main/c/src/EndpointDescriptor.c b/src/main/c/src/EndpointDescriptor.c index 7e40a56..9d5973a 100644 --- a/src/main/c/src/EndpointDescriptor.c +++ b/src/main/c/src/EndpointDescriptor.c @@ -156,8 +156,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(EndpointDescriptor, extra) struct libusb_endpoint_descriptor *ep = unwrapEndpointDescriptor(env, this); if (!ep) return NULL; - return (*env)->NewDirectByteBuffer(env, (void *) ep->extra, - ep->extra_length); + return NewDirectReadOnlyByteBuffer(env, ep->extra, ep->extra_length); } /** diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index d2834d5..b3b722e 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -198,7 +198,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(InterfaceDescriptor, extra) unwrapInterfaceDescriptor(env, this); if (!interface) return NULL; - return (*env)->NewDirectByteBuffer(env, (void *) interface->extra, + return NewDirectReadOnlyByteBuffer(env, interface->extra, interface->extra_length); } diff --git a/src/main/c/src/usb4java.c b/src/main/c/src/usb4java.c index ebcd1cc..7a05959 100644 --- a/src/main/c/src/usb4java.c +++ b/src/main/c/src/usb4java.c @@ -19,7 +19,23 @@ jint illegalState(JNIEnv *env, const char *message) return (*env)->ThrowNew(env, cls, message); } -jint JNI_OnLoad(JavaVM *vm, void *reserved) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +jobject NewDirectReadOnlyByteBuffer(JNIEnv *env, const void *mem, + int mem_length) +{ + jobject buffer = (*env)->NewDirectByteBuffer(env, (void *) mem, mem_length); + + // Get a read-only buffer from this buffer. + jclass cls = (*env)->GetObjectClass(env, buffer); + jmethodID method = (*env)->GetMethodID(env, cls, "asReadOnlyBuffer", + "()Ljava/nio/ByteBuffer;"); + return (*env)->CallObjectMethod(env, buffer, method); +} +#pragma GCC diagnostic pop + +jint JNI_OnLoad(JavaVM *vm, void *reserved) +{ jvm = vm; return JNI_VERSION_1_4; } diff --git a/src/main/c/src/usb4java.h b/src/main/c/src/usb4java.h index 0ca325f..cee6e39 100644 --- a/src/main/c/src/usb4java.h +++ b/src/main/c/src/usb4java.h @@ -88,5 +88,7 @@ extern JavaVM *jvm; jint illegalArgument(JNIEnv *env, const char *message); jint illegalState(JNIEnv *env, const char *message); +jobject NewDirectReadOnlyByteBuffer(JNIEnv *env, const void *mem, + int mem_length); #endif From ccdc2f6022f8db721281db72763cbcc3baae4b9c Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 13 Jun 2013 14:26:36 +0200 Subject: [PATCH 60/82] Don't increase refcount on the device returned by getParent() or getDevice(). It's better to be like libusbx itself here and not change the behavior. But I've added a note to explain to never unref such a device. --- src/main/c/src/LibUsb.c | 5 +++-- src/main/java/de/ailis/usb4java/libusb/LibUsb.java | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 6da314a..f19c6c3 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -71,7 +71,8 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, exit) { if (!context) { - if (defaultContextRefcnt <= 0) { + if (defaultContextRefcnt <= 0) + { illegalState(env, "default context is not initialized"); return; } @@ -373,7 +374,7 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getDevice) libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); if (!dev_handle) return NULL; - return wrapDevice(env, libusb_ref_device(libusb_get_device(dev_handle))); + return wrapDevice(env, libusb_get_device(dev_handle)); } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index cceac40..cd75090 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -652,6 +652,10 @@ public final class LibUsb /** * Get the the parent from the specified device [EXPERIMENTAL]. * + * Please note that the reference count of the returned device is not + * increased. As such, do not *ever* call {@link #unrefDevice(Device)) + * directly on the returned Device. + * * @param device * A device * @return The device parent or NULL if not available. You should issue a @@ -820,8 +824,9 @@ public final class LibUsb /** * Get the underlying device for a handle. * - * This function does not modify the reference count of the returned device, - * so do not feel compelled to unreference it when you are done. + * Please note that the reference count of the returned device is not + * increased. As such, do not *ever* call {@link #unrefDevice(Device)) + * directly on the returned Device. * * @param handle * a device handle. From eb5b993eb236f99cbc392859f098571ebbae09d7 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 13 Jun 2013 14:31:21 +0200 Subject: [PATCH 61/82] Add updated libraries for Windows and Linux x86_64. --- .../libusb/linux-x86_64/libusb4java.so | Bin 138520 -> 138520 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 86686 -> 86686 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index be74e3fdf2480e890758ce8afb3326bbbd5e48f5..253f6a397836c482db7c178304279e16e3d0485d 100644 GIT binary patch delta 39158 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 PnksKR+P%EcJZt_JoTd&n delta 38649 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 diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index 90f8a5d1963aa07de4094f886145abe6e57fbb3e..2370b30cd259c6e241bedc3761e182720fe6351c 100644 GIT binary patch delta 82 zcmeyehwIB8t_dB?Z+7jR*zL<~v4W}bcI$1%t+$yplR<*p*;APQDoX=dfec{4$RGfu YB^VeQKwO~sbomY@QLs|;4klYM0E-SD6951J delta 82 zcmeyehwIB8t_dB?^_e>+cKb5(2r@U`ZoSR8^){1cGIL$#j_vFzOn;T7fvi9VFkoa5 a0MZf+3=JSIP<*<42a_mRsd)#Jtr!5w_!*J_ diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll index 47d79a489a3e207a87a0a4f59acd08085a881127..601862e1d10dd602cf0c7fd8e0533b114b189c23 100644 GIT binary patch delta 15626 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 delta 15262 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 From 3d939da41f1b65a3a06ee1c30a789213af06c4d3 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 14 Jun 2013 17:04:15 +0200 Subject: [PATCH 62/82] Bump version for testing. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2f08ca1..2aff858 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ usb4java jar usb4java - 1.0.1-SNAPSHOT + 1.1.0 http://kayahr.github.com/usb4java/ USB library for Java based on libusb and implementing javax.usb (JSR-80). From 58a2494e4c043627b6b06265bd3aa630dbe6990b Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 14 Jun 2013 18:14:53 +0200 Subject: [PATCH 63/82] Use C99-style for-loops, much more readable. --- src/main/c/src/EndpointDescriptor.c | 3 +-- src/main/c/src/Interface.c | 3 +-- src/main/c/src/InterfaceDescriptor.c | 3 +-- src/main/c/src/IsoPacketDescriptor.c | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/c/src/EndpointDescriptor.c b/src/main/c/src/EndpointDescriptor.c index 9d5973a..1227a5e 100644 --- a/src/main/c/src/EndpointDescriptor.c +++ b/src/main/c/src/EndpointDescriptor.c @@ -18,8 +18,7 @@ jobjectArray wrapEndpointDescriptors(JNIEnv *env, int count, jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, (*env)->FindClass(env, PACKAGE_DIR"/EndpointDescriptor"), NULL); - int i; - for (i = 0; i < count; i++) + for (int i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapEndpointDescriptor(env, &descriptors[i])); diff --git a/src/main/c/src/Interface.c b/src/main/c/src/Interface.c index a0fb948..8c05136 100644 --- a/src/main/c/src/Interface.c +++ b/src/main/c/src/Interface.c @@ -17,8 +17,7 @@ jobjectArray wrapInterfaces(JNIEnv *env, int count, jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, (*env)->FindClass(env, PACKAGE_DIR"/Interface"), NULL); - int i; - for (i = 0; i < count; i++) + for (int i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapInterface(env, &interfaces[i])); diff --git a/src/main/c/src/InterfaceDescriptor.c b/src/main/c/src/InterfaceDescriptor.c index b3b722e..02796d8 100644 --- a/src/main/c/src/InterfaceDescriptor.c +++ b/src/main/c/src/InterfaceDescriptor.c @@ -20,8 +20,7 @@ jobjectArray wrapInterfaceDescriptors(JNIEnv *env, int count, jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, (*env)->FindClass(env, PACKAGE_DIR"/InterfaceDescriptor"), NULL); - int i; - for (i = 0; i < count; i++) + for (int i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapInterfaceDescriptor(env, &descriptors[i])); diff --git a/src/main/c/src/IsoPacketDescriptor.c b/src/main/c/src/IsoPacketDescriptor.c index 5bd5b72..d1d3e39 100644 --- a/src/main/c/src/IsoPacketDescriptor.c +++ b/src/main/c/src/IsoPacketDescriptor.c @@ -13,8 +13,7 @@ jobjectArray wrapIsoPacketDescriptors(JNIEnv *env, int count, jobjectArray array = (jobjectArray) (*env)->NewObjectArray(env, count, (*env)->FindClass(env, PACKAGE_DIR"/IsoPacketDescriptor"), NULL); - int i; - for (i = 0; i < count; i++) + for (int i = 0; i < count; i++) (*env)->SetObjectArrayElement(env, array, i, wrapIsoPacketDescriptor(env, &descriptors[i])); From b239bfdedd5a3dee6b21eedb6f7da344963921ba Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 16 Jun 2013 17:20:19 +0200 Subject: [PATCH 64/82] Make timeouts long: they are unsigned ints in C, and only a Java long can properly represent the full range. It would be counter-intuitive to have to set negative timeouts in Java to get longer timeouts in C... Also reorder getVersion() and getStringDescriptorAscii() to their proper places, so they are in the same order as they appear in the libusbx documentation. --- src/main/c/src/LibUsb.c | 94 +++++++------- src/main/c/src/Transfer.c | 4 +- .../usb4java/libusb/IsoPacketDescriptor.java | 3 + .../java/de/ailis/usb4java/libusb/LibUsb.java | 119 +++++++++--------- .../de/ailis/usb4java/libusb/Transfer.java | 2 +- 5 files changed, 114 insertions(+), 108 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index f19c6c3..8fc386b 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -25,17 +25,6 @@ static int defaultContextRefcnt = 0; -/** - * Version getVersion() - */ -JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getVersion) -( - JNIEnv *env, jclass class -) -{ - return wrapVersion(env, libusb_get_version()); -} - /** * int init(Context) */ @@ -558,6 +547,17 @@ JNIEXPORT jstring JNICALL METHOD_NAME(LibUsb, errorName) return (*env)->NewStringUTF(env, libusb_error_name(code)); } +/** + * Version getVersion() + */ +JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getVersion) +( + JNIEnv *env, jclass class +) +{ + return wrapVersion(env, libusb_get_version()); +} + /** * int le16ToCpu(int) */ @@ -626,36 +626,6 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeDeviceDescriptor) resetDeviceDescriptor(env, descriptor); } -/** - * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer) - */ -JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) -( - JNIEnv *env, jclass class, jobject handle, jint index, jobject string -) -{ - NOT_NULL(env, handle, return 0); - NOT_NULL(env, string, return 0); - libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); - if (!dev_handle) return 0; - - // Maximum size of a descriptor is 256 bytes, -2 for length/type = 254, /2 because of Unicode = 127 characters - // and then +1 for the terminating NUL byte for C strings (the descriptor itself doesn't necessarily have one!). - unsigned char buffer[127 + 1]; - int result = libusb_get_string_descriptor_ascii( - dev_handle, (uint8_t) index, buffer, 127); - if (result >= 0) - { - buffer[result] = 0x00; - jobject tmp = (*env)->NewStringUTF(env, (char *) buffer); - jclass cls = (*env)->GetObjectClass(env, string); - jmethodID method = (*env)->GetMethodID(env, cls, "append", - "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); - (*env)->CallObjectMethod(env, string, method, tmp); - } - return result; -} - /** * int getActiveConfigDescriptor(Device, ConfigDescriptor) */ @@ -734,12 +704,42 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeConfigDescriptor) } /** - * int controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int) + * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer) + */ +JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) +( + JNIEnv *env, jclass class, jobject handle, jint index, jobject string +) +{ + NOT_NULL(env, handle, return 0); + NOT_NULL(env, string, return 0); + libusb_device_handle *dev_handle = unwrapDeviceHandle(env, handle); + if (!dev_handle) return 0; + + // Maximum size of a descriptor is 256 bytes, -2 for length/type = 254, /2 because of Unicode = 127 characters + // and then +1 for the terminating NUL byte for C strings (the descriptor itself doesn't necessarily have one!). + unsigned char buffer[127 + 1]; + int result = libusb_get_string_descriptor_ascii( + dev_handle, (uint8_t) index, buffer, 127); + if (result >= 0) + { + buffer[result] = 0x00; + jobject tmp = (*env)->NewStringUTF(env, (char *) buffer); + jclass cls = (*env)->GetObjectClass(env, string); + jmethodID method = (*env)->GetMethodID(env, cls, "append", + "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); + (*env)->CallObjectMethod(env, string, method, tmp); + } + return result; +} + +/** + * int controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) ( JNIEnv *env, jclass class, jobject handle, jint bmRequestType, - jint bRequest, jint wValue, jint wIndex, jobject data, jint timeout + jint bRequest, jint wValue, jint wIndex, jobject data, jlong timeout ) { NOT_NULL(env, handle, return 0); @@ -755,12 +755,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) } /** - * int bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int) + * int bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) ( JNIEnv *env, jclass class, jobject handle, jint endpoint, - jobject data, jobject transferred, jint timeout + jobject data, jobject transferred, jlong timeout ) { NOT_NULL(env, handle, return 0); @@ -785,12 +785,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) } /** - * int interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int) + * int interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) ( JNIEnv *env, jclass class, jobject handle, jint endpoint, - jobject data, jobject transferred, jint timeout + jobject data, jobject transferred, jlong timeout ) { NOT_NULL(env, handle, return 0); diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 79da173..45861b4 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -147,11 +147,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, type) } /** - * void setTimeout(int) + * void setTimeout(long) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setTimeout) ( - JNIEnv *env, jobject this, jint timeout + JNIEnv *env, jobject this, jlong timeout ) { struct libusb_transfer *transfer = unwrapTransfer(env, this); diff --git a/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java index 2435147..2efb772 100644 --- a/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java @@ -29,6 +29,9 @@ public final class IsoPacketDescriptor public native int length(); + // Theoretically the right representation for a C unsigned int would be a + // Java long, but the maximum length for ISO Packets is 1024 bytes, so an + // int more than suffices to hold any possible valid values here. public native void setLength(final int length); public native int actualLength(); diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index cd75090..c64b085 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -570,13 +570,6 @@ public final class LibUsb */ public static native void setDebug(final Context context, final int level); - /** - * Returns the version of the libusbx runtime. - * - * @return The version of the libusbx runtime. - */ - public static native Version getVersion(); - /** * Returns a list of USB devices currently attached to the system. * @@ -1117,6 +1110,13 @@ public final class LibUsb */ public static native String errorName(final int errorCode); + /** + * Returns the version of the libusbx runtime. + * + * @return The version of the libusbx runtime. + */ + public static native Version getVersion(); + /** * Convert a 16-bit value from little-endian to host-endian format. * @@ -1173,50 +1173,6 @@ public final class LibUsb public static native void freeDeviceDescriptor( final DeviceDescriptor descriptor); - /** - * Retrieve a string descriptor in C style ASCII. - * - * @param handle - * A device handle. - * @param index - * The index of the descriptor to retrieve. - * @param string - * Output buffer for ASCII string descriptor. - * @return Number of bytes returned in data, or ERROR code on failure. - */ - public static native int getStringDescriptorAscii( - final DeviceHandle handle, final int index, final StringBuffer string); - - /** - * A simple wrapper around - * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer)}. - * It simply returns the string (Maximum length of 126) if possible. If not - * possible (NULL handle or 0-index specified or error occured) then null is - * returned. - * - * This method is not part of libusb. - * - * @param handle - * The device handle. - * @param index - * The string descriptor index. - * @return The string or null if it could not be read. - */ - public static String getStringDescriptor(final DeviceHandle handle, - final int index) - { - if ((handle == null) || (index == 0)) - { - return null; - } - final StringBuffer buffer = new StringBuffer(); - if (getStringDescriptorAscii(handle, index, buffer) >= 0) - { - return buffer.toString(); - } - return null; - } - /** * Get the USB configuration descriptor for the currently active * configuration. @@ -1299,6 +1255,53 @@ public final class LibUsb public static native void freeConfigDescriptor( final ConfigDescriptor descriptor); + /** + * Retrieve a string descriptor in C style ASCII. + * + * @param handle + * A device handle. + * @param index + * The index of the descriptor to retrieve. + * @param string + * Output buffer for ASCII string descriptor. + * @return Number of bytes returned in data, or ERROR code on failure. + */ + public static native int getStringDescriptorAscii( + final DeviceHandle handle, final int index, final StringBuffer string); + + /** + * A simple wrapper around + * {@link #getStringDescriptorAscii(DeviceHandle, int, StringBuffer)}. + * It simply returns the string (maximum length of 127) if possible. If not + * possible (NULL handle or 0-index specified or error occured) then null is + * returned. + * + * This method is not part of libusb. + * + * @param handle + * The device handle. + * @param index + * The string descriptor index. + * @return The string or null if it could not be read. + */ + public static String getStringDescriptor(final DeviceHandle handle, + final int index) + { + if ((handle == null) || (index == 0)) + { + return null; + } + + final StringBuffer buffer = new StringBuffer(); + + if (getStringDescriptorAscii(handle, index, buffer) >= 0) + { + return buffer.toString(); + } + + return null; + } + /** * Retrieve a descriptor from the default control pipe. * @@ -1382,7 +1385,7 @@ public final class LibUsb */ public static native int controlTransfer(final DeviceHandle handle, final int bmRequestType, final int bRequest, final int wValue, - final int wIndex, final ByteBuffer data, final int timeout); + final int wIndex, final ByteBuffer data, final long timeout); /** * Perform a USB bulk transfer. @@ -1427,7 +1430,7 @@ public final class LibUsb */ public static native int bulkTransfer(final DeviceHandle handle, final int endpoint, final ByteBuffer data, final IntBuffer transferred, - final int timeout); + final long timeout); /** * Perform a USB interrupt transfer. @@ -1473,7 +1476,7 @@ public final class LibUsb */ public static native int interruptTransfer(final DeviceHandle handle, final int endpoint, final ByteBuffer data, final IntBuffer transferred, - final int timeout); + final long timeout); /** * Attempt to acquire the event handling lock. @@ -2050,7 +2053,7 @@ public final class LibUsb public static void fillControlTransfer(final Transfer transfer, final DeviceHandle handle, final ByteBuffer buffer, final TransferCallback callback, final Object userData, - final int timeout) + final long timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(0); @@ -2068,7 +2071,7 @@ public final class LibUsb public static void fillBulkTransfer(final Transfer transfer, final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, final TransferCallback callback, final Object userData, - final int timeout) + final long timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); @@ -2082,7 +2085,7 @@ public final class LibUsb public static void fillInterruptTransfer(final Transfer transfer, final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, final TransferCallback callback, final Object userData, - final int timeout) + final long timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); @@ -2096,7 +2099,7 @@ public final class LibUsb public static void fillIsoTransfer(final Transfer transfer, final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, final int numIsoPackets, final TransferCallback callback, - final Object userData, final int timeout) + final Object userData, final long timeout) { transfer.setDevHandle(handle); transfer.setEndpoint(endpoint); diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 739e65d..7f990d7 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -129,7 +129,7 @@ public final class Transfer * @param timeout * The timeout to set. */ - public native void setTimeout(final int timeout); + public native void setTimeout(final long timeout); /** * Returns the status of the transfer. Read-only, and only for use within From a50fd0ecb5917085c1501637a565fd953ae26655 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Sun, 16 Jun 2013 18:07:47 +0200 Subject: [PATCH 65/82] Also make timeout read a long. --- src/main/c/src/Transfer.c | 6 +++--- src/main/java/de/ailis/usb4java/libusb/Transfer.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 45861b4..74edbb4 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -161,9 +161,9 @@ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setTimeout) } /** - * int timeout() + * long timeout() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, timeout) +JNIEXPORT jlong JNICALL METHOD_NAME(Transfer, timeout) ( JNIEnv *env, jobject this ) @@ -171,7 +171,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, timeout) struct libusb_transfer *transfer = unwrapTransfer(env, this); if (!transfer) return 0; - return (jint) transfer->timeout; + return transfer->timeout; } /** diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 7f990d7..b6c250f 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -120,7 +120,7 @@ public final class Transfer * * @return The timeout. */ - public native int timeout(); + public native long timeout(); /** * Sets the timeout for this transfer in milliseconds. A value of 0 From c0ea9ba0f6d02856e76ee08e582c31965c561cbf Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 17 Jun 2013 00:17:48 +0200 Subject: [PATCH 66/82] How we interact with libusb from Java is quite inconsistent, and it mainly stems from the fact Java has no unsigned integers, which is what libusb uses everywhere. As it was before, there are parts of the library that return bytes & shorts, like the Descriptors (mostly to be compatible with javax.usb), and others that take and return int, even where an 8 or 16-bit quantity would be expected by libusb. I suspect this was done to avoid casting and try to side-step the sign-extension problem with Java as much as possible, but in the end it leads to an API that's inconsistent, that doesn't express the ranges it can use well (it's an int but in reality only 16 bits for libusb and so on). It also fails at basic operations in ways you'd not expect because of the above inconsistencies: if (deviceDescriptor.bDeviceClass() == LibUsb.CLASS_VENDOR_SPEC) { do something; } will never work, since the constant is an int and the returned short from bDeviceClass() will be cast up to an int too, but CLASS_VENDOR_SPEC is 0xFF (MSB=1), it will be sign-extended and the comparison will fail always. There are two solutions I can see here: A) consistently use int/long everywhere, both input and output. Everything becomes simpler to write, with less casts, BUT javax.usb compatibility is gone for the Descriptors and it becomes even unclearer what those values effectively mean and what range they support. B) restrict the API to use the proper integer sizes as the C API, ie. 8-bit quantities (char, uint8_t, int8_t) are represented by jbyte, 16-bit by jshort, and all the constants get properly sized too. With this approach the sizes and ranges are much clearer, comparisons like the above work out-of-the-box, javax.usb compatibility is maintained for the Descriptors. The downside is more casting and the occasional need to mask off returned values to kill the sign-extension when you want to use those values as integers (like when printing stuff in decimal notation). I chose to try out the approach from B) for now, this commit implements it as explained above. It requires minimal changes to the javax.usb implementation, just two casts to byte in AbstractDevice.java. --- src/main/c/src/LibUsb.c | 60 ++-- src/main/c/src/Transfer.c | 12 +- .../de/ailis/usb4java/AbstractDevice.java | 6 +- .../ailis/usb4java/libusb/ControlSetup.java | 20 +- .../java/de/ailis/usb4java/libusb/LibUsb.java | 218 +++++++-------- .../de/ailis/usb4java/libusb/Transfer.java | 6 +- .../ailis/usb4java/utils/DescriptorUtils.java | 26 +- .../usb4java/libusb/LibUSBDeviceTest.java | 262 ++++++++++-------- .../usb4java/libusb/LibUSBGlobalTest.java | 29 +- .../de/ailis/usb4java/libusb/LibUSBTest.java | 74 ++--- .../usb4java/utils/DescriptorUtilsTest.java | 38 +-- 11 files changed, 387 insertions(+), 364 deletions(-) diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index 8fc386b..ed2feff 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -239,11 +239,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getDeviceSpeed) } /** - * int getMaxPacketSize(Device, int) + * int getMaxPacketSize(Device, byte) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxPacketSize) ( - JNIEnv *env, jclass class, jobject device, jint endpoint + JNIEnv *env, jclass class, jobject device, jbyte endpoint ) { NOT_NULL(env, device, return 0); @@ -254,11 +254,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxPacketSize) } /** - * int getMaxIsoPacketSize(Device, int) + * int getMaxIsoPacketSize(Device, byte) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getMaxIsoPacketSize) ( - JNIEnv *env, jclass class, jobject device, jint endpoint + JNIEnv *env, jclass class, jobject device, jbyte endpoint ) { NOT_NULL(env, device, return 0); @@ -320,12 +320,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, open) } /** - * DeviceHandle openDeviceWithVidPid(Context, int, int) + * DeviceHandle openDeviceWithVidPid(Context, short, short) */ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, openDeviceWithVidPid) ( - JNIEnv *env, jclass class, jobject context, jint vendorId, - jint productId + JNIEnv *env, jclass class, jobject context, jshort vendorId, + jshort productId ) { libusb_context *ctx = unwrapContext(env, context); @@ -451,11 +451,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, setInterfaceAltSetting) } /** - * int clearHalt(DeviceHandle, int) + * int clearHalt(DeviceHandle, byte) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, clearHalt) ( - JNIEnv *env, jclass class, jobject handle, jint endpoint + JNIEnv *env, jclass class, jobject handle, jbyte endpoint ) { NOT_NULL(env, handle, return 0); @@ -559,25 +559,25 @@ JNIEXPORT jobject JNICALL METHOD_NAME(LibUsb, getVersion) } /** - * int le16ToCpu(int) + * short le16ToCpu(short) */ -JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, le16ToCpu) +JNIEXPORT jshort JNICALL METHOD_NAME(LibUsb, le16ToCpu) ( - JNIEnv *env, jclass class, jint x + JNIEnv *env, jclass class, jshort x ) { - return libusb_le16_to_cpu((uint16_t) x); + return (jshort) libusb_le16_to_cpu((uint16_t) x); } /** - * int cpuToLe16(int) + * short cpuToLe16(short) */ -JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, cpuToLe16) +JNIEXPORT jshort JNICALL METHOD_NAME(LibUsb, cpuToLe16) ( - JNIEnv *env, jclass class, jint x + JNIEnv *env, jclass class, jshort x ) { - return libusb_cpu_to_le16((uint16_t) x); + return (jshort) libusb_cpu_to_le16((uint16_t) x); } /** @@ -646,11 +646,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getActiveConfigDescriptor) } /** - * int getConfigDescriptor(Device, int, ConfigDescriptor) + * int getConfigDescriptor(Device, byte, ConfigDescriptor) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) ( - JNIEnv *env, jclass class, jobject device, jint index, jobject descriptor + JNIEnv *env, jclass class, jobject device, jbyte index, jobject descriptor ) { NOT_NULL(env, device, return 0); @@ -666,11 +666,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptor) } /** - * int getConfigDescriptorByValue(Device, int, ConfigDescriptor) + * int getConfigDescriptorByValue(Device, byte, ConfigDescriptor) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getConfigDescriptorByValue) ( - JNIEnv *env, jclass class, jobject device, jint index, jobject descriptor + JNIEnv *env, jclass class, jobject device, jbyte index, jobject descriptor ) { NOT_NULL(env, device, return 0); @@ -704,11 +704,11 @@ JNIEXPORT void JNICALL METHOD_NAME(LibUsb, freeConfigDescriptor) } /** - * int getStringDescriptorAscii(DeviceHandle, int, StringBuffer) + * int getStringDescriptorAscii(DeviceHandle, byte, StringBuffer) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) ( - JNIEnv *env, jclass class, jobject handle, jint index, jobject string + JNIEnv *env, jclass class, jobject handle, jbyte index, jobject string ) { NOT_NULL(env, handle, return 0); @@ -734,12 +734,12 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, getStringDescriptorAscii) } /** - * int controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, long) + * int controlTransfer(DeviceHandle, byte, byte, short, short, ByteBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) ( - JNIEnv *env, jclass class, jobject handle, jint bmRequestType, - jint bRequest, jint wValue, jint wIndex, jobject data, jlong timeout + JNIEnv *env, jclass class, jobject handle, jbyte bmRequestType, + jbyte bRequest, jshort wValue, jshort wIndex, jobject data, jlong timeout ) { NOT_NULL(env, handle, return 0); @@ -755,11 +755,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, controlTransfer) } /** - * int bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, long) + * int bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) ( - JNIEnv *env, jclass class, jobject handle, jint endpoint, + JNIEnv *env, jclass class, jobject handle, jbyte endpoint, jobject data, jobject transferred, jlong timeout ) { @@ -785,11 +785,11 @@ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, bulkTransfer) } /** - * int interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, long) + * int interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, interruptTransfer) ( - JNIEnv *env, jclass class, jobject handle, jint endpoint, + JNIEnv *env, jclass class, jobject handle, jbyte endpoint, jobject data, jobject transferred, jlong timeout ) { diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 74edbb4..e845b9e 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -63,11 +63,11 @@ JNIEXPORT jobject JNICALL METHOD_NAME(Transfer, devHandle) } /** - * void setFlags(int) + * void setFlags(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setFlags) ( - JNIEnv *env, jobject this, jint flags + JNIEnv *env, jobject this, jbyte flags ) { struct libusb_transfer *transfer = unwrapTransfer(env, this); @@ -91,11 +91,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, flags) } /** - * void setEndpoint(int) + * void setEndpoint(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setEndpoint) ( - JNIEnv *env, jobject this, jint endpoint + JNIEnv *env, jobject this, jbyte endpoint ) { struct libusb_transfer *transfer = unwrapTransfer(env, this); @@ -119,11 +119,11 @@ JNIEXPORT jbyte JNICALL METHOD_NAME(Transfer, endpoint) } /** - * void setType(int) + * void setType(byte) */ JNIEXPORT void JNICALL METHOD_NAME(Transfer, setType) ( - JNIEnv *env, jobject this, jint type + JNIEnv *env, jobject this, jbyte type ) { struct libusb_transfer *transfer = unwrapTransfer(env, this); diff --git a/src/main/java/de/ailis/usb4java/AbstractDevice.java b/src/main/java/de/ailis/usb4java/AbstractDevice.java index d82191e..f7eeacb 100644 --- a/src/main/java/de/ailis/usb4java/AbstractDevice.java +++ b/src/main/java/de/ailis/usb4java/AbstractDevice.java @@ -121,7 +121,7 @@ abstract class AbstractDevice implements UsbDevice for (int i = 0; i < numConfigurations; i += 1) { final ConfigDescriptor configDescriptor = new ConfigDescriptor(); - final int result = LibUsb.getConfigDescriptor(device, i, + final int result = LibUsb.getConfigDescriptor(device, (byte) i, configDescriptor); if (result < 0) { @@ -521,8 +521,8 @@ abstract class AbstractDevice implements UsbDevice { final DeviceHandle handle = open(); final ByteBuffer buffer = ByteBuffer.allocateDirect(256); - final int result = LibUsb.getDescriptor(handle, LibUsb.DT_STRING, 0, - buffer); + final int result = LibUsb.getDescriptor(handle, LibUsb.DT_STRING, + (byte) 0, buffer); if (result < 0) throw new LibUsbException( "Unable to get string descriptor languages", result); diff --git a/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java index ede48f6..e1a7a19 100644 --- a/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java +++ b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java @@ -37,9 +37,9 @@ public final class ControlSetup return controlSetup.get(0); } - public void setBmRequestType(final int bmRequestType) + public void setBmRequestType(final byte bmRequestType) { - controlSetup.put(0, (byte) bmRequestType); + controlSetup.put(0, bmRequestType); } public byte bRequest() @@ -47,9 +47,9 @@ public final class ControlSetup return controlSetup.get(1); } - public void setBRequest(final int bRequest) + public void setBRequest(final byte bRequest) { - controlSetup.put(1, (byte) bRequest); + controlSetup.put(1, bRequest); } public short wValue() @@ -57,9 +57,9 @@ public final class ControlSetup return controlSetup.getShort(2); } - public void setWValue(final int wValue) + public void setWValue(final short wValue) { - controlSetup.putShort(2, (short) wValue); + controlSetup.putShort(2, wValue); } public short wIndex() @@ -67,9 +67,9 @@ public final class ControlSetup return controlSetup.getShort(4); } - public void setWIndex(final int wIndex) + public void setWIndex(final short wIndex) { - controlSetup.putShort(4, (short) wIndex); + controlSetup.putShort(4, wIndex); } public short wLength() @@ -77,8 +77,8 @@ public final class ControlSetup return controlSetup.getShort(6); } - public void setWLength(final int wLength) + public void setWLength(final short wLength) { - controlSetup.putShort(6, (short) wLength); + controlSetup.putShort(6, wLength); } } diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index c64b085..832357d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -118,75 +118,75 @@ public final class LibUsb // Standard requests, as defined in table 9-5 of the USB 3.0 specifications. /** Request status of the specific recipient. */ - public static final int REQUEST_GET_STATUS = 0x00; + public static final byte REQUEST_GET_STATUS = 0x00; /** Clear or disable a specific feature. */ - public static final int REQUEST_CLEAR_FEATURE = 0x01; + public static final byte REQUEST_CLEAR_FEATURE = 0x01; /** Set or enable a specific feature. */ - public static final int REQUEST_SET_FEATURE = 0x03; + public static final byte REQUEST_SET_FEATURE = 0x03; /** Set device address for all future accesses. */ - public static final int REQUEST_SET_ADDRESS = 0x05; + public static final byte REQUEST_SET_ADDRESS = 0x05; /** Set device address for all future accesses. */ - public static final int REQUEST_GET_DESCRIPTOR = 0x06; + public static final byte REQUEST_GET_DESCRIPTOR = 0x06; /** Set device address for all future accesses. */ - public static final int REQUEST_SET_DESCRIPTOR = 0x07; + public static final byte REQUEST_SET_DESCRIPTOR = 0x07; /** Get the current device configuration value. */ - public static final int REQUEST_GET_CONFIGURATION = 0x08; + public static final byte REQUEST_GET_CONFIGURATION = 0x08; /** Get the current device configuration value. */ - public static final int REQUEST_SET_CONFIGURATION = 0x09; + public static final byte REQUEST_SET_CONFIGURATION = 0x09; /** Return the selected alternate setting for the specified interface. */ - public static final int REQUEST_GET_INTERFACE = 0x0a; + public static final byte REQUEST_GET_INTERFACE = 0x0A; /** Select an alternate interface for the specified interface. */ - public static final int REQUEST_SET_INTERFACE = 0x0b; + public static final byte REQUEST_SET_INTERFACE = 0x0B; /** Set then report an endpoint's synchronization frame. */ - public static final int REQUEST_SYNCH_FRAME = 0x0c; + public static final byte REQUEST_SYNCH_FRAME = 0x0C; /** Sets both the U1 and U2 Exit Latency. */ - public static final int REQUEST_SET_SEL = 0x30; + public static final byte REQUEST_SET_SEL = 0x30; /** * Delay from the time a host transmits a packet to the time it is received * by the device. */ - public static final int SET_ISOCH_DELAY = 0x31; + public static final byte SET_ISOCH_DELAY = 0x31; // Request type bits of the bmRequestType field in control transfers. /** Standard. */ - public static final int REQUEST_TYPE_STANDARD = 0; + public static final byte REQUEST_TYPE_STANDARD = 0; /** Class. */ - public static final int REQUEST_TYPE_CLASS = 32; + public static final byte REQUEST_TYPE_CLASS = 32; /** Vendor. */ - public static final int REQUEST_TYPE_VENDOR = 64; + public static final byte REQUEST_TYPE_VENDOR = 64; /** Reserved. */ - public static final int REQUEST_TYPE_RESERVED = 96; + public static final byte REQUEST_TYPE_RESERVED = 96; // Recipient bits of the bmRequestType field in control transfers. // Values 4 through 31 are reserved. /** Device. */ - public static final int RECIPIENT_DEVICE = 0x00; + public static final byte RECIPIENT_DEVICE = 0x00; /** Interface. */ - public static final int RECIPIENT_INTERFACE = 0x01; + public static final byte RECIPIENT_INTERFACE = 0x01; /** Endpoint. */ - public static final int RECIPIENT_ENDPOINT = 0x02; + public static final byte RECIPIENT_ENDPOINT = 0x02; /** Other. */ - public static final int RECIPIENT_OTHER = 0x03; + public static final byte RECIPIENT_OTHER = 0x03; // Capabilities supported by this instance of libusb. Test if the loaded // library supports a given capability by calling hasCapability(). @@ -211,7 +211,7 @@ public final class LibUsb */ public static final int CAP_SUPPORTS_DETACH_KERNEL_DRIVER = 0x0101; - public static final int CONTROL_SETUP_SIZE = 8; + public static final short CONTROL_SETUP_SIZE = 8; // Device and/or Interface Class codes. @@ -220,61 +220,61 @@ public final class LibUsb * that each interface specifies its own class information and all * interfaces operate independently. */ - public static final int CLASS_PER_INTERFACE = 0; + public static final byte CLASS_PER_INTERFACE = 0; /** Audio class. */ - public static final int CLASS_AUDIO = 1; + public static final byte CLASS_AUDIO = 1; /** Communications class. */ - public static final int CLASS_COMM = 2; + public static final byte CLASS_COMM = 2; /** Human Interface Device class. */ - public static final int CLASS_HID = 3; + public static final byte CLASS_HID = 3; /** Physical. */ - public static final int CLASS_PHYSICAL = 5; + public static final byte CLASS_PHYSICAL = 5; /** Image class. */ - public static final int CLASS_PTP = 6; + public static final byte CLASS_PTP = 6; /** Image class. */ - public static final int CLASS_IMAGE = 6; + public static final byte CLASS_IMAGE = 6; /** Printer class. */ - public static final int CLASS_PRINTER = 7; + public static final byte CLASS_PRINTER = 7; /** Mass storage class. */ - public static final int CLASS_MASS_STORAGE = 8; + public static final byte CLASS_MASS_STORAGE = 8; /** Hub class. */ - public static final int CLASS_HUB = 9; + public static final byte CLASS_HUB = 9; /** Data class. */ - public static final int CLASS_DATA = 10; + public static final byte CLASS_DATA = 10; /** Smart Card. */ - public static final int CLASS_SMART_CARD = 0x0b; + public static final byte CLASS_SMART_CARD = 0x0B; /** Content Security. */ - public static final int CLASS_CONTENT_SECURITY = 0x0d; + public static final byte CLASS_CONTENT_SECURITY = 0x0D; /** Video. */ - public static final int CLASS_VIDEO = 0x0e; + public static final byte CLASS_VIDEO = 0x0E; /** Personal Healthcare. */ - public static final int CLASS_PERSONAL_HEALTHCARE = 0x0f; + public static final byte CLASS_PERSONAL_HEALTHCARE = 0x0F; /** Diagnostic Device. */ - public static final int CLASS_DIAGNOSTIC_DEVICE = 0xdc; + public static final byte CLASS_DIAGNOSTIC_DEVICE = (byte) 0xDC; /** Wireless class. */ - public static final int CLASS_WIRELESS = 0xe0; + public static final byte CLASS_WIRELESS = (byte) 0xE0; /** Application class. */ - public static final int CLASS_APPLICATION = 0xfe; + public static final byte CLASS_APPLICATION = (byte) 0xFE; /** Class is vendor-specific. */ - public static final int CLASS_VENDOR_SPEC = 0xff; + public static final byte CLASS_VENDOR_SPEC = (byte) 0xFF; // Descriptor types as defined by the USB specification. @@ -283,135 +283,135 @@ public final class LibUsb * * @see DeviceDescriptor */ - public static final int DT_DEVICE = 0x01; + public static final byte DT_DEVICE = 0x01; /** * Configuration descriptor. * * @see ConfigDescriptor */ - public static final int DT_CONFIG = 0x02; + public static final byte DT_CONFIG = 0x02; /** String descriptor. */ - public static final int DT_STRING = 0x03; + public static final byte DT_STRING = 0x03; /** * Interface descriptor. * * @see InterfaceDescriptor */ - public static final int DT_INTERFACE = 0x04; + public static final byte DT_INTERFACE = 0x04; /** * Endpoint descriptor. * * @see EndpointDescriptor */ - public static final int DT_ENDPOINT = 0x05; + public static final byte DT_ENDPOINT = 0x05; /** HID descriptor. */ - public static final int DT_HID = 0x21; + public static final byte DT_HID = 0x21; /** HID report descriptor. */ - public static final int DT_REPORT = 0x22; + public static final byte DT_REPORT = 0x22; /** Physical descriptor. */ - public static final int DT_PHYSICAL = 0x23; + public static final byte DT_PHYSICAL = 0x23; /** Hub descriptor. */ - public static final int DT_HUB = 0x29; + public static final byte DT_HUB = 0x29; /** Hub descriptor. */ - public static final int DT_SUPERSPEED_HUB = 0x2a; + public static final byte DT_SUPERSPEED_HUB = 0x2A; // Descriptor sizes per descriptor type /** Size of a device descriptor. */ - public static final int DT_DEVICE_SIZE = 18; + public static final byte DT_DEVICE_SIZE = 18; /** Size of a config descriptor. */ - public static final int DT_CONFIG_SIZE = 9; + public static final byte DT_CONFIG_SIZE = 9; /** Size of an interface descriptor. */ - public static final int DT_INTERFACE_SIZE = 9; + public static final byte DT_INTERFACE_SIZE = 9; /** Size of an interface descriptor. */ - public static final int DT_ENDPOINT_SIZE = 7; + public static final byte DT_ENDPOINT_SIZE = 7; /** Size of an interface descriptor. */ - public static final int DT_ENDPOINT_AUDIO_SIZE = 9; + public static final byte DT_ENDPOINT_AUDIO_SIZE = 9; /** Size of an interface descriptor. */ - public static final int DT_HUB_NONVAR_SIZE = 7; + public static final byte DT_HUB_NONVAR_SIZE = 7; // Endpoint direction. Values for bit 7 of the endpoint address scheme. /** In: device-to-host. */ - public static final int ENDPOINT_IN = 0x80; + public static final byte ENDPOINT_IN = (byte) 0x80; /** Out: host-to-device. */ - public static final int ENDPOINT_OUT = 0x00; + public static final byte ENDPOINT_OUT = 0x00; // === Masks ============================================================= /** Endpoint address mask. */ - public static final int ENDPOINT_ADDRESS_MASK = 0x0f; + public static final byte ENDPOINT_ADDRESS_MASK = 0x0F; /** Endpoint direction mask. */ - public static final int ENDPOINT_DIR_MASK = 0x80; + public static final byte ENDPOINT_DIR_MASK = (byte) 0x80; /** Transfer type mask. */ - public static final int TRANSFER_TYPE_MASK = 0x03; + public static final byte TRANSFER_TYPE_MASK = 0x03; // Endpoint transfer type. Values for bits 0:1 of the endpoint attributes // field. /** Control endpoint. */ - public static final int TRANSFER_TYPE_CONTROL = 0; + public static final byte TRANSFER_TYPE_CONTROL = 0; /** Isochronous endpoint. */ - public static final int TRANSFER_TYPE_ISOCHRONOUS = 1; + public static final byte TRANSFER_TYPE_ISOCHRONOUS = 1; /** Bulk endpoint. */ - public static final int TRANSFER_TYPE_BULK = 2; + public static final byte TRANSFER_TYPE_BULK = 2; /** Interrupt endpoint. */ - public static final int TRANSFER_TYPE_INTERRUPT = 3; + public static final byte TRANSFER_TYPE_INTERRUPT = 3; // Synchronization type for isochronous endpoints. // Values for bits 2:3 of the bmAttributes field in // EndpointDescriptor. - public static final int ISO_SYNC_TYPE_MASK = 0x0C; + public static final byte ISO_SYNC_TYPE_MASK = 0x0C; /** No synchronization. */ - public static final int ISO_SYNC_TYPE_NONE = 0; + public static final byte ISO_SYNC_TYPE_NONE = 0; /** Asynchronous. */ - public static final int ISO_SYNC_TYPE_ASYNC = 1; + public static final byte ISO_SYNC_TYPE_ASYNC = 1; /** Adaptive. */ - public static final int ISO_SYNC_TYPE_ADAPTIVE = 2; + public static final byte ISO_SYNC_TYPE_ADAPTIVE = 2; /** Synchronous. */ - public static final int ISO_SYNC_TYPE_SYNC = 3; + public static final byte ISO_SYNC_TYPE_SYNC = 3; // Usage type for isochronous endpoints. Values for bits 4:5 of the // bmAttributes field in EndpointDescriptor. - public static final int ISO_USAGE_TYPE_MASK = 0x30; + public static final byte ISO_USAGE_TYPE_MASK = 0x30; /** Data endpoint. */ - public static final int ISO_USAGE_TYPE_DATA = 0; + public static final byte ISO_USAGE_TYPE_DATA = 0; /** Feedback endpoint. */ - public static final int ISO_USAGE_TYPE_FEEDBACK = 1; + public static final byte ISO_USAGE_TYPE_FEEDBACK = 1; /** Implicit feedback Data endpoint. */ - public static final int ISO_USAGE_TYPE_IMPLICIT = 2; + public static final byte ISO_USAGE_TYPE_IMPLICIT = 2; /** Report short frames as errors. */ - public static final int TRANSFER_SHORT_NOT_OK = 1; + public static final byte TRANSFER_SHORT_NOT_OK = 1; // Transfer flags @@ -425,7 +425,7 @@ public final class LibUsb * needed action to take, and it is already done by the * TRANSFER_FREE_TRANSFER flag. */ - public static final int TRANSFER_FREE_BUFFER = 0; // Originally 2 + public static final byte TRANSFER_FREE_BUFFER = 0; // Originally 2 /** * Automatically call {@link #freeTransfer(Transfer)} after callback @@ -435,7 +435,7 @@ public final class LibUsb * {@link #freeTransfer(Transfer)} from your transfer callback, as this will * result in a double-free when this flag is acted upon. */ - public static final int TRANSFER_FREE_TRANSFER = 4; + public static final byte TRANSFER_FREE_TRANSFER = 4; /** * Terminate transfers that are a multiple of the endpoint's wMaxPacketSize @@ -459,7 +459,7 @@ public final class LibUsb * libusb_submit_transfer() will return {@link #ERROR_NOT_SUPPORTED} for * every transfer where this flag is set. */ - public static final int TRANSFER_ADD_ZERO_PACKET = 8; + public static final byte TRANSFER_ADD_ZERO_PACKET = 8; // Transfer status codes @@ -700,7 +700,7 @@ public final class LibUsb * does not exist {@link #ERROR_OTHER} on other failure */ public static native int getMaxPacketSize(final Device device, - final int endpoint); + final byte endpoint); /** * Calculate the maximum packet size which a specific endpoint is capable @@ -729,7 +729,7 @@ public final class LibUsb * {@link #ERROR_OTHER} on other failure. */ public static native int getMaxIsoPacketSize(final Device device, - final int endpoint); + final byte endpoint); /** * Increment the reference count of a device. @@ -797,7 +797,7 @@ public final class LibUsb * device could not be found. */ public static native DeviceHandle openDeviceWithVidPid( - final Context context, final int vendorId, final int productId); + final Context context, final short vendorId, final short productId); /** * Close a device handle. @@ -913,7 +913,7 @@ public final class LibUsb * * @param handle * A device handle. - * @param iface + * @param interfaceNumber * The bInterfaceNumber of the interface you wish to claim. * @return 0 on success, {@link #ERROR_NOT_FOUND} if the requested interface * does not exist, {@link #ERROR_BUSY} if another program or driver @@ -921,7 +921,7 @@ public final class LibUsb * has been disconnected, another error code on other failure */ public static native int claimInterface(final DeviceHandle handle, - final int iface); + final int interfaceNumber); /** * Release an interface previously claimed with @@ -934,14 +934,14 @@ public final class LibUsb * * @param handle * a device handle. - * @param iface + * @param interfaceNumber * The bInterfaceNumber of the previously-claimed interface * @return 0 on success, {@link #ERROR_NOT_FOUND} if the interface was not * claimed, {@link #ERROR_NO_DEVICE} if the device has been * disconnected, another ERROR code on other failure */ public static native int releaseInterface(final DeviceHandle handle, - final int iface); + final int interfaceNumber); /** * Activate an alternate setting for an interface. @@ -989,7 +989,7 @@ public final class LibUsb * disconnected, another ERROR code on other failure. */ public static native int clearHalt(final DeviceHandle handle, - final int endpoint); + final byte endpoint); /** * Perform a USB port reset to reinitialize a device. @@ -1127,7 +1127,7 @@ public final class LibUsb * The little-endian value to convert * @return the value in host-endian byte order */ - public static native int le16ToCpu(final int x); + public static native short le16ToCpu(final short x); /** * Convert a 16-bit value from host-endian to little-endian format. @@ -1139,7 +1139,7 @@ public final class LibUsb * The host-endian value to convert * @return the value in little-endian byte order */ - public static native int cpuToLe16(final int x); + public static native short cpuToLe16(final short x); /** * Get the USB device descriptor for a given device. @@ -1215,7 +1215,7 @@ public final class LibUsb * @see #getConfigDescriptorByValue(Device, int, ConfigDescriptor) */ public static native int getConfigDescriptor(final Device device, - final int index, final ConfigDescriptor descriptor); + final byte index, final ConfigDescriptor descriptor); /** * Get a USB configuration descriptor with a specific bConfigurationValue. @@ -1239,7 +1239,7 @@ public final class LibUsb * @see #getConfigDescriptor(Device, int, ConfigDescriptor) */ public static native int getConfigDescriptorByValue(final Device device, - final int value, final ConfigDescriptor descriptor); + final byte value, final ConfigDescriptor descriptor); /** * Free a configuration descriptor obtained from @@ -1267,7 +1267,7 @@ public final class LibUsb * @return Number of bytes returned in data, or ERROR code on failure. */ public static native int getStringDescriptorAscii( - final DeviceHandle handle, final int index, final StringBuffer string); + final DeviceHandle handle, final byte index, final StringBuffer string); /** * A simple wrapper around @@ -1285,7 +1285,7 @@ public final class LibUsb * @return The string or null if it could not be read. */ public static String getStringDescriptor(final DeviceHandle handle, - final int index) + final byte index) { if ((handle == null) || (index == 0)) { @@ -1319,11 +1319,11 @@ public final class LibUsb * @return number of bytes returned in data, or ERROR code on failure * */ - public static int getDescriptor(final DeviceHandle handle, final int type, - final int index, final ByteBuffer data) + public static int getDescriptor(final DeviceHandle handle, final byte type, + final byte index, final ByteBuffer data) { return controlTransfer(handle, ENDPOINT_IN, REQUEST_GET_DESCRIPTOR, - (type << 8) | index, 0, data, 1000); + (short)((type << 8) | index), (short) 0, data, 1000); } /** @@ -1345,10 +1345,10 @@ public final class LibUsb * @see #getStringDescriptorAscii(DeviceHandle, int, StringBuffer) */ public static int getStringDescriptor(final DeviceHandle handle, - final int index, final int langId, final ByteBuffer data) + final byte index, final short langId, final ByteBuffer data) { return controlTransfer(handle, ENDPOINT_IN, REQUEST_GET_DESCRIPTOR, - (DT_STRING << 8) | index, langId, data, 1000); + (short)((DT_STRING << 8) | index), langId, data, 1000); } /** @@ -1384,8 +1384,8 @@ public final class LibUsb * disconnected, another ERROR code on other failures */ public static native int controlTransfer(final DeviceHandle handle, - final int bmRequestType, final int bRequest, final int wValue, - final int wIndex, final ByteBuffer data, final long timeout); + final byte bmRequestType, final byte bRequest, final short wValue, + final short wIndex, final ByteBuffer data, final long timeout); /** * Perform a USB bulk transfer. @@ -1429,7 +1429,7 @@ public final class LibUsb * been disconnected, another ERROR code on other failures. */ public static native int bulkTransfer(final DeviceHandle handle, - final int endpoint, final ByteBuffer data, final IntBuffer transferred, + final byte endpoint, final ByteBuffer data, final IntBuffer transferred, final long timeout); /** @@ -1475,7 +1475,7 @@ public final class LibUsb * has been disconnected, another ERROR code on other error */ public static native int interruptTransfer(final DeviceHandle handle, - final int endpoint, final ByteBuffer data, final IntBuffer transferred, + final byte endpoint, final ByteBuffer data, final IntBuffer transferred, final long timeout); /** @@ -2039,8 +2039,8 @@ public final class LibUsb } public static void fillControlSetup(final ByteBuffer buffer, - final int bmRequestType, final int bRequest, final int wValue, - final int wIndex, final int wLength) + final byte bmRequestType, final byte bRequest, final short wValue, + final short wIndex, final short wLength) { final ControlSetup setup = new ControlSetup(buffer); setup.setBmRequestType(bmRequestType); @@ -2056,7 +2056,7 @@ public final class LibUsb final long timeout) { transfer.setDevHandle(handle); - transfer.setEndpoint(0); + transfer.setEndpoint((byte) 0); transfer.setType(TRANSFER_TYPE_CONTROL); transfer.setTimeout(timeout); transfer.setBuffer(buffer); @@ -2065,11 +2065,11 @@ public final class LibUsb // Set length based on wLength from Control Setup. final ControlSetup setup = new ControlSetup(buffer); - transfer.setLength(CONTROL_SETUP_SIZE + setup.wLength()); + transfer.setLength(CONTROL_SETUP_SIZE + (setup.wLength() & 0xFFFF)); } public static void fillBulkTransfer(final Transfer transfer, - final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final DeviceHandle handle, final byte endpoint, final ByteBuffer buffer, final TransferCallback callback, final Object userData, final long timeout) { @@ -2083,7 +2083,7 @@ public final class LibUsb } public static void fillInterruptTransfer(final Transfer transfer, - final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final DeviceHandle handle, final byte endpoint, final ByteBuffer buffer, final TransferCallback callback, final Object userData, final long timeout) { @@ -2097,7 +2097,7 @@ public final class LibUsb } public static void fillIsoTransfer(final Transfer transfer, - final DeviceHandle handle, final int endpoint, final ByteBuffer buffer, + final DeviceHandle handle, final byte endpoint, final ByteBuffer buffer, final int numIsoPackets, final TransferCallback callback, final Object userData, final long timeout) { diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index b6c250f..10c7af1 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -82,7 +82,7 @@ public final class Transfer * @param flags * The transfer flags to set. */ - public native void setFlags(final int flags); + public native void setFlags(final byte flags); /** * Returns the address of the endpoint where this transfer will be sent. @@ -97,7 +97,7 @@ public final class Transfer * @param endpoint * The endpoint address to set */ - public native void setEndpoint(final int endpoint); + public native void setEndpoint(final byte endpoint); /** * Returns the type of the endpoint. @@ -112,7 +112,7 @@ public final class Transfer * @param type * The endpoint type to set. */ - public native void setType(final int type); + public native void setType(final byte type); /** * Returns the timeout for this transfer in milliseconds. A value of 0 diff --git a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java index 61ef83c..c249778 100644 --- a/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java +++ b/src/main/java/de/ailis/usb4java/utils/DescriptorUtils.java @@ -24,8 +24,8 @@ import de.ailis.usb4java.libusb.LibUsb; public final class DescriptorUtils { /** Mapping from USB class id to USB class name. */ - private static final Map CLASS_NAMES = - new HashMap(); + private static final Map CLASS_NAMES = + new HashMap(); static { @@ -66,7 +66,7 @@ public final class DescriptorUtils * The numeric USB class. * @return The USB class name. */ - public static String getUSBClassName(final int usbClass) + public static String getUSBClassName(final byte usbClass) { final String name = CLASS_NAMES.get(usbClass); @@ -85,9 +85,9 @@ public final class DescriptorUtils * The binary-coded decimal to decode. * @return The decoded binary-coded decimal. */ - public static String decodeBCD(final int bcd) + public static String decodeBCD(final short bcd) { - return String.format("%x.%02x", (bcd & 0xff00) >> 8, bcd & 0xff); + return String.format("%x.%02x", (bcd & 0xFF00) >> 8, bcd & 0x00FF); } /** @@ -169,7 +169,7 @@ public final class DescriptorUtils descriptor.bDescriptorType(), decodeBCD(descriptor.bcdUSB()), descriptor.bDeviceClass() & 0xff, - getUSBClassName(descriptor.bDeviceClass() & 0xff), + getUSBClassName(descriptor.bDeviceClass()), descriptor.bDeviceSubClass() & 0xff, descriptor.bDeviceProtocol() & 0xff, descriptor.bMaxPacketSize0() & 0xff, @@ -246,7 +246,7 @@ public final class DescriptorUtils descriptor.bAlternateSetting() & 0xff, descriptor.bNumEndpoints() & 0xff, descriptor.bInterfaceClass() & 0xff, - getUSBClassName(descriptor.bInterfaceClass() & 0xff), + getUSBClassName(descriptor.bInterfaceClass()), descriptor.bInterfaceSubClass() & 0xff, descriptor.bInterfaceProtocol() & 0xff, descriptor.iInterface() & 0xff); @@ -277,9 +277,9 @@ public final class DescriptorUtils descriptor.bEndpointAddress() & 0xf, ((descriptor.bEndpointAddress() & 0x80) == 0) ? ("OUT") : ("IN"), descriptor.bmAttributes() & 0xff, - getTransferTypeName(descriptor.bmAttributes() & 0xff), - getSynchTypeName(descriptor.bmAttributes() & 0xff), - getUsageTypeName(descriptor.bmAttributes() & 0xff), + getTransferTypeName(descriptor.bmAttributes()), + getSynchTypeName(descriptor.bmAttributes()), + getUsageTypeName(descriptor.bmAttributes()), descriptor.wMaxPacketSize() & 0xffff, descriptor.bInterval() & 0xff); } @@ -292,7 +292,7 @@ public final class DescriptorUtils * The endpoint attributes value. * @return The transfer type name. */ - public static String getTransferTypeName(final int bmAttributes) + public static String getTransferTypeName(final byte bmAttributes) { switch (bmAttributes & LibUsb.TRANSFER_TYPE_MASK) { @@ -317,7 +317,7 @@ public final class DescriptorUtils * The endpoint attributes value. * @return The synch type name. */ - public static String getSynchTypeName(final int bmAttributes) + public static String getSynchTypeName(final byte bmAttributes) { switch ((bmAttributes & LibUsb.ISO_SYNC_TYPE_MASK) >> 2) { @@ -341,7 +341,7 @@ public final class DescriptorUtils * The endpoint attributes value. * @return The usage type name. */ - public static String getUsageTypeName(final int bmAttributes) + public static String getUsageTypeName(final byte bmAttributes) { switch ((bmAttributes & LibUsb.ISO_USAGE_TYPE_MASK) >> 4) { diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java index d1816a2..5560e70 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBDeviceTest.java @@ -34,16 +34,16 @@ public class LibUSBDeviceTest private Device device; /** The device endpoint to test with. */ - private int endpoint; + private byte endpoint; /** The value of the active configuration. */ - private int configValue; + private byte configValue; /** The vendor ID of the device we test. */ - private int vendorId; + private short vendorId; /** The manufacturer ID of the device we test. */ - private int productId; + private short productId; /** * Set up the test. @@ -51,19 +51,21 @@ public class LibUSBDeviceTest @Before public void setUp() { - this.context = new Context(); - LibUsb.init(this.context); + context = new Context(); + LibUsb.init(context); try { - this.device = findTestDevice(); - if (this.device == null) + device = findTestDevice(); + if (device == null) + { throw new IllegalStateException("Need at least one USB device " + "with at least one endpoint to execute this test"); + } } catch (Throwable e) { - this.device = null; + device = null; } } @@ -75,22 +77,29 @@ public class LibUSBDeviceTest private Device findTestDevice() { DeviceList list = new DeviceList(); - if (LibUsb.getDeviceList(this.context, list) <= 0) return null; + if (LibUsb.getDeviceList(context, list) <= 0) + { + return null; + } try { for (Device device: list) { DeviceDescriptor descriptor = new DeviceDescriptor(); if (LibUsb.getDeviceDescriptor(device, descriptor) != 0) + { continue; - this.vendorId = descriptor.idVendor(); - this.productId = descriptor.idProduct(); + } + vendorId = descriptor.idVendor(); + productId = descriptor.idProduct(); ConfigDescriptor config = new ConfigDescriptor(); if (LibUsb.getActiveConfigDescriptor(device, config) < 0) + { return null; + } try { - this.configValue = config.bConfigurationValue(); + configValue = config.bConfigurationValue(); for (int j = 0; j < config.bNumInterfaces(); j++) { Interface iface = config.iface()[j]; @@ -100,7 +109,7 @@ public class LibUSBDeviceTest iface.altsetting()[k]; if (ifaceDescriptor.bNumEndpoints() > 1) { - this.endpoint = ifaceDescriptor.endpoint()[0]. + endpoint = ifaceDescriptor.endpoint()[0]. bEndpointAddress(); return LibUsb.refDevice(device); } @@ -126,8 +135,14 @@ public class LibUSBDeviceTest @After public void tearDown() { - if (this.device != null) LibUsb.unrefDevice(this.device); - if (this.context != null) LibUsb.exit(this.context); + if (device != null) + { + LibUsb.unrefDevice(device); + } + if (context != null) + { + LibUsb.exit(context); + } } /** @@ -137,8 +152,8 @@ public class LibUSBDeviceTest public void testGetBusNumber() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - assertTrue(LibUsb.getBusNumber(this.device) >= 0); + assumeNotNull(device); + assertTrue(LibUsb.getBusNumber(device) >= 0); } /** @@ -148,8 +163,8 @@ public class LibUSBDeviceTest public void testGetPortNumber() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - assertTrue(LibUsb.getPortNumber(this.device) >= 0); + assumeNotNull(device); + assertTrue(LibUsb.getPortNumber(device) >= 0); } /** @@ -159,9 +174,9 @@ public class LibUSBDeviceTest public void testGetPortPath() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); ByteBuffer path = ByteBuffer.allocateDirect(8); - int result = LibUsb.getPortPath(this.context, this.device, path); + int result = LibUsb.getPortPath(context, device, path); assertTrue(result > 0); assertTrue(result <= path.capacity()); } @@ -174,9 +189,9 @@ public class LibUSBDeviceTest public void testGetPortPathWithTooSmallBuffer() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); ByteBuffer path = ByteBuffer.allocateDirect(0); - int result = LibUsb.getPortPath(this.context, this.device, path); + int result = LibUsb.getPortPath(context, device, path); assertEquals(LibUsb.ERROR_OVERFLOW, result); } @@ -188,7 +203,7 @@ public class LibUSBDeviceTest public void testGetPortPathWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getPortPath(this.context, null, ByteBuffer.allocateDirect(8)); + LibUsb.getPortPath(context, null, ByteBuffer.allocateDirect(8)); } /** @@ -199,7 +214,7 @@ public class LibUSBDeviceTest public void testGetPortPathWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.getPortPath(this.context, this.device, null); + LibUsb.getPortPath(context, device, null); } /** @@ -210,9 +225,9 @@ public class LibUSBDeviceTest public void testGetPortPathWithUninitializedContext() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); final Context context = new Context(); - LibUsb.getPortPath(context, this.device, ByteBuffer.allocateDirect(16)); + LibUsb.getPortPath(context, device, ByteBuffer.allocateDirect(16)); } /** @@ -223,7 +238,7 @@ public class LibUSBDeviceTest public void testGetPortPathWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getPortPath(this.context, new Device(), ByteBuffer.allocateDirect(16)); + LibUsb.getPortPath(context, new Device(), ByteBuffer.allocateDirect(16)); } /** @@ -233,17 +248,17 @@ public class LibUSBDeviceTest public void testGetParent() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); DeviceList list = new DeviceList(); - LibUsb.getDeviceList(this.context, list); + LibUsb.getDeviceList(context, list); try { - Device parent = LibUsb.getParent(this.device); + Device parent = LibUsb.getParent(device); // We cannot test anything else here. Parent can be null if our // test device is a root device. We just make sure that it can't // be the device itself. - assertNotEquals(parent, this.device); + assertNotEquals(parent, device); } finally { @@ -268,8 +283,8 @@ public class LibUSBDeviceTest public void testGetDeviceAddress() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - assertTrue(LibUsb.getDeviceAddress(this.device) >= 0); + assumeNotNull(device); + assertTrue(LibUsb.getDeviceAddress(device) >= 0); } /** @@ -290,9 +305,9 @@ public class LibUSBDeviceTest public void testGetDeviceSpeed() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - int speed = LibUsb.getDeviceSpeed(this.device); - assertTrue(speed >= LibUsb.SPEED_UNKNOWN && speed <= LibUsb.SPEED_SUPER); + assumeNotNull(device); + int speed = LibUsb.getDeviceSpeed(device); + assertTrue((speed >= LibUsb.SPEED_UNKNOWN) && (speed <= LibUsb.SPEED_SUPER)); } /** @@ -306,71 +321,71 @@ public class LibUSBDeviceTest } /** - * Tests the {@link LibUsb#getMaxPacketSize(Device, int)} method. + * Tests the {@link LibUsb#getMaxPacketSize(Device, byte)} method. */ @Test public void testGetMaxPacketSizeWithInvalidEndpoint() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); assertEquals(LibUsb.ERROR_NOT_FOUND, - LibUsb.getMaxPacketSize(this.device, 0)); + LibUsb.getMaxPacketSize(device, (byte) 0)); } /** - * Tests the {@link LibUsb#getMaxPacketSize(Device, int)} method. + * Tests the {@link LibUsb#getMaxPacketSize(Device, byte)} method. */ @Test public void testGetMaxPacketSize() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - assertTrue(LibUsb.getMaxPacketSize(this.device, this.endpoint) > 0); + assumeNotNull(device); + assertTrue(LibUsb.getMaxPacketSize(device, endpoint) > 0); } /** - * Tests the {@link LibUsb#getMaxPacketSize(Device, int)} method without a + * Tests the {@link LibUsb#getMaxPacketSize(Device, byte)} method without a * device. */ @Test(expected = IllegalArgumentException.class) public void testGetMaxPacketSizeWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getMaxPacketSize(null, 0); + LibUsb.getMaxPacketSize(null, (byte) 0); } /** - * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, int)} method. + * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, byte)} method. */ @Test public void testGetMaxIsoPacketSizeWithInvalidEndpoint() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); assertEquals(LibUsb.ERROR_NOT_FOUND, - LibUsb.getMaxIsoPacketSize(this.device, 0)); + LibUsb.getMaxIsoPacketSize(device, (byte) 0)); } /** - * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, int)} method. + * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, byte)} method. */ @Test public void testGetMaxIsoPacketSize() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); - assertTrue(LibUsb.getMaxIsoPacketSize(this.device, this.endpoint) > 0); + assumeNotNull(device); + assertTrue(LibUsb.getMaxIsoPacketSize(device, endpoint) > 0); } /** - * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, int)} method without + * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, byte)} method without * a device. */ @Test(expected = IllegalArgumentException.class) public void testGetMaxIsoPacketSizeWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getMaxIsoPacketSize(null, 0); + LibUsb.getMaxIsoPacketSize(null, (byte) 0); } /** @@ -381,7 +396,7 @@ public class LibUSBDeviceTest public void testRefUnRefDevice() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); Device device = LibUsb.refDevice(this.device); try { @@ -424,10 +439,10 @@ public class LibUSBDeviceTest public void testOpenAndClose() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); DeviceHandle handle = new DeviceHandle(); - int result = LibUsb.open(this.device, handle); - assertTrue(result == LibUsb.SUCCESS || result == LibUsb.ERROR_ACCESS); + int result = LibUsb.open(device, handle); + assertTrue((result == LibUsb.SUCCESS) || (result == LibUsb.ERROR_ACCESS)); if (result == LibUsb.SUCCESS) { LibUsb.close(handle); @@ -464,7 +479,7 @@ public class LibUSBDeviceTest public void testOpenWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.open(this.device, null); + LibUsb.open(device, null); } /** @@ -486,9 +501,12 @@ public class LibUSBDeviceTest public void testOpenDeviceWithVidPid() { assumeUsbTestsEnabled(); - DeviceHandle handle = LibUsb.openDeviceWithVidPid(this.context, - this.vendorId, this.productId); - if (handle != null) LibUsb.close(handle); + DeviceHandle handle = LibUsb.openDeviceWithVidPid(context, + vendorId, productId); + if (handle != null) + { + LibUsb.close(handle); + } } /** @@ -570,14 +588,14 @@ public class LibUSBDeviceTest } /** - * Tests the {@link LibUsb#clearHalt(DeviceHandle, int)} method without a + * Tests the {@link LibUsb#clearHalt(DeviceHandle, byte)} method without a * handle. */ @Test(expected = IllegalArgumentException.class) public void testClearHaltWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.clearHalt(null, 0); + LibUsb.clearHalt(null, (byte) 0); } /** @@ -643,7 +661,7 @@ public class LibUSBDeviceTest public void testGetDeviceDescriptorWithoutDescriptor() { assumeUsbTestsEnabled(); - LibUsb.getDeviceDescriptor(this.device, null); + LibUsb.getDeviceDescriptor(device, null); } /** @@ -658,9 +676,9 @@ public class LibUSBDeviceTest public void testGetDeviceDescriptor() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); DeviceDescriptor desc = new DeviceDescriptor(); - LibUsb.getDeviceDescriptor(this.device, desc); + LibUsb.getDeviceDescriptor(device, desc); desc.bcdDevice(); desc.bcdUSB(); assertEquals(LibUsb.DT_DEVICE, desc.bDescriptorType()); @@ -693,7 +711,7 @@ public class LibUSBDeviceTest public void testGetActiveConfigDescriptorWithoutDescriptor() { assumeUsbTestsEnabled(); - LibUsb.getActiveConfigDescriptor(this.device, null); + LibUsb.getActiveConfigDescriptor(device, null); } /** @@ -715,7 +733,9 @@ public class LibUSBDeviceTest assertTrue(desc.wTotalLength() >= desc.bLength()); for (Interface iface: desc.iface()) + { validateInterface(iface); + } } /** @@ -786,9 +806,9 @@ public class LibUSBDeviceTest public void testGetActiveConfigDescriptor() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); ConfigDescriptor desc = new ConfigDescriptor(); - LibUsb.getActiveConfigDescriptor(this.device, desc); + LibUsb.getActiveConfigDescriptor(device, desc); try { validateConfigDescriptor(desc); @@ -801,39 +821,39 @@ public class LibUSBDeviceTest /** * Tests the - * {@link LibUsb#getConfigDescriptor(Device, int, ConfigDescriptor)} method + * {@link LibUsb#getConfigDescriptor(Device, byte, ConfigDescriptor)} method * without a device. */ @Test(expected = IllegalArgumentException.class) public void testGetConfigDescriptorWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptor(null, 0, new ConfigDescriptor()); + LibUsb.getConfigDescriptor(null, (byte) 0, new ConfigDescriptor()); } /** * Tests the - * {@link LibUsb#getConfigDescriptor(Device, int, ConfigDescriptor)} method + * {@link LibUsb#getConfigDescriptor(Device, byte, ConfigDescriptor)} method * without a descriptor. */ @Test(expected = IllegalArgumentException.class) public void testGetConfigDescriptorWithoutDescriptor() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptor(this.device, 0, null); + LibUsb.getConfigDescriptor(device, (byte) 0, null); } /** * Tests the - * {@link LibUsb#getConfigDescriptor(Device, int, ConfigDescriptor)} method. + * {@link LibUsb#getConfigDescriptor(Device, byte, ConfigDescriptor)} method. */ @Test public void testGetConfigDescriptor() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); ConfigDescriptor desc = new ConfigDescriptor(); - LibUsb.getConfigDescriptor(this.device, 0, desc); + LibUsb.getConfigDescriptor(device, (byte) 0, desc); try { validateConfigDescriptor(desc); @@ -846,40 +866,40 @@ public class LibUSBDeviceTest /** * Tests the - * {@link LibUsb#getConfigDescriptorByValue(Device, int, ConfigDescriptor)} + * {@link LibUsb#getConfigDescriptorByValue(Device, byte, ConfigDescriptor)} * method without a device. */ @Test(expected = IllegalArgumentException.class) public void testGetConfigDescriptorByValueWithoutDevice() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptorByValue(null, 0, new ConfigDescriptor()); + LibUsb.getConfigDescriptorByValue(null, (byte) 0, new ConfigDescriptor()); } /** * Tests the - * {@link LibUsb#getConfigDescriptorByValue(Device, int, ConfigDescriptor)} + * {@link LibUsb#getConfigDescriptorByValue(Device, byte, ConfigDescriptor)} * method without a descriptor. */ @Test(expected = IllegalArgumentException.class) public void testGetConfigDescriptorByValueWithoutDescriptor() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptorByValue(this.device, 0, null); + LibUsb.getConfigDescriptorByValue(device, (byte) 0, null); } /** * Tests the - * {@link LibUsb#getConfigDescriptorByValue(Device, int, ConfigDescriptor)} + * {@link LibUsb#getConfigDescriptorByValue(Device, byte, ConfigDescriptor)} * method. */ @Test public void testGetConfigDescriptorByValue() { assumeUsbTestsEnabled(); - assumeNotNull(this.device); + assumeNotNull(device); ConfigDescriptor desc = new ConfigDescriptor(); - LibUsb.getConfigDescriptorByValue(this.device, this.configValue, desc); + LibUsb.getConfigDescriptorByValue(device, configValue, desc); try { validateConfigDescriptor(desc); @@ -913,214 +933,214 @@ public class LibUSBDeviceTest /** * Tests the - * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int)} + * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, byte, StringBuffer)} * method without a handle. */ @Test(expected = IllegalArgumentException.class) public void testGetStringDescriptorAsciiWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptorAscii(null, 0, new StringBuffer()); + LibUsb.getStringDescriptorAscii(null, (byte) 0, new StringBuffer()); } /** * Tests the - * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int)} + * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, byte, StringBuffer)} * method without a buffer. */ @Test(expected = IllegalArgumentException.class) public void testGetStringDescriptorAsciiWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptorAscii(new DeviceHandle(), 0, null); + LibUsb.getStringDescriptorAscii(new DeviceHandle(), (byte) 0, null); } /** * Tests the - * {@link LibUsb#getDescriptor(DeviceHandle, int, int, ByteBuffer)} method + * {@link LibUsb#getDescriptor(DeviceHandle, byte, byte, ByteBuffer)} method * without a handle. */ @Test(expected = IllegalArgumentException.class) public void testGetDescriptorWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.getDescriptor(null, 0, 0, ByteBuffer.allocate(18)); + LibUsb.getDescriptor(null, (byte) 0, (byte) 0, ByteBuffer.allocate(18)); } /** * Tests the - * {@link LibUsb#getDescriptor(DeviceHandle, int, int, ByteBuffer)} method + * {@link LibUsb#getDescriptor(DeviceHandle, byte, byte, ByteBuffer)} method * without a buffer. */ @Test(expected = IllegalArgumentException.class) public void testGetDescriptorWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.getDescriptor(new DeviceHandle(), 0, 0, null); + LibUsb.getDescriptor(new DeviceHandle(), (byte) 0, (byte) 0, null); } /** * Tests the - * {@link LibUsb#getStringDescriptor(DeviceHandle, int, int, ByteBuffer)} + * {@link LibUsb#getStringDescriptor(DeviceHandle, byte, short, ByteBuffer)} * method without a handle. */ @Test(expected = IllegalArgumentException.class) public void testGetStringDescriptorWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptor(null, 0, 0, ByteBuffer.allocate(18)); + LibUsb.getStringDescriptor(null, (byte) 0, (short) 0, ByteBuffer.allocate(18)); } /** * Tests the - * {@link LibUsb#getStringDescriptor(DeviceHandle, int, int, ByteBuffer)} + * {@link LibUsb#getStringDescriptor(DeviceHandle, byte, short, ByteBuffer)} * method without a buffer. */ @Test(expected = IllegalArgumentException.class) public void testGetStringDescriptorWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptor(new DeviceHandle(), 0, 0, null); + LibUsb.getStringDescriptor(new DeviceHandle(), (byte) 0, (short) 0, null); } /** * Tests the - * {@link LibUsb#controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int)} + * {@link LibUsb#controlTransfer(DeviceHandle, byte, byte, short, short, ByteBuffer, long)} * method without a handle. */ @Test(expected = IllegalArgumentException.class) public void testControlTransferWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.controlTransfer(null, 0, 0, 0, 0, ByteBuffer.allocate(0), 0); + LibUsb.controlTransfer(null, (byte) 0, (byte) 0, (short) 0, (short) 0, ByteBuffer.allocate(0), 0); } /** * Tests the - * {@link LibUsb#controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int)} + * {@link LibUsb#controlTransfer(DeviceHandle, byte, byte, short, short, ByteBuffer, long)} * method without a buffer. */ @Test(expected = IllegalArgumentException.class) public void testControlTransferWithoutBuffer() { assumeUsbTestsEnabled(); - LibUsb.controlTransfer(new DeviceHandle(), 0, 0, 0, 0, null, 0); + LibUsb.controlTransfer(new DeviceHandle(), (byte) 0, (byte) 0, (short) 0, (short) 0, null, 0); } /** * Tests the - * {@link LibUsb#controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int)} + * {@link LibUsb#controlTransfer(DeviceHandle, byte, byte, short, short, ByteBuffer, long)} * method with an indirect buffer. */ @Test(expected = IllegalArgumentException.class) public void testControlTransferWithIndirectBuffer() { assumeUsbTestsEnabled(); - LibUsb.controlTransfer(new DeviceHandle(), 0, 0, 0, 0, + LibUsb.controlTransfer(new DeviceHandle(), (byte) 0, (byte) 0, (short) 0, (short) 0, ByteBuffer.allocate(0), 0); } /** * Tests the - * {@link LibUsb#bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a handle. */ @Test(expected = IllegalArgumentException.class) public void testBulkTransferWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.bulkTransfer(null, 0, ByteBuffer.allocate(0), + LibUsb.bulkTransfer(null, (byte) 0, ByteBuffer.allocate(0), IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a data buffer. */ @Test(expected = IllegalArgumentException.class) public void testBulkTransferWithoutDataBuffer() { assumeUsbTestsEnabled(); - LibUsb.bulkTransfer(new DeviceHandle(), 0, null, + LibUsb.bulkTransfer(new DeviceHandle(), (byte) 0, null, IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method with an indirect data buffer. */ @Test(expected = IllegalArgumentException.class) public void testBulkTransferWithIndirectDataBuffer() { assumeUsbTestsEnabled(); - LibUsb.bulkTransfer(new DeviceHandle(), 0, ByteBuffer.allocate(0), + LibUsb.bulkTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocate(0), IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a transferred buffer. */ @Test(expected = IllegalArgumentException.class) public void testBulkTransferWithoutTransferredBuffer() { assumeUsbTestsEnabled(); - LibUsb.bulkTransfer(new DeviceHandle(), 0, ByteBuffer.allocate(0), + LibUsb.bulkTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocate(0), null, 0); } /** * Tests the - * {@link LibUsb#interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a handle. */ @Test(expected = IllegalArgumentException.class) public void testInterruptTransferWithoutHandle() { assumeUsbTestsEnabled(); - LibUsb.interruptTransfer(null, 0, ByteBuffer.allocate(0), + LibUsb.interruptTransfer(null, (byte) 0, ByteBuffer.allocate(0), IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a data buffer. */ @Test(expected = IllegalArgumentException.class) public void testInterruptTransferWithoutDataBuffer() { assumeUsbTestsEnabled(); - LibUsb.interruptTransfer(new DeviceHandle(), 0, null, + LibUsb.interruptTransfer(new DeviceHandle(), (byte) 0, null, IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method with an indirect data buffer. */ @Test(expected = IllegalArgumentException.class) public void testInterruptTransferWithIndirectDataBuffer() { assumeUsbTestsEnabled(); - LibUsb.interruptTransfer(new DeviceHandle(), 0, ByteBuffer.allocate(0), + LibUsb.interruptTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocate(0), IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method without a transferred buffer. */ @Test(expected = IllegalArgumentException.class) public void testInterruptTransferWithoutTransferredBuffer() { assumeUsbTestsEnabled(); - LibUsb.interruptTransfer(new DeviceHandle(), 0, ByteBuffer.allocate(0), + LibUsb.interruptTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocate(0), null, 0); } @@ -1133,9 +1153,9 @@ public class LibUSBDeviceTest { assumeUsbTestsEnabled(); DeviceList list = new DeviceList(); - assertTrue(LibUsb.getDeviceList(this.context, list) >= 0); + assertTrue(LibUsb.getDeviceList(context, list) >= 0); LibUsb.freeDeviceList(list, true); - + try { LibUsb.freeDeviceList(list, true); @@ -1162,7 +1182,7 @@ public class LibUSBDeviceTest { assertTrue(LibUsb.getDeviceList(null, list) >= 0); LibUsb.freeDeviceList(list, true); - + try { LibUsb.freeDeviceList(list, true); diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBGlobalTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBGlobalTest.java index eb8b2d6..930b7d0 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBGlobalTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBGlobalTest.java @@ -16,7 +16,7 @@ import org.junit.Before; import org.junit.Test; /** - * Tests the global-scope methods of the {@link LibUsb} class which need a + * Tests the global-scope methods of the {@link LibUsb} class which need a * open USB context. * * @author Klaus Reimer (k@ailis.de) @@ -32,14 +32,14 @@ public class LibUSBGlobalTest @Before public void setUp() { - this.context = new Context(); + context = new Context(); try { - LibUsb.init(this.context); + LibUsb.init(context); } catch (Throwable e) { - this.context = null; + context = null; } } @@ -49,7 +49,10 @@ public class LibUSBGlobalTest @After public void tearDown() { - if (this.context != null) LibUsb.exit(this.context); + if (context != null) + { + LibUsb.exit(context); + } } /** @@ -59,11 +62,11 @@ public class LibUSBGlobalTest public void testSetDebug() { assumeUsbTestsEnabled(); - LibUsb.setDebug(this.context, LibUsb.LOG_LEVEL_DEBUG); - LibUsb.setDebug(this.context, LibUsb.LOG_LEVEL_INFO); - LibUsb.setDebug(this.context, LibUsb.LOG_LEVEL_WARNING); - LibUsb.setDebug(this.context, LibUsb.LOG_LEVEL_ERROR); - LibUsb.setDebug(this.context, LibUsb.LOG_LEVEL_NONE); + LibUsb.setDebug(context, LibUsb.LOG_LEVEL_DEBUG); + LibUsb.setDebug(context, LibUsb.LOG_LEVEL_INFO); + LibUsb.setDebug(context, LibUsb.LOG_LEVEL_WARNING); + LibUsb.setDebug(context, LibUsb.LOG_LEVEL_ERROR); + LibUsb.setDebug(context, LibUsb.LOG_LEVEL_NONE); } /** @@ -74,7 +77,7 @@ public class LibUSBGlobalTest { assumeUsbTestsEnabled(); final DeviceList list = new DeviceList(); - final int result = LibUsb.getDeviceList(this.context, list); + final int result = LibUsb.getDeviceList(context, list); assertTrue( "At least one USB device must be present for the simple unit tests", result > 0); @@ -98,7 +101,7 @@ public class LibUSBGlobalTest public void testGetDeviceListWithoutList() { assumeUsbTestsEnabled(); - LibUsb.getDeviceList(this.context, null); + LibUsb.getDeviceList(context, null); } /** @@ -109,7 +112,7 @@ public class LibUSBGlobalTest public void testEndianConversion() { assumeUsbTestsEnabled(); - assertEquals(0x1234, LibUsb.le16ToCpu(LibUsb.cpuToLe16(0x1234))); + assertEquals(0x1234, LibUsb.le16ToCpu(LibUsb.cpuToLe16((short) 0x1234))); } /** diff --git a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java index c54d0b1..b42e2b1 100644 --- a/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java +++ b/src/test/java/de/ailis/usb4java/libusb/LibUSBTest.java @@ -59,9 +59,9 @@ public class LibUSBTest assertEquals(0x07, LibUsb.REQUEST_SET_DESCRIPTOR); assertEquals(0x08, LibUsb.REQUEST_GET_CONFIGURATION); assertEquals(0x09, LibUsb.REQUEST_SET_CONFIGURATION); - assertEquals(0x0a, LibUsb.REQUEST_GET_INTERFACE); - assertEquals(0x0b, LibUsb.REQUEST_SET_INTERFACE); - assertEquals(0x0c, LibUsb.REQUEST_SYNCH_FRAME); + assertEquals(0x0A, LibUsb.REQUEST_GET_INTERFACE); + assertEquals(0x0B, LibUsb.REQUEST_SET_INTERFACE); + assertEquals(0x0C, LibUsb.REQUEST_SYNCH_FRAME); assertEquals(0x30, LibUsb.REQUEST_SET_SEL); assertEquals(0x31, LibUsb.SET_ISOCH_DELAY); @@ -108,14 +108,14 @@ public class LibUSBTest assertEquals(8, LibUsb.CLASS_MASS_STORAGE); assertEquals(9, LibUsb.CLASS_HUB); assertEquals(10, LibUsb.CLASS_DATA); - assertEquals(0x0b, LibUsb.CLASS_SMART_CARD); - assertEquals(0x0d, LibUsb.CLASS_CONTENT_SECURITY); - assertEquals(0x0e, LibUsb.CLASS_VIDEO); - assertEquals(0x0f, LibUsb.CLASS_PERSONAL_HEALTHCARE); - assertEquals(0xdc, LibUsb.CLASS_DIAGNOSTIC_DEVICE); - assertEquals(0xe0, LibUsb.CLASS_WIRELESS); - assertEquals(0xfe, LibUsb.CLASS_APPLICATION); - assertEquals(0xff, LibUsb.CLASS_VENDOR_SPEC); + assertEquals(0x0B, LibUsb.CLASS_SMART_CARD); + assertEquals(0x0D, LibUsb.CLASS_CONTENT_SECURITY); + assertEquals(0x0E, LibUsb.CLASS_VIDEO); + assertEquals(0x0F, LibUsb.CLASS_PERSONAL_HEALTHCARE); + assertEquals((byte) 0xDC, LibUsb.CLASS_DIAGNOSTIC_DEVICE); + assertEquals((byte) 0xE0, LibUsb.CLASS_WIRELESS); + assertEquals((byte) 0xFE, LibUsb.CLASS_APPLICATION); + assertEquals((byte) 0xFF, LibUsb.CLASS_VENDOR_SPEC); // Descriptor types assertEquals(0x01, LibUsb.DT_DEVICE); @@ -127,10 +127,10 @@ public class LibUSBTest assertEquals(0x22, LibUsb.DT_REPORT); assertEquals(0x23, LibUsb.DT_PHYSICAL); assertEquals(0x29, LibUsb.DT_HUB); - assertEquals(0x2a, LibUsb.DT_SUPERSPEED_HUB); + assertEquals(0x2A, LibUsb.DT_SUPERSPEED_HUB); // Endpoint direction - assertEquals(0x80, LibUsb.ENDPOINT_IN); + assertEquals((byte) 0x80, LibUsb.ENDPOINT_IN); assertEquals(0x00, LibUsb.ENDPOINT_OUT); // Transfer types @@ -346,25 +346,25 @@ public class LibUSBTest } /** - * Tests the {@link LibUsb#getMaxPacketSize(Device, int)} method with + * Tests the {@link LibUsb#getMaxPacketSize(Device, byte)} method with * uninitialized device. */ @Test(expected = IllegalStateException.class) public void testMaxPacketSizeWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getMaxPacketSize(new Device(), 0); + LibUsb.getMaxPacketSize(new Device(), (byte) 0); } /** - * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, int)} method with + * Tests the {@link LibUsb#getMaxIsoPacketSize(Device, byte)} method with * uninitialized device. */ @Test(expected = IllegalStateException.class) public void testMaxIsoPacketSizeWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getMaxIsoPacketSize(new Device(), 0); + LibUsb.getMaxIsoPacketSize(new Device(), (byte) 0); } /** @@ -478,14 +478,14 @@ public class LibUSBTest } /** - * Tests the {@link LibUsb#clearHalt(DeviceHandle, int)} method with + * Tests the {@link LibUsb#clearHalt(DeviceHandle, byte)} method with * uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testClearHaltWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.clearHalt(new DeviceHandle(), 0); + LibUsb.clearHalt(new DeviceHandle(), (byte) 0); } /** @@ -545,14 +545,14 @@ public class LibUSBTest /** * Tests the - * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, int, StringBuffer, int)} + * {@link LibUsb#getStringDescriptorAscii(DeviceHandle, byte, StringBuffer)} * method with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testGetStringDescriptorAsciiWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptorAscii(new DeviceHandle(), 0, + LibUsb.getStringDescriptorAscii(new DeviceHandle(), (byte) 0, new StringBuffer()); } @@ -570,26 +570,26 @@ public class LibUSBTest /** * Tests the - * {@link LibUsb#getConfigDescriptor(Device, int, ConfigDescriptor)} method + * {@link LibUsb#getConfigDescriptor(Device, byte, ConfigDescriptor)} method * with uninitialized device. */ @Test(expected = IllegalStateException.class) public void testGetConfigDescriptorWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptor(new Device(), 0, new ConfigDescriptor()); + LibUsb.getConfigDescriptor(new Device(), (byte) 0, new ConfigDescriptor()); } /** * Tests the - * {@link LibUsb#getConfigDescriptorByValue(Device, int, ConfigDescriptor)} + * {@link LibUsb#getConfigDescriptorByValue(Device, byte, ConfigDescriptor)} * method with uninitialized device. */ @Test(expected = IllegalStateException.class) public void testGetConfigDescriptorByValueWithUninitializedDevice() { assumeUsbTestsEnabled(); - LibUsb.getConfigDescriptorByValue(new Device(), 0, + LibUsb.getConfigDescriptorByValue(new Device(), (byte) 0, new ConfigDescriptor()); } @@ -606,66 +606,66 @@ public class LibUSBTest /** * Tests the - * {@link LibUsb#getDescriptor(DeviceHandle, int, int, ByteBuffer)} method + * {@link LibUsb#getDescriptor(DeviceHandle, byte, byte, ByteBuffer)} method * with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testGetDescriptorWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.getDescriptor(new DeviceHandle(), 0, 0, + LibUsb.getDescriptor(new DeviceHandle(), (byte) 0, (byte) 0, ByteBuffer.allocateDirect(1)); } /** * Tests the - * {@link LibUsb#getStringDescriptor(DeviceHandle, int, int, ByteBuffer)} + * {@link LibUsb#getStringDescriptor(DeviceHandle, byte, short, ByteBuffer)} * method with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testGetStringDescriptorWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.getStringDescriptor(new DeviceHandle(), 0, 0, + LibUsb.getStringDescriptor(new DeviceHandle(), (byte) 0, (short) 0, ByteBuffer.allocateDirect(1)); } /** * Tests the - * {@link LibUsb#controlTransfer(DeviceHandle, int, int, int, int, ByteBuffer, int)} + * {@link LibUsb#controlTransfer(DeviceHandle, byte, byte, short, short, ByteBuffer, long)} * method with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testControlTransferWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.controlTransfer(new DeviceHandle(), 0, 0, 0, 0, + LibUsb.controlTransfer(new DeviceHandle(), (byte) 0, (byte) 0, (short) 0, (short) 0, ByteBuffer.allocateDirect(1), 0); } /** * Tests the - * {@link LibUsb#bulkTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#bulkTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testBulkTransferWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.bulkTransfer(new DeviceHandle(), 0, + LibUsb.bulkTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocateDirect(1), IntBuffer.allocate(1), 0); } /** * Tests the - * {@link LibUsb#interruptTransfer(DeviceHandle, int, ByteBuffer, IntBuffer, int)} + * {@link LibUsb#interruptTransfer(DeviceHandle, byte, ByteBuffer, IntBuffer, long)} * method with uninitialized device handle. */ @Test(expected = IllegalStateException.class) public void testInterruptTransferWithUninitializedHandle() { assumeUsbTestsEnabled(); - LibUsb.interruptTransfer(new DeviceHandle(), 0, + LibUsb.interruptTransfer(new DeviceHandle(), (byte) 0, ByteBuffer.allocateDirect(1), IntBuffer.allocate(1), 0); } @@ -681,7 +681,7 @@ public class LibUSBTest } /** - * Tests {@link LibUsb#openDeviceWithVidPid(Context, int, int)} with + * Tests {@link LibUsb#openDeviceWithVidPid(Context, short, short)} with * uninitialized USB context. */ @Test(expected = IllegalStateException.class) @@ -689,7 +689,7 @@ public class LibUSBTest { assumeUsbTestsEnabled(); final Context context = new Context(); - LibUsb.openDeviceWithVidPid(context, 0, 0); + LibUsb.openDeviceWithVidPid(context, (short) 0, (short) 0); } /** diff --git a/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java b/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java index b9c32d9..b064e4f 100644 --- a/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java +++ b/src/test/java/de/ailis/usb4java/utils/DescriptorUtilsTest.java @@ -26,12 +26,12 @@ import de.ailis.usb4java.libusb.LibUsb; public class DescriptorUtilsTest { /** - * Tests the {@link DescriptorUtils#decodeBCD(int)} method. + * Tests the {@link DescriptorUtils#decodeBCD(short)} method. */ @Test public void testDecodeBCD() { - assertEquals("10.20", DescriptorUtils.decodeBCD(0x1020)); + assertEquals("10.20", DescriptorUtils.decodeBCD((short) 0x1020)); } /** @@ -49,52 +49,52 @@ public class DescriptorUtilsTest } /** - * Tests the {@link DescriptorUtils#getSynchTypeName(int)} method. + * Tests the {@link DescriptorUtils#getSynchTypeName(byte)} method. */ @Test public void testGetSynchTypeName() { - assertEquals("None", DescriptorUtils.getSynchTypeName(0)); - assertEquals("Asynchronous", DescriptorUtils.getSynchTypeName(4)); - assertEquals("Adaptive", DescriptorUtils.getSynchTypeName(8)); - assertEquals("Synchronous", DescriptorUtils.getSynchTypeName(12)); + assertEquals("None", DescriptorUtils.getSynchTypeName((byte) 0)); + assertEquals("Asynchronous", DescriptorUtils.getSynchTypeName((byte) 4)); + assertEquals("Adaptive", DescriptorUtils.getSynchTypeName((byte) 8)); + assertEquals("Synchronous", DescriptorUtils.getSynchTypeName((byte) 12)); } /** - * Tests the {@link DescriptorUtils#getUsageTypeName(int)} method. + * Tests the {@link DescriptorUtils#getUsageTypeName(byte)} method. */ @Test public void testGetUsageTypeName() { - assertEquals("Data", DescriptorUtils.getUsageTypeName(0)); - assertEquals("Feedback", DescriptorUtils.getUsageTypeName(16)); + assertEquals("Data", DescriptorUtils.getUsageTypeName((byte) 0)); + assertEquals("Feedback", DescriptorUtils.getUsageTypeName((byte) 16)); assertEquals("Implicit Feedback Data", - DescriptorUtils.getUsageTypeName(32)); - assertEquals("Reserved", DescriptorUtils.getUsageTypeName(48)); + DescriptorUtils.getUsageTypeName((byte) 32)); + assertEquals("Reserved", DescriptorUtils.getUsageTypeName((byte) 48)); } /** - * Tests the {@link DescriptorUtils#getTransferTypeName(int)} method. + * Tests the {@link DescriptorUtils#getTransferTypeName(byte)} method. */ @Test public void testGetTransferTypeName() { - assertEquals("Control", DescriptorUtils.getTransferTypeName(0)); - assertEquals("Isochronous", DescriptorUtils.getTransferTypeName(1)); - assertEquals("Bulk", DescriptorUtils.getTransferTypeName(2)); - assertEquals("Interrupt", DescriptorUtils.getTransferTypeName(3)); + assertEquals("Control", DescriptorUtils.getTransferTypeName((byte) 0)); + assertEquals("Isochronous", DescriptorUtils.getTransferTypeName((byte) 1)); + assertEquals("Bulk", DescriptorUtils.getTransferTypeName((byte) 2)); + assertEquals("Interrupt", DescriptorUtils.getTransferTypeName((byte) 3)); } /** - * Tests the {@link DescriptorUtils#getUSBClassName(int)} method. + * Tests the {@link DescriptorUtils#getUSBClassName(byte)} method. */ @Test public void testGetUSBClassName() { assertEquals("Audio", DescriptorUtils.getUSBClassName(LibUsb.CLASS_AUDIO)); - assertEquals("Unknown", DescriptorUtils.getUSBClassName(0x1234)); + assertEquals("Unknown", DescriptorUtils.getUSBClassName((byte) 0xF3)); } /** From 451b081d3fbf580af2166f01c91f77190ca729e5 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 17 Jun 2013 09:00:48 +0200 Subject: [PATCH 67/82] Commit updated libs. --- .../libusb/linux-x86_64/libusb4java.so | Bin 138520 -> 138520 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 86686 -> 87198 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index 253f6a397836c482db7c178304279e16e3d0485d..4edf49d75a7c2a7e65e1293d26500f3f7c073e71 100644 GIT binary patch delta 32939 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 k?#3o|gY_4l4W>4#nEK#vwLBuxd(O6MTG#Zs? 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 aR1sZxOhp$`u84LyucBSjs(5R6wf_&i)NT&| diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index 2370b30cd259c6e241bedc3761e182720fe6351c..54db8dd549314c712256c5bda5f70bc882414889 100644 GIT binary patch delta 82 zcmeyehwIB8t_dB?e>d-&*zL=_w3WH>cI$1%t+$yplR<*p*;APQDoX=dfec{4$RGfu YB^VeQKwO~sbomY@QLs|;4klYM0IAd-sQ>@~ delta 82 zcmeyehwIB8t_dB?Z+7jR*zL<~v4W}bcI$1%t+$yplR<*p*;APQDoX=dfec{4$RGfu YB^VeQKwO~sbomY@QLs|;4klYM0E-SD6951J diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll index 601862e1d10dd602cf0c7fd8e0533b114b189c23..3b768cbe90beb9c0d897fe3654594fb3977f16df 100644 GIT binary patch delta 14504 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 Date: Tue, 18 Jun 2013 10:07:21 +0200 Subject: [PATCH 68/82] Fix typo. Update libs with new fix. --- src/main/c/src/Transfer.c | 2 +- .../libusb/linux-x86_64/libusb4java.so | Bin 138520 -> 138520 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 87198 -> 87198 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index e845b9e..0a5e1ac 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -219,7 +219,7 @@ JNIEXPORT jint JNICALL METHOD_NAME(Transfer, length) /** * int actualLength() */ -JNIEXPORT jint JNICALL METHOD_NAME(Transfer, getActualLength) +JNIEXPORT jint JNICALL METHOD_NAME(Transfer, actualLength) ( JNIEnv *env, jobject this ) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index 4edf49d75a7c2a7e65e1293d26500f3f7c073e71..cb2f9ded1c75755dd38c11b5339a67946715ddda 100644 GIT binary patch delta 1145 zcmY*XTS!z<6g~USjLt}o4i~ti^nlcc3n4QuXvNC#?VMSq3QCiqXB7s?bB<;H$(e`Dnz4qGsoO?Ov)`rZrA@kKP z82`lh^Gkh2#FmOB=eoYlZ@;%K(PG8#aLAIq=WbHTidu_V?o@t5`9&ebWx^H0HG(9J zL<@-!p>4zn=i8Lq3HQhNkHY#XetalMsoNMx&c#&uA&W zN}CB4W8DsPV149(aoHr-RC(6i0HETJC>7U4*2;XFIjnLC;N>?bqt zV(w)|=6=i^r-F@j3-b}?h0L3nqj;a2Jh_scGTbyygFI}HwsSp?Crr$z5TZ3`Vt+O} zfCc2NX1$*M1*~V1uR<2vspbh^d`QRAlC1*i_3??5^z>R4s zK3F6Vr?jV$=kYWdL+=~K zhOjq0Zx}Og6e;1JzCNzBG+GF=C<}Wht7;;Ih!A^S^b6`Qwex^U9Q|)YMfjv6*I*Zf{Tei;V!QVFRR6BGO@^k9a+5*qM<-{*Lve_=Q(;wH0-ByL1^VI@fHDAeGg{9EV*xQ+=$ zDtyL_qDr`d4~oj5S-Oh@;J7rh0cHDy(LHYM?<;BTD}kQ+bp3qwfZ@dFIkwi%OAqUC o5}p89l`~Ki2wIgU7;Ie{qf9eXxm{H>%V5s%)L?6~suY|40eh<+$^ZZW delta 1141 zcmY*XYe*DP6uxI%b(Qt8sLigqsbLQ#nF9Ucj|HV4LN9WI(lyz9tuAC#)Q_Stv9Jg- zIhp!HYQf5~@^KN-64s*Vfv7!52r;$(L>5I*E(M)Aj%WwI$NBELcZNIDI%IAgGWSeE z{CHP*xvS%=J>g=`?2S2hca1C9fnT5@BKAxmrMj>+qEMbvenagYA;ew6Jwh*`kFZqz zWCjTjmjXkFNdtt(Mz70L!#^i|K^QgqG13XbE5cjCJHmUy6k%G3H6+V5Lw0t#6(6NF z6cy|Y|7mt5WvrW?%UY1v&7A;=_&rj^1Ccg3tUD;crbrDMh*h|WBT+U^Uo(3-O=CX8 z{2A+_ZR~zvo<)Ut_Jhoqn71<@V~*le9`K}xlaqMFqQQR7vp8|GH#4^*L}}2+c{V2| zETyEBeGTVZ(QmO)s=_u-H*xxwpE1tf&)&h_$=t@tAD;ir{uBE;oiR4X21WWD=90_e zm8;CD%$ewq(V!D2h#&FpVa_}BJ)!G23Sq@kh?56m%>Y64S@WR;d#xJ$k~3CM2xQ8< zgj$oFv_AvLk^a@mpg=l4O1cD^EO6{oFkrXI&g9(y0bEG&z-25-&4&u4jI|ve8`GHFh+z9=Eg;-ryXX}TIFM3^{h^fsSw6%B-n#{UjfM47bj z4KcwxbhtI>$DPE}c-pPPC^ozEVG5_*9vDVvu?OyBd$9(+afq=jr0$VR%q}<{;fy` zkm&HL@By>EjhN)M;JEi7^hjq_3)s7sjv%!qET8hAe!hBOz8dB_w&*vk7c2_j=*nKd sF}gRi!HQABpKA+W-In diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index 54db8dd549314c712256c5bda5f70bc882414889..a156868784b1171d89bd7a096cbd9b88cf043dcf 100644 GIT binary patch delta 81 zcmeyehwIB8t_dB?+@c32cKb4Y%4)pTdW&)EEhepGkl1$i6sEt*(m+-q0~jze2momb X28IR@7bremzJo~=tkk@N$yN*if^-)T delta 81 zcmeyehwIB8t_dB?e>d-&*zL=-w6*b8>n+Bux0tk&L1Nq4Q<(lLO9NSf3}C>>AONH# X7#JErT%h=L`3@#guu}65CR;H8p28lZ diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll index 3b768cbe90beb9c0d897fe3654594fb3977f16df..44b9c4b56586013f775a2bb0660770d686f04ff1 100644 GIT binary patch delta 370 zcmWm3Pbh-{9LDkA@6~!GYxS0tWpQxPNF21}FeMktiKAv?)+Cw3M6FRMDLc)@{JHQZ z2fgKWl8cLjdJ_kSQA&v%+*T}KhfmM9o|5e=*}k34nn1&KVQa)#?khZXtLOMNqfFjd ztNdS%`J;x_J16qFAkvr?3D1fgr=6zio00p7sRSoghOq)0Wz@%2qR8SD&#)3I16aa2 zUSUnC3?hRg+@Xs0X_Yao;tY@YMr~511zqS*YEGiWI1-r0I(Bh_3*6!X@2J3>Q3)Z8 z2u2adBDS#y7am^lg$n9YDy@iM2ouPr0xBECJ}z=zw5M2Z)+_fuq#dUF I+op$|f5%E+`~Uy| delta 372 zcmWm5Pbh-{9LDkA@13=xx7BJ9S&5vCvV+SG)Re@@iJQ&#TI68<9Hy3}{JCtW9n_nY zv`Fe*7HVe~Wwiq?Ld|6t2M6^gUx!c6Q%{dw^4cYDe$V46R||*JMq;Y)GOTsS)Ql3_ z#?H_GM>xj~9`J-FT(mB#^k4{4 z%piqLWyeTZTbab(kel>^EN?r>i*4Xt$*10k)pSjn}q;%m1?Dvu!z K`>y-d9{dB7U|?SW From f92a84c9796d01f3c4cb2286cdb64439bb3f3828 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 18 Jun 2013 10:51:06 +0200 Subject: [PATCH 69/82] Read the flags before calling the Java method, as it might free the underlying memory. --- src/main/c/src/Transfer.c | 15 +++++++++++---- .../libusb/linux-x86_64/libusb4java.so | Bin 138520 -> 138520 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 87198 -> 87198 bytes 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/c/src/Transfer.c b/src/main/c/src/Transfer.c index 0a5e1ac..b613e41 100644 --- a/src/main/c/src/Transfer.c +++ b/src/main/c/src/Transfer.c @@ -306,16 +306,23 @@ static void LIBUSB_CALL transferCallback(struct libusb_transfer *transfer) // The saved reference to the Java Transfer object. jobject jTransfer = transferData->transferObject; - // Call back into Java. - (*env)->CallVoidMethod(env, jCallback, jCallbackMethod, jTransfer); - - // Cleanup Java Transfer object too, if requested. + // Read flags before calling the Java method, as it could + // free the Transfer itself. if (transfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER) { + // Call back into Java. + (*env)->CallVoidMethod(env, jCallback, jCallbackMethod, jTransfer); + + // Cleanup Java Transfer object too, if requested. cleanupGlobalReferences(env, jTransfer); resetTransfer(env, jTransfer); free(transferData); } + else + { + // Call back into Java. + (*env)->CallVoidMethod(env, jCallback, jCallbackMethod, jTransfer); + } THREAD_END } diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index cb2f9ded1c75755dd38c11b5339a67946715ddda..2545e37f8bc3bc7633838bb41c8c8eed07d64f59 100644 GIT binary patch delta 23292 zcmc(n2UwIx)bDpzR^L?-5tJ@0AjO8*u|fm^djWexv3CUxiHHc66;a8kM-v-S6E(&X zRMZ$1HL)hqSYj6<>LOUMSN8sA-i4^&{l5Es_j&Gf^JMu=Ip@ro`p(R|?uz}&iv7xx zA^OnrT8;QGG-LE3+h?bkjFgcFv9IVxrJiHF1c?R1aVYJfr$x_L3JP+&0TlqZwl_cwdKbmccU}0@y2l z&LQ0CP`;{rT6IQqvz%&T5f5|>XBT*aV*u-ywb>EMLwKH3fY$JUS96}mwsWI%0DHvu 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 diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index a156868784b1171d89bd7a096cbd9b88cf043dcf..977eb0c633407ac5f9f66819a9b928cc6a17411f 100644 GIT binary patch delta 77 zcmeyehwIB8t_dAXJEbRf`7wp`G~Q~x#klnrlU6d*4(aV|DNO&ArFKXk2xI^QMg{>O ZEy2Lh0OIbDo-WtHBnDDw*1=>a1^`0Y7Y_gc delta 77 zcmeyehwIB8t_dAX+@ce^{FpvvHQs8y#klnrlU6cNXgga9(?4Y?ZqWmQ3}C>>AONH# X7#JErTyD|nave-!AcbZfOm<=b;y)A% diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll index 44b9c4b56586013f775a2bb0660770d686f04ff1..141fa125e52a93900a09602c4d413f09319c9f41 100644 GIT binary patch delta 6508 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 From 09d582157ff41a48997e030f851a675a195f93e5 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Tue, 18 Jun 2013 11:02:25 +0200 Subject: [PATCH 70/82] Implement equals/hashCode for ControlSetup by comparing the two buffers fully (only thing you can do!). Change equals/hashCode for IsoPacketDescriptor and related Transfer to use only their pointers to native memory. This is because two Transfers may be the same on all accounts, but they still are not the same Transfer that's happening. Also it interfered with removal of Transfers from a list in the callback: Java couldn't clearly distinguish them and started accessing members of some that were already freed, resulting in exceptions. Furhter, implement toString for IsoPacketDescriptor, Transfer and ControlSetup. --- .../ailis/usb4java/libusb/ControlSetup.java | 47 +++++++++++++++++ .../usb4java/libusb/IsoPacketDescriptor.java | 30 +++++------ .../de/ailis/usb4java/libusb/Transfer.java | 50 ++++++------------- 3 files changed, 78 insertions(+), 49 deletions(-) diff --git a/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java index e1a7a19..566c85d 100644 --- a/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java +++ b/src/main/java/de/ailis/usb4java/libusb/ControlSetup.java @@ -81,4 +81,51 @@ public final class ControlSetup { controlSetup.putShort(6, wLength); } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = (prime * result) + + ((controlSetup == null) ? 0 : controlSetup.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) + { + if (this == obj) + { + return true; + } + if (obj == null) + { + return false; + } + if (getClass() != obj.getClass()) + { + return false; + } + final ControlSetup other = (ControlSetup) obj; + if (controlSetup == null) + { + if (other.controlSetup != null) + { + return false; + } + } + else if (!controlSetup.equals(other.controlSetup)) + { + return false; + } + return true; + } + + @Override + public String toString() + { + return String.format("libusb control setup with buffer %s", + controlSetup.toString()); + } } diff --git a/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java index 2efb772..4a9daab 100644 --- a/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java +++ b/src/main/java/de/ailis/usb4java/libusb/IsoPacketDescriptor.java @@ -1,8 +1,5 @@ package de.ailis.usb4java.libusb; -import org.apache.commons.lang3.builder.EqualsBuilder; -import org.apache.commons.lang3.builder.HashCodeBuilder; - public final class IsoPacketDescriptor { /** The native pointer to the descriptor structure. */ @@ -41,11 +38,11 @@ public final class IsoPacketDescriptor @Override public int hashCode() { - return new HashCodeBuilder() - .append(length()) - .append(actualLength()) - .append(status()) - .toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (isoPacketDescriptorPointer ^ (isoPacketDescriptorPointer >>> 32)); + return result; } @Override @@ -63,13 +60,18 @@ public final class IsoPacketDescriptor { return false; } - final IsoPacketDescriptor other = (IsoPacketDescriptor) obj; + if (isoPacketDescriptorPointer != other.isoPacketDescriptorPointer) + { + return false; + } + return true; + } - return new EqualsBuilder() - .append(length(), other.length()) - .append(actualLength(), other.actualLength()) - .append(status(), other.status()) - .isEquals(); + @Override + public String toString() + { + return String.format("libusb iso packet descriptor 0x%x", + isoPacketDescriptorPointer); } } diff --git a/src/main/java/de/ailis/usb4java/libusb/Transfer.java b/src/main/java/de/ailis/usb4java/libusb/Transfer.java index 10c7af1..8b85ffa 100644 --- a/src/main/java/de/ailis/usb4java/libusb/Transfer.java +++ b/src/main/java/de/ailis/usb4java/libusb/Transfer.java @@ -13,9 +13,6 @@ package de.ailis.usb4java.libusb; import java.nio.ByteBuffer; -import org.apache.commons.lang3.builder.EqualsBuilder; -import org.apache.commons.lang3.builder.HashCodeBuilder; - /** * The generic USB transfer structure. * @@ -193,7 +190,6 @@ public final class Transfer */ public native int actualLength(); - /** * Returns the current callback object. * @@ -291,21 +287,11 @@ public final class Transfer @Override public int hashCode() { - return new HashCodeBuilder() - .append(devHandle()) - .append(flags()) - .append(endpoint()) - .append(type()) - .append(timeout()) - .append(status()) - .append(length()) - .append(actualLength()) - .append(callback()) - .append(userData()) - .append(buffer()) - .append(numIsoPackets()) - .append(isoPacketDesc()) - .toHashCode(); + final int prime = 31; + int result = 1; + result = (prime * result) + + (int) (transferPointer ^ (transferPointer >>> 32)); + return result; } @Override @@ -323,23 +309,17 @@ public final class Transfer { return false; } - final Transfer other = (Transfer) obj; + if (transferPointer != other.transferPointer) + { + return false; + } + return true; + } - return new EqualsBuilder() - .append(devHandle(), other.devHandle()) - .append(flags(), other.flags()) - .append(endpoint(), other.endpoint()) - .append(type(), other.type()) - .append(timeout(), other.timeout()) - .append(status(), other.status()) - .append(length(), other.length()) - .append(actualLength(), other.actualLength()) - .append(callback(), other.callback()) - .append(userData(), other.userData()) - .append(buffer(), other.buffer()) - .append(numIsoPackets(), other.numIsoPackets()) - .append(isoPacketDesc(), other.isoPacketDesc()) - .isEquals(); + @Override + public String toString() + { + return String.format("libusb transfer 0x%x", transferPointer); } } From 2034fd81f3c9ef954c7feeddd60f08b4b90feae3 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 20 Jun 2013 23:26:32 +0200 Subject: [PATCH 71/82] Add up-to-date linux-64 build. --- .../libusb/linux-x86_64/libusb4java.so | Bin 138520 -> 153544 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so index 2545e37f8bc3bc7633838bb41c8c8eed07d64f59..9277b125fb10d7ba7108f1b18bcff1782a14768f 100644 GIT binary patch literal 153544 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 N|6lWkvTSiy{1?B*zd!&0 From 5c366199720af7e0a0bd25321eadef6bf646b9c0 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Thu, 20 Jun 2013 23:48:46 +0200 Subject: [PATCH 72/82] Add updated linux-32 port. --- .../usb4java/libusb/linux-x86/libusb4java.so | Bin 124860 -> 148816 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-x86/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-x86/libusb4java.so index 4578672a5de333719c073f2ac039d2c9035e4c00..19b277a88384fb928b813cd2c06622f81af8eabf 100644 GIT binary patch literal 148816 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 UUu=QISFlWldpp=+EsQMx0}qrvApigX literal 124860 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 G{Qm$>czOl^ From 8c4d2dddac9fa8e00c55f12005bba7395d649bf2 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 21 Jun 2013 15:24:53 +0200 Subject: [PATCH 73/82] Add recompiles for win32 and win64. win64 should work, win32 I'm unsure if there will still be problems with having used the MinGW cross-compiler or not. --- .../libusb/windows-x86/libusb-1.0.dll | Bin 157837 -> 154735 bytes .../libusb/windows-x86/libusb4java.dll | Bin 78068 -> 78068 bytes .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 87198 -> 87198 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll index bc53c15a10d474e7c95926cab62715c20111619f..be15e184d127c2d7482ac0194e03ad66c7cd5e54 100644 GIT binary patch literal 154735 zcmd?S4S1Br)i=HyHn8C0rW!PAs6nEFqM}6w1YMQ2sKiDkl`1GAP^?saa95xj2yUWT z*VVLsls@WHBUo)~Tc4I<{AjxbN~h3`I<9l&dgnPd6R31%jNRm|Gqw#s|COO7m&XL|Ea_41CM<6K-Y%h zFO6w&&w6Rh>?POURB_|78@{>h>Tg$EbM^Jt-w>);u&82L`1*=#udkT#wM#3$eZ#^< zCypFBqEdsd4!T^k+#_6XUApCB*F{CHEAhO`HFWF&?xI6oPr6;M3ySbR@F~TM68xXQ zGuQm<L?JjyhjPnqT6PVJ2+zPfp-WzWfFJ0xXz2|oC_L;!IWp_C0(j@Jx&IgcT^i{r zYx7jrq3_AekKL}Qr!u-Z`Ti`otKrRcnH3AJTi1g>p^TS~9EveoB` zeCC$>@Lv`-lfki5*>G%*CtW(F!(V>{pqqwYvo#!@Tj?>4?z+M>`qIg7>So>kdOxbl z9lBNjM}W@0D#ojZH^aj+cZ??5&0Xc}e5f4M7>BNTC}h#um0sLeL`y6C+R>*-F^S;@ z-im-k{^UezQeR)6qE9nv4kjcoy$~!&M7M^{ZYBr#D1b-N&5^Wc%G=BRv4b0ShW6m5 zZ|9V^Z~izs3Gbh9yV{Cb8ZG0Bpwtzq$g7hRnLCP!Yz_j?k@zVua9G?##7mx9a2?3v zbUTeOyGs8ND`zvP$c?E{P|;X1HMjZ z*a^CqM|VYUt*nf;MVD5Ni@p>MfkvaYY`*%s@H{O=p<9#wDs*^hrI!t`a&%f{^1{o7 zPtmQB&xa_EG`#7rf1PhLF~DsrCKU9gF9w(~v=KuKku4K8H^oE8xRTF7wBzUYMfSRv zpG?@40mA*tKl=Ja===@a0PN&X(!XH&$mecC3==9Rk2Ry*b^RfUFxjNSejnbcoF@%V;gfVGg% z)UL2&Jl0@*kORiYD3GZilXaQ_BF-Sx3v)CBQs2SbNDt+`vaPuKD@w$milM_}vnt2M zW>i)rN3zJ4a!9$sXLhA8dB;U=7i#&^uQxTjwp>lEIkzVICuNFU?O@-iuI2^TJ}(cUkI2?2>|Rd000on9##uXeL-Vw$=Qpg>#S63`aE-qYTc zUvW1`S)%fBx$0WL6G?cZ!AvZei6n|Pbrsoqb|9rF=#A8RU7-`%N=-&6BWN5y7#ddR zgS~7qeV9P#jm>BhvW-^tBf(xG9&@3K%iqEkyLjO`x64#-4xksYz!ITFZzM5}2%;Ba zzow!fkdM@6T;UO-Dyb*X7CK{@7l6BH8cX#=YI|IvgYb?`Bp=0aBY1rWPehhL$P5@k z!1Bl!t*(?u9DVpGUJcfRJ_te$y@lqrp9Wx~X8K5=7z7jjL-%2XgK(EhAG+XdjA;2A`ktco*F-Lf*L3Al zR|I1vRJRBCrtU$}Sg?!Arv!J?N$gFf~= z{Bt0kSO0C*HqkpCB3acNt0{56K-CrA2TRyrANs3HY;P^my#(BxE|+HSVu3QN|F8_c z#$ab#a39&8YLtFK8NsoAo8BGbhSp}_xi{MGPPp4Qbq#TEgFQ0*f)@A0 zW};$m6z_^ypoj&M5GHiDXlk%C4Bbzr&s4(EgNGjf#sn

MfDrUf9o!j1hZRKM)D- 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

  • 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%0DT-*#`L|a1fsf`TpMzZf&lU2#(noh~C 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

    Z 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 Be|Z1^ diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb4java.dll index b824d95de79e2f85099aed3997381c54384f8987..78628cd6df1ba4f54e9dfe640bba6ecc70cd55b9 100644 GIT binary patch delta 12504 zcmcgyd3;P)-#_=7B$Lf#l|^hG1wG|<6bIpJ>> z5K>ZIR$J7&a`MB{*=W{KQ9wWNieocBq9?raLvJ1+zDQfdJv;Kwj7jJC{JIT&bmM<0Y)X!&7lTS+2 zh8ctuHwCnByLJX$>?3CjX3$+eCN^OPz3r0~d2G6!xAw*&7*gC6V;w1#9`TBykBQUR zZzj^`#J6?DO)1uFv6Wa$*L5JonjKX3`Jq4J%d({6vXRmNYjyx0Mc{ykt*6Vf@7kF& zU!ZIKqas$oa(ECht-f?NO7T*Z*1TrARMyF-6f|pI6Fsd8rG>s>9V#j+XpwLCUb^DN zL1bP!!ovIA(03GXqX?3V7vClG0xQMMrL&8xnK${;nthj^@{Ob4_ZCMiVC=fqIdrXe z>9VW?4Z2{l*qRrFLS)SomxW1NPnBgi6fbTdMbUhq-{zYLt~8_}Am|}N8kObQ^?diO z&T|-YwRrJWGB3)SU2m5qc156}Lns_Y8v4mQ{wY&7!`Z;Nn)6!IORC`y9&ykRXP1;acUH-WK{sjwSDk4b}=OVr0d zA$7OFEN&w;A>3hPUMz3fFD}b!TWGGo+RqtF$z?i6nL?}lqXVUv+hVk^gm?5lPU1#hxP@ZN|$8

    @u3lc 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 I!!(Ee4=*Ajr2qf` delta 12764 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 a07y$PFf@R;K=JAF9ZaHNrRE(>wqgMD;TjnL diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb4java.dll index 141fa125e52a93900a09602c4d413f09319c9f41..722a084faf95ad66b693a677cdb5c1205cf7d782 100644 GIT binary patch delta 31 lcmbQYl6Brn)(IWVmx7N>?Dl0+P2G4)>o Date: Mon, 24 Jun 2013 02:12:24 +0200 Subject: [PATCH 74/82] Windows 32bit native build. --- src/main/c/configure.ac | 2 +- src/main/c/src/usb4java.c | 2 +- .../libusb/windows-x86/libusb-1.0.dll | Bin 154735 -> 163555 bytes .../libusb/windows-x86/libusb4java.dll | Bin 78068 -> 68261 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index 1721999..4609e3e 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.61]) AC_INIT([libusb4java], [1.0.0], [k@ailis.de]) -AM_INIT_AUTOMAKE([foreign -Wall -Werror -Wno-extra-portability]) +AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AM_SILENT_RULES(yes) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) diff --git a/src/main/c/src/usb4java.c b/src/main/c/src/usb4java.c index 7a05959..3dca321 100644 --- a/src/main/c/src/usb4java.c +++ b/src/main/c/src/usb4java.c @@ -34,7 +34,7 @@ jobject NewDirectReadOnlyByteBuffer(JNIEnv *env, const void *mem, } #pragma GCC diagnostic pop -jint JNI_OnLoad(JavaVM *vm, void *reserved) +jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { jvm = vm; return JNI_VERSION_1_4; diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll index be15e184d127c2d7482ac0194e03ad66c7cd5e54..9c27aa28f8ad03abcda2b82dba7111b680e0d8aa 100644 GIT binary patch literal 163555 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

    MfDrUf9o!j1hZRKM)D- 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

  • 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 literal 78068 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 Date: Mon, 24 Jun 2013 02:53:48 +0200 Subject: [PATCH 75/82] Fix autogen.sh failure on Linux systems. --- src/main/c/.gitignore | 1 + src/main/c/configure.ac | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/c/.gitignore b/src/main/c/.gitignore index 724070f..763f931 100644 --- a/src/main/c/.gitignore +++ b/src/main/c/.gitignore @@ -24,3 +24,4 @@ install-sh ltmain.sh m4 missing +ar-lib diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index 4609e3e..f0a27b8 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -9,6 +9,7 @@ AC_CONFIG_SRCDIR([src/usb4java.h]) AC_LANG_C AC_PROG_CC AC_PROG_CC_STDC +AM_PROG_AR AM_PROG_LIBTOOL AC_CHECK_JAVA AC_CHECK_SIZEOF([void *]) From a783e6d2d01328205fd9c6573b9716d27a8e01e6 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 24 Jun 2013 03:47:24 +0200 Subject: [PATCH 76/82] Update configure.ac and build to support older automake. --- src/main/c/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index f0a27b8..ef3377d 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -9,8 +9,8 @@ AC_CONFIG_SRCDIR([src/usb4java.h]) AC_LANG_C AC_PROG_CC AC_PROG_CC_STDC -AM_PROG_AR AM_PROG_LIBTOOL +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) AC_CHECK_JAVA AC_CHECK_SIZEOF([void *]) PKG_CHECK_MODULES([LIBUSB], [libusb-1.0]) From d09592e9dc9b8b35648808bdc5aa1514d680e9f6 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 24 Jun 2013 03:48:19 +0200 Subject: [PATCH 77/82] Update build. --- .../libusb/windows-x86/libusb-1.0.dll | Bin 163555 -> 163555 bytes .../libusb/windows-x86/libusb4java.dll | Bin 68261 -> 68261 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86/libusb-1.0.dll index 9c27aa28f8ad03abcda2b82dba7111b680e0d8aa..4197e46bf8bd93da26f99d3b29cd8b4a4a523d0e 100644 GIT binary patch delta 78 zcmaF-m-F#o&Iuh%^@}HV`7zteGB@6Cz0J7wHj}0z14ae` cAT7bb&;a6AE}kwI!6e31xp=!-1k+kI0A^koBme*a delta 78 zcmaF-m-F#o&Iuh% Date: Sun, 23 Jun 2013 22:25:04 -0400 Subject: [PATCH 78/82] Add ARMv7HF build. --- .../usb4java/libusb/linux-arm/libusb4java.so | Bin 129536 -> 129772 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/linux-arm/libusb4java.so b/src/main/resources/de/ailis/usb4java/libusb/linux-arm/libusb4java.so index d4e40d5df01fc5f02e12efd61cdb83f1e23c7ce8..7850c0282ad038ab837077dd714f90ba94aa68d7 100644 GIT binary patch literal 129772 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℘Q;oabg+gB9~!hSeXGLkvAp#4_%-ih`9 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

    tR;-t!cAMNWI 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 B9{m6S literal 147780 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Ν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 Qxf~&+eT^w@`k$^I53_IC00000

    I@*vVMDv4Pg|R^!mn}lcm*XIj>=Tl2To5Fgk3oYUUQD{9J`tD zQvPc#?7mxH1 zdvJ;Uws{&k7PMg)OR=M4KnLRJ7WzYL1mR~RRWWl8YU)J(Qly^F6|-5R5wBXS=R2bv z&p5cJlO-(7Hu`m=>(ed9J)X?(5QbnL3a#ohpM-q<6^^Tbvfq5b0h$)a(_JUUx5u z^s0RzepghV?+0-Z@7}n+>+bisx;1+}q^Uk*ubd7E@Q*O%L%OUczwT^P5pPlkw@FBs zH5M|c4a7Md_qM&lVR z!>y}bwW{{3YHM94$C2|dc??E)sj3&H2Yf|fv@yl`PJBan2}Cu*Lz}Q%ouqL%*ONRW zZJ7f`du$!f*XGhaVsy+ofpXjUNr!FD+}3#S{LAAX+P!=C=50K4O5kq+7nD5zejiub zY01Yg-0?IwpAnY)gHpyMo$vFd*WHmzo+NC)Gneeh=aQ`-$R&65R!S}sDEEBS@co9m3)7WPtxX+rjO;4b)U;63qGGq=6oTSJo`BPJdsPz{B|zk zot1=lY!cp0bbt4Jupwz8sOOU}O5C$KJZFXHB%Y^||0$lTKWjyjyq@Q+-_0fG@I2br zkethNEI}^|9pm@p@cUnWb-Z{sjgRB^VO|vE9k*o3$$F`S@37F`DLi>;gVFOoaDPM6 zz%!-rnLH;F-at5;{eH!ty(URc=Q)S=&fuwW{Ob7e;v&+y%c`jUkMMkCQIhlvufEcBoKy=(sb%hKj|EnR(KI&=CvreBg? z(t7bF7hl}^&a`<27V#qd%PxJ|tP7L5GifMa$hUVVIoL57_l{|Elam@>H+OvQV&QfD+e%v;;>$IpQW{pWvV5+3N_JnWG_0;c0)8QTjWN@G>$=Nx5`P*DoDQCAI-Zz-Z6KwQspEk6}Iui`c=BZ zLV{$g;*zflTZtQ7dg^Z#0gzlB$!7)0XKPR87*=vaR8I0-L2_Q@qzkMZcLF4WReC~t zMnO8q{;c0T30BVd^hqH;{HdHm55dZfNB=66*D1ySS$qBbv~tpG3WD4Itek9al@ng> zpp3#Ad{Opi@IXzj)gv6wBKEAqi?%{oY8q8!5NQ3h}i5 zpCzvL#3%YwxfUOF|0_>nAAz>|Tq6J7LpiPj$o^DDe|oA<`}+>%er`W_TDkuRLlS)e literal 129536 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 From e97db92e7f7017cc05af4334f6890e7d12443c96 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 24 Jun 2013 11:48:38 +0200 Subject: [PATCH 79/82] Add Win64 rebuild, completing the series. --- .../libusb/windows-x86_64/libusb-1.0.dll | Bin 171636 -> 171636 bytes .../libusb/windows-x86_64/libusb4java.dll | Bin 87198 -> 87198 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll b/src/main/resources/de/ailis/usb4java/libusb/windows-x86_64/libusb-1.0.dll index 142c4e639e3574e860746bf937d2b25336342de6..a305a31d12c66859192f99dcfb69cf4d532593b7 100644 GIT binary patch delta 82 zcmeyehwIB8t_dB?n?+Ad?Dl0&%42T4-FlmG>un~@WRT!?_7tYS%F;kqAOjdMG6(=^ Y2?mA+5Em#uUA}`!6s**|gUMD50PP+b`2YX_ delta 82 zcmeyehwIB8t_dB?=Yx+-?Dl28xrC|lcI$1%t+$yplR<*p*;APQDodXWJ`%_P28;{> cKw5% delta 31 lcmbQYl6Brn)(IWVmx7N>?Dl0+P2G4)>o Date: Mon, 8 Jul 2013 12:19:59 +0200 Subject: [PATCH 80/82] Commit fixes for Mac OS X build. --- src/main/c/build/osx-x86.sh | 1 - src/main/c/build/osx-x86_64.sh | 1 - src/main/c/configure.ac | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/c/build/osx-x86.sh b/src/main/c/build/osx-x86.sh index d265188..4636bf6 100755 --- a/src/main/c/build/osx-x86.sh +++ b/src/main/c/build/osx-x86.sh @@ -12,6 +12,5 @@ ARCH="x86" CFLAGS="-arch i686" LIBUSB_CONFIG="--disable-shared" USB4JAVA_LIBS="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" -LIBUSB="libusb" build diff --git a/src/main/c/build/osx-x86_64.sh b/src/main/c/build/osx-x86_64.sh index b1278aa..b98186a 100755 --- a/src/main/c/build/osx-x86_64.sh +++ b/src/main/c/build/osx-x86_64.sh @@ -12,6 +12,5 @@ ARCH="x86_64" CFLAGS="-arch x86_64" LIBUSB_CONFIG="--disable-shared" USB4JAVA_LIBS="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation" -LIBUSB="libusb" build diff --git a/src/main/c/configure.ac b/src/main/c/configure.ac index ef3377d..8818253 100644 --- a/src/main/c/configure.ac +++ b/src/main/c/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ([2.61]) AC_INIT([libusb4java], [1.0.0], [k@ailis.de]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) -AM_SILENT_RULES(yes) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/usb4java.h]) From 2fce3707fc6c8e365574d14fe8d262e935cb404c Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Mon, 8 Jul 2013 17:05:35 +0200 Subject: [PATCH 81/82] Make libusbx-1.0.15 the only default stable provider for all systems. Add libusbx-1.0.16-rc3 as an option to test the new upcoming release. With 1.0.16 libusb and libusbx are merging back together, so the separation doesn't make sense anymore. The 1.0.16 RCs might give better results on MacOS X, lots of work has gone in the Darwin backend. Defaults to stable, but just set LIBUSB="beta" in build/common.sh to switch to 1.0.16 RCs. --- src/main/c/build/common.sh | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/c/build/common.sh b/src/main/c/build/common.sh index 8b0f99a..b89d858 100644 --- a/src/main/c/build/common.sh +++ b/src/main/c/build/common.sh @@ -2,27 +2,28 @@ cd "$(dirname $0)" SRCDIR="$(pwd)/.." TMPDIR="$SRCDIR/tmp" DOWNLOADS="$SRCDIR/downloads" -LIBUSB="libusbx" -LIBUSB_VERSION="1.0.16" -LIBUSB_RC="-rc8" -LIBUSBX_VERSION="1.0.15" -LIBUSBX_RC="" + +LIBUSB="beta" +LIBUSB_STABLE_VERSION="1.0.15" +LIBUSB_STABLE_RC="" +LIBUSB_BETA_VERSION="1.0.16" +LIBUSB_BETA_RC="-rc3" build() { - if [ "$LIBUSB" = "libusbx" ] + if [ "$LIBUSB" = "stable" ] then - LIBUSB_NAME="libusbx-$LIBUSBX_VERSION$LIBUSBX_RC" + LIBUSB_NAME="libusbx-$LIBUSB_STABLE_VERSION$LIBUSB_STABLE_RC" LIBUSB_ARCHIVE="$LIBUSB_NAME.tar.bz2" - LIBUSB_URL="http://downloads.sf.net/project/libusbx/releases/$LIBUSBX_VERSION/source/$LIBUSB_ARCHIVE" + LIBUSB_URL="http://downloads.sf.net/project/libusbx/releases/$LIBUSB_STABLE_VERSION/source/$LIBUSB_ARCHIVE" else - LIBUSB_NAME="libusb-$LIBUSB_VERSION$LIBUSB_RC" + LIBUSB_NAME="libusbx-$LIBUSB_BETA_VERSION$LIBUSB_BETA_RC" LIBUSB_ARCHIVE="$LIBUSB_NAME.tar.bz2" - LIBUSB_URL="http://downloads.sf.net/project/libusb/libusb-1.0/libusb-$LIBUSB_VERSION$LIBUSB_RC/$LIBUSB_ARCHIVE" + LIBUSB_URL="http://downloads.sf.net/project/libusbx/releases/$LIBUSB_BETA_VERSION/source/$LIBUSB_ARCHIVE" fi DISTDIR="$SRCDIR/../resources/de/ailis/usb4java/libusb/$OS-$ARCH" - + # Clean up rm -rf "$TMPDIR" rm -rf "$DISTDIR" @@ -62,7 +63,7 @@ build() CFLAGS="$CFLAGS $USB4JAVA_CFLAGS" \ ./configure --prefix=/ --host="$HOST" $USB4JAVA_CONFIG make clean install-strip DESTDIR="$TMPDIR" - + # Copy dist files to java resources directory mkdir -p "$DISTDIR" cp -faL 2>/dev/null \ From b12535ac2224c008e7e6baf124c42653985ed791 Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 12 Jul 2013 11:19:28 +0200 Subject: [PATCH 82/82] Mac OS X: update support for 32 and 64 bit versions. Xcode-gcc didn't like one of the warnings, so it was removed (not critical). --- src/main/c/.gitignore | 1 + src/main/c/src/Makefile.am | 2 +- .../usb4java/libusb/osx-x86/libusb4java.dylib | Bin 118144 -> 141628 bytes .../libusb/osx-x86_64/libusb4java.dylib | Bin 147780 -> 179696 bytes 4 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/.gitignore b/src/main/c/.gitignore index 763f931..a7a2d38 100644 --- a/src/main/c/.gitignore +++ b/src/main/c/.gitignore @@ -25,3 +25,4 @@ ltmain.sh m4 missing ar-lib +compile diff --git a/src/main/c/src/Makefile.am b/src/main/c/src/Makefile.am index 5b7cda4..366fe97 100644 --- a/src/main/c/src/Makefile.am +++ b/src/main/c/src/Makefile.am @@ -1,5 +1,5 @@ lib_LTLIBRARIES = libusb4java.la -libusb4java_la_CFLAGS = -pedantic -Wall -Wextra -Wformat=2 -Winit-self -Wunused -Wno-unused-parameter -Wuninitialized -Wundef -Wshadow -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wlogical-op -Wstrict-prototypes -Wredundant-decls -Wnested-externs $(LIBUSB_CFLAGS) +libusb4java_la_CFLAGS = -pedantic -Wall -Wextra -Wformat=2 -Winit-self -Wunused -Wno-unused-parameter -Wuninitialized -Wundef -Wshadow -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wredundant-decls -Wnested-externs $(LIBUSB_CFLAGS) libusb4java_la_LIBADD = $(LIBUSB_LIBS) libusb4java_la_LDFLAGS = -version-info 1:0:0 -no-undefined EXTRA_DIST = *.h diff --git a/src/main/resources/de/ailis/usb4java/libusb/osx-x86/libusb4java.dylib b/src/main/resources/de/ailis/usb4java/libusb/osx-x86/libusb4java.dylib index 1e2c745061d80df86b84f6b2092ecf748d1be29f..df2530b32fe4f4bad233084e5c29f5e0381d2d9b 100644 GIT binary patch literal 141628 zcmeEv4R}<=)&B+pE}ELCvBs7b)Tn5w(iRme)`%40)I6oQZ+n6!C+qi1C{4oarxEPU%ns*jA@JVLVKg*{2eB> z^&bs`cXQ@kdSlgs`PY6!zskmA_HB8gITJ!5{sv(LujkB(UAu7pwU^DAf9<^M1ZE~Z zfBk4)s2tDvJJ5f8Qw*SU=1et8dL{N;ah=3EOJDpFowwIFBxX)K8P zL7YjyD4*lMIdiVQWH1=hPE!QX*lTski}pxH1c{W>pnF`D3SurGeAsxQ}EbKSM(SvHLO zQMW|D~R2N)Ce`+;B(-X#2+GiT`n_=c?eO_qF ze7w-V9EV`rpTa$16G!!&JslQ0`sl0Y&*i_^jdLendC5(e9QCE6F1rQyczZC025c@c z$Kz)_U|$>ndS^pks0|HW{B&L@d;p;-_-(J{g)T+8()U4=FNZ>V;rT55t!h!=kOeqwE&ATR_=XS1SZ5blkyduQgJt)z&st=?ZcWd(_U?P$inOa|ce8ia z>vnak^Uz*I{-Ofsi4UuAackHs+osDVP}YuhSZ`RTgsp}7Rv`f;tw^UG>5Ml{xoFM> zl}`rf6;Br#by`>q&pvS7o@f#J$9rg-dI%meU?$ci+^CN||$%Z1!49ztKx+ek;eHx%2~jx^edebH3BApzh^%%%HV`W z>{^AZ*?=t2uHMw#4B0L(+wEARv*j?*#CdQlo*I@}R2sG}EG=N2HeKf)Q^&Qd+b|g4 z3R`FATYIrc>(ctFgIFxu=q&##37jvS=l=MA`}&$9Np>K0j1y_WbN8VK*^y>D(#(z= zXh&LnG{MT?*s%MHud)-(=#TA>!Av~{WuYv7^{CftRrFZsbF^Ei=f=uyOp8R@BOucU zq1!&g84`7!<)t_JD29My>U=}xyB}u5rcM_~%gU**O3iL|Yi4P_yBX-I`GhW1eU9@A z9Xm(rq6M#9)$yT_nrnq)YDfhAqw%*R#db6sd4U@Qa)va9+3k{EVUSrf0A>l>6^uSy z;kP98$>gtMyQ0XB71-5b3lk}pw!jt9PCMEubgGY)%HY*I%MV@PQ|6|Ba_~Bcch?>q z{2*6#?trW6oh=(~B3I4D-=T0-=OA1K#HI!ii~5MAZV=2}Lx+PWb7We;R3y?qifC1% zbT?8bh@gldFxug@ zkyPP^dJG#03hdmI7ZWSM@@hPX8u7-l7tI+&zGt(XnJ>v0CNWqKh*bsU}f%Gjk zIddY!g*P>RF_2l6+7B|5Gol#iB^nAhJWY`varKl@%BOJ5wCwrNPa0;;=Ky|>U*{9< z+1>&1drjD3K>Su={D+8N=6r$zF1BMuc6EVW8MZ3Bt?INDbFGR_E1ER3YO|hIo1NvK z4PZM~ux$_FzplOVIDAR6YN_xs%6=tKwJOqG2F71Ru@xu0s0qCFXygb>qh8GvR4 z0R18W=spc7>P?!zA44u{wIi)rlSW!jT_LD(Kt)TkMLq!VR%{sM&=D*4M+<8Tr;8Zc7b8LOHc-4X0;TK;H)Kp&{_^1K0Tc z@vHZI{(t}o%GM{33(PN{e<9I@f0qC+SW{-UMUG|ZY)&p5GgN&P;NSnf+Q)D20Df8X z>yX^|dGibS4UvC$l75u|{I2~UpMDcF=@%D@^qXIMYx=FaEf>K&c{xE%_#Mg1c8Vp) zxOQiG%T+$v{@g>fk|F$;Iw?~KriG!6tppZTr9NxqX9q?Uf>cCkQ4MiS2JDOpB0RI? z6XpBP<2yQl@8JXEJ7p*EoiH?fcXGV1xzZ=>t?&Bdoi$&+i)f0ckNVG-RlqGUU-th> zuHhg0d~vBLF?;l@Zw;l^C%)I2Nt<~)(bLF1?NXtr(UJ*+?B25;^^TJpCq=RS9=k%Wk(oX??F8_wl&wF?G=jWfx zM9b#q(r;(;^IS-docz3#^MBJkAD>&_9&rBeH~9R&><$vo)0g|paOBpPnfBD+^Q}=^ zM{q7b9l-O2w>(zudROL9V7{U3HG#4}50q`v^UXJarpPGM{@{cyFq0ULD%iB$iMAQr z=hqkj-%|S4fU_132Evg4!9wQW>xY(pik{w6FfJ52L$l@b9zAhuKrR`4h)3fvAZ9? zg;)h)_Yrk-j~f`j7A&&(a%v#_?i&n0nLl3qY;b=>X{}b8QHYJSI?G>}>!Z0WMKT6# zcz*y76*P@w0W?*q(eO0jV7c+(&6EPHQJ zhTQk)nbY1Y!~Dv@mC6vvjL(?qGmtzF*z-4E;#2f%f~ZtZW!cMrI*N@CXfIC_+_D8` zw!OR)^W}|;eYAes<&G543t5GjGX5{TgAHr`l*7>|+n@$|S{ z^|wd0c$tWF*-4IuVC3@1VP8s%)PHs^35Zb0}Qod`9-f4UM0CO*^T_D>7o z<_y3mMt)?DM@en2cyOZP4T%RU`zsI+-s?P{(nZ@iDq>l6eMx3=W;}RXpls)>e%TS( zvp%UQ9bB{X*7@4(*k)(TQ!?v^QI7N<6}S|cvp$K1)68|g7H^#of$Hf2*7`3WvD9^$ zQ~u(ENpCnevfSqxkuz!|Z^&9kvs2LsY;-tIOv%S(i0bV~J?AxssL_vh>opm7K3otK z$Q3mfduf-(=c=#!<8yt|r+KdNnR>2Yc3Pn9#~Gi)AVsiZMt0xz@p&YG*k^sjvd5=> z>`sqQROIg9v zy)OQR&b6bNQ`(sV{bMKoyaWP!6wDH4DwmgR3IuAa{KKEn#rDc9) zSkJIq3EX~M9zVcl5goaxfcYG1sY#(NNegXCHmEVMm&?%YYsb1Lzhf<(h?-a(mfyvV z9Cpbqa6ff=9*kbD=ZO4Rq?iFA$gzbRD@NO~@pkn%yRy`Ztgnrf)LveUFyuNc;m@-w z>X5-=#nuFqSQ3}Nk%+twTeJ>VYA1fz;dh%=*<#MTIs?owk6u6LH-bhghXAH2kI zZw6*&nNZk7*<2|5+HAk<9|C1_EfWSt!?Tt=KpzAEEeQbXzfAb)v6K|`S}a473wEjN zwchX+{yH!wX5nv>Rk0ZrkQh?9p#lOw_IlyQ>dwNAmD{YyY8ddFtmrC)B&>>+);8#$n{Xw*2b=oi}cB(g9-zu_hEU-?KWT4^h zf;ZU08gO-Ha5Tt*t2M)T!O_)rY^Ag1n6oGcCgX2^IS^T;>m-P3bh89UJM79;0|iGh zyJ&J`@(FBw&maBd_~pJce17>#yFVPc_+@y2xAq8>&BZUr2FkwlXCLlP^UHw&Kz9cK z_2-w;(VsNGZ2jBE=9dw($S}H78@wwQp2*4X9L88wlj{S+dEd;>&DEW@`t2kdolRB%s+E`(Ts$Mls+2* zyw~?5Vnc>EE_b}i$L~IYw?lf2d2(p<*kOBz4XwR7Lu@Z+JT6H84G2{XOs~~wX6NWX zZ%}ymXToDVeU=?586X&(lqj>TjY6;HLwSY;dK)BjU|m!N^e=R{NSk~t{_Vq!(%7(YMpLYLf5V_Wj6ps$PU$^t90$&Q3US#4xvodFhatfMK?%HlAX z;f9`}6@sTCgBk`V$7aq2r6M;Wf^eEIlOKAXvQrt#%E;L)sy`T~dZ~y*iwr}%?>&a)h3I**~QPW+)n@%aqwbl9)^V|t0Y}TOMD7R#NMqp>k+-a9z4aWX^n%wp@L zBI||%>%6daOFlH7mB)=SXO_S}WPS)d(~n{YWRbC0=-&5yrdBcjv$r1w!-pM5bdv4F z%Wy`#adUHwTMNgn6S%WMj9W{v4#q9Bju|&sj~lw#;;j4Ow2X0ssN;J*ZYYwpV=c~> zbtvUL_*-2zYuqr_0u$pV6{_JM_8&KlZf46{GFygNmzEo4+yDrXbF^FtFUxtb6n}Hf zED&4jsBuGtiaTWNN{l%2nVYSoRbFIWUtpaZwr?g^${Xz3&PIY zySMX#_TspwX}^va+e7@3aXYg2AK8QLbVJMp{gFd(4-toHp3kA@bl1NSkcdFmH?tjC zbDoCPUn5Tjun*|`xSxBJ4H-q?Iamt7lw|jJB*7W%h=(TK#eLvJ3j1U~CoULY*va_zyC(rv9pC<_3Gwao zGvn5eNg_Cv8faT}LgvfLuMwYK47@@6s!4p3w#!Dd$2U&qGNbHKy8TzAw(R~BN_+Gk z3ci7Smy-kdo(_D?&X0+icnlY`%?Mzmgn{V_OMd-5z(x(EqNT=+{JxX;{JPAi-H-xTkSp*!nv6G@@-t zK(Pb7wL#U+T(sakxG%@GzwH32D0Mc8RD^^>ZX(oT8x4j6lba|8LlLDK#2#s^=cu=N zGC04*{u+dyZ9YA}>-TAq^eL?|)RgSkn>J_5zCyLF_?x3Q&=gX~%WuH;(vHlP&UQ#k zC{h@7ZO-z82}V!O=Nh@xk+Xvt`)NgfLAdIC84)18W_oU?xRnqPB_*asH@X-~6=0Ii zvqO@(LNRJmX@UtkH7sf5@j&obxNv(q(jDr{H&B zPi7AKX#7X+GX9Hl!yn60Vh~*Hue3cQY*%dem$|aL*>cV#%*PGyOv&V6Y()%mePBMq%)&~>Yu0H6+?k7Q())2f zo`(5ow0H)8e!}zbk>e;$reFtquX;qNPPt+odDa05LCq6bTX z-avG6AfR2v-B*GU?tU8kK%Fg3$8sPpB@O|>s0RW@h}2O7fjTn2p1f^31yL868>fh^ z!=aGPMaJG9ME>nSpIk}P=40uTsW1kd2lv+XKRJEkpatwH&)v?yojy51sI~xqgG}%- z`T2B$(fVZZmVY%rUnGL%yZ9UI%5LH3-6{Vrn#gJQ4&+DnVLnvtTP>y*!nlH=Pvp(d-D!xmz!!kWzT({ z#MkpL@4x=l^Y6AVk+Jv7>dJ1Jf1W-WD4xkvRkRh-=_$W@`om z2K~>#m`YBTSe8i=5ynZTWr;(9lFpXbWiH)~zd8D1tWhpD3dV;qiy(BFrguMhU&uYn&378^rmSzzef0_6x74l$!{ zi}sXYQ|sjBMez6ppA>S|I~cCaPXHTM6B*WX2~4g})*MLF?Nae)+G~ zx2K>J&W8BmnO*shzQua)fa?pn_2GZ?Etr_+L;ioNZrP}KU*3&PZe;f4g)gdiAh(|tlh!S5rACLU%YwOF%ADAe~2IuxaVwDFZ<8$S<{yE8Wi4|-2N|8d%59};vqjvJm9#z{<6rk z7>5v#+`)XFt|`Cs^Lg&)IM0sy{6HhOyXNyvz|eVcTkdxLZ_MXjBDcHdbIHH;e4Y+c zK>Cgzh%0s~J~o$h)$_UGN1xn$-fi)x0rFv#J+m9)PXpw`DEPy6-CpX*ZEq|1!*?D2 zqQT(rhWOU#!Qk(P_}1pZ;!nFFzIEYX@OMLeYkThalN#UMU~jL;4gV9fx5wvhZ!mki z>w#Ucw>SUG?d^jPRFZV(_4C&KDT(j;^gxn$cj@Odfg#ra56Ich{|)`zM&x#velGsE z*3Sol6v(~>Zy3)Yu*kTx_V(9ESFN89`oVwnv-|(4e%A4}{9Rr@7*s#+2K_mxe%=lG zb5Q-f8}#P@`dR6-B5@EAvB`)Z9r(Rn&}Vn%)}PA1Ez0TN?kJyk2ma=>`zpz^^ZM+a zy(zi26b>Z0c9%Z;2pA$0sVHYV|2Onm%|1YGcj>c&e`|gAEXE1e2Y6#Q=(9ID=vtqh z`Q1-WpM@pf({Fl7ylvp~GrV0Lk4O}Wu_x})0x)d&?zZyuArLi4JqmpPY0!Aog}LKV zA3MHPFc>_Zv;dp~n@xriU)+H_`B0Di&dZaB@sUvH!E5&#h;w$AJQ)LtQ9ke&PB;pALgcw% zsDwf!O(7CCDOXD&_q$e}5VF8B08SJ3G!y!yX({(Qo#9=LOYf9@m_Ryq}5c zVbY3`ccW_YKH8l)DL-&9^$_=ybqp3?8EX8gWJmbkB(3zrcf`))JAN>HhZ@h?A-+$E z71$5okvos?qTKeRiZ2b#zUO}2T;D5HA9cgt;~wrN=f?3uX{-}x^gv%>H@a(;gMIau z>e&6*fOXsoY<1)bdbDS92VZAc$v67qZfyV*4~AK#gA|v z5yv1)KMuhj7%5P_@nhaGFe@+G`SIJFJAY{~e_&Ai;_AWR;k?9w`a4iQ$Y_Drqa<3@ zO|*Ql^IX8#W%;y*@F6E|tt`W8Yhp5R_PQG*O$?_3S+N+en^m$1gH&qL|txf+Un%&Rky(fB z@;sDYA$?k#vMwIfmLZvgIKAbIfgYxF^stRR1d2$HmmanS>!633bxaSzE?_Q72QZf`mn(6AFd2?d zQ5)Pd`uugJ_iB0ofzG;YipTyFwWZ`n^Br53ini16VGd6i+AZ_Rr|}U*G(pN7gfr1o zIO;^s!`&fR=^m7CM)!OQs_g!(eCkYlaR>Vy+T0(=o&hZ}3zxuQf>Z=qKq&0&N!n)a zaGj5nFo^^RobOVskMLy?Z=(8Txa=J)#BB_POMXN$f-wOJ6C`631rN!<1cB7Yw)uzY zb;tx^(agQiOrJ1eP0DD2gTr~Sb^pWRH2?O@&$Q2UYN0;7KsW4v+L#TWl+SKp1k1xI zd>HB_h2KX4IfF9{im4pl9m6j_>T52_CAN zBXSVqB~!PbKtv8gmOzx#CC6xSs3euiRiUIxTPGEyu;nD(R3J%Wge!iEkhFEv;U%|6+TkMiZFr`fq$l(Igqvgl)Mw`+Np}p6))T#*w5BZ& z%lwGf=ivz@({}Ws>pOx%r;}*GLFsY`l9TuiFHa3OP0gn+Z$cs$dcyAs5&%SFJ?%{} z(N*=lCN%9s%|b!l4VWiiVsVh~VYvbrT!Kq^aoG|%~fjLR^>7e%8Iq$Gd z&3`=cbvu>Po&O-V>3*Z+$FIaF`IDw}gs%4ITdx5_8rqNxm9zlb{ya_Y6pXUd~8c2T$OUVAuDha3Z) z*pQ1uuvxr6or2#N3g!>eUUQ;u(@BD06PpXc+kihJEu&eoWN*_+m+5mea};|T!ya*224@cqM;PcnX(O+R!TRKf9Nxe3Yn#_!&yEBhhS?8UC7HIg+BcSV$m6|m!W$2 zEx{>XKaFU8Mldw*?#4S!OaDAG(2ett)Dud=9tPcHqEVWO$k=WqrFslv#~brS9^{~> zkg3ysWhy(Pg+VoQrYPfj zguYZ6tA=7npx;hnHcRr%I42>Mvc={993dpBjiwUiC+Nu<5NyI*K0U?-`Ahrupob>! z$$uv-kg7QDPDA%nl8jk46HGF>nZYyk(oKz~lr1Y)MR1ML0FTBSicsc{KCoc|tpAJ; z()k#1Xj=+C5}C_W!(89D6IFmDhh;7O_ONh8r=o~PMi*D-S5kOjEC&GdlC(>XS4@< zw>4b&M)%g2!qVu8H{^kNFmEtYqMHBFMS+kRp8yMKc~Dz6k)J;jlSzNAj-U4{@V>(* z_EoU_F*__Dlo#3dH^Uh4mm(c0>XzEFW2S_vuE6-kU7dZ-0XYJ_2Qu>J@qaE)38nik5h9UlrO=H{$*! zk3hyej%7;by<;P|5$oYvDx3f)H%XFrD=|Si>*08J!{IxkS+&B2(jJp&4<+b+4rqv> zp-L%+(;`wdoYGIFfdehoWQSANE67n>p$BkoaiNZi(m^Aguf4TRzRh;{qlBM*%085t2Of_5&5Tf>AIGq_ae42mC{!|9nNb;SHK>mO6n3$ zXwKfNo-W~wq?zdmN+JG$DjionUCcLd^V@67hSf&@IZ1>)&fDuwogJ9&NfqEhjmgco zHBg>V4uEv7DA!Iry<7AFo?>{mo8sxo&4u5&0PNRaJ;^D1RGVh}^!|}ry{6Nfh+=`G z*Qqd32TUOMtP{uvNlqTj8BfDv&MbkzFt!#igBrF4vK|zB0C=QM#kz@b1Hp2bxG?iW zj}tg&AScrZVDwQG<2ynK=keQ?XjDYp+fzyMq+&xO;zZYG*|S=|4bq=B_x36556Pb) z0}#zwPp?kNfFv)2{n>ty*PpIspkJ;oHOp#IK=i9FU8cK)Pb0mI%i6Nxpg}x2-0xo@ z`Zv#xyo^pC+P8;B59H3{>KJ~9$3DZ?_yXu&D1xeB1t^okM;lZ}G6_T3ul9pL-iMVv zMuGk(u&6NZc&QFMcf6L}zf*5AX9Prfzx{5;e1N+E#jsrtk?$#7k_16CsB8U3T=7Vy z5xZ=>^0|n|*QE$;jKZalsG4f}0%Gk9=!vIcWZ?Tqrxs!U!)>J}NQ3N0a*^e~UN%;D zY7#-80~SIhJF)*~Xjq&}!=gC&K)L*V&l!{C7+AIBKj?PRVuvCurZ4Y*&Fj?uxRl^h z#(4^qe*uE@J{5T%J?<5vqzjjv56cI_b_6z&aH-jyE%18n8thOA$q4jXi+LR^bi6K9 zR^UY6M=j&^pjb#Cc#8P8xzsz1(znr@RBXGMmqFDP8IuYBkK5#4Bf$~Mfy4$B>iVIK zj5s9ADpjSja1Nw?io!lp;|x;0gCJE0_cYk)uMP#NgH$0>au)DW$|!q0a@e<2Z{n5N zi7F(G+B2%;Gj_eTGoUfB|FXCCEU?`3AmHi6);UE^;vQPLr-R=TauJ62m=9Vs!5m^w z+uVOZ`Ldg3myvT|>AF}e?dy6>h7#6V8F4Ilm4%Z^YDyt7hwqg_NtEz{0mn*7Esv@Y zL+4xf;UwjaOZnM#u~d?wI227uAb1kWHI+e>5f@y+wUsN+@c0rQYek=oHC{+M0P^aa3|=W1CNAi}5)$24G{nbDk}yYT9UDP7sOh<7u2C#TesX^Aiv9Gxmq|94IxMIC z6i=7)d(rAs0yv9)JH8|EA(TX~MoGJ4=9?Xn?T#Pq|02S(RA1mej!vlS=lGL45&d#- ze!h+mw@)MjdVm%!fC_1zXQK&tK>Oq78Qk>pM#ur96TMAi_{H4UT1=b!9b)cxz}$ZT z-9f`uDC;^PrEaQP(gh4J?4ePoL!vkx92|0QM$DaKDl2|U*~A;mz3=4&?RmAJNt2Zl ziczLcchq^p9V0da7KeQ}=*xLnvk4F4ZoYzxWplYsci{*!yzh?Jm#a~rU4|{Eg-gTg zMQvG$DB>{sQ@GRy5JE%vW_doGX)RHE;e8s3DxG-uK!Iv1%Zel1I92iH+!cqh_m81s zO36nw(VDxYG_g!I5w9Q3ZjSz|?nXZE?s*-&&aLKP_lwBwBA_bfZTaZPUEA1Ymw0pcl z-`0hwwBH5F8A_WF^!)D)-Bv|lQ7oLCOH7o~7Nmkod)Wc1QE0 zArAFIV5k(kvR{M#+K&A}@Iwy$4`B+MuFpw4gDIlfU=3q5S!@7h?H(XKO2Se=<|HHB zFdyNN_zz$%&}qk-GSV3I`GXLLJ%vlRgU(My-avPgPNJFc702aj%6)Wy(ggwcH_&UU z+8SVpUkPsGw*bKS8HpnPf}4tQT|&`--_h=H2$MftjTfR@XoILg2H6+d%~|fUdBt1O ze9(`Xh^9djwAYtH=m*H>#fr7UG2g51vGP*zS6zIEg&&JZI?MJ(l*~G_z*#2n&J1In zKx`u76mpZr><-mJ3|0pYi}ouXK4`_Cs)~y5g6dbV=j2*{!K46XVW-`WfRo6!`Errz z7XYL?L!hVanx7yM(k`0__rgz&;p%*MAacvY(z4=Zx%H8zm6o)?;|m6l;+%MNx()lu zEQt4xxs_p2$kM*91n5SkL75|FBpqPPp1#x#c+9zQ=%00o@o0*+W#~`a4w7#me+{DD zPL#4!GbRndks%)K5AcD?qgvVfsqpy({&O$Lpk>nDm$F&w8$o?6Dux}0^CJVmWz7E5 zsnc!7_xQjM>^Qr}j;E@1^V6mIObk``P}G%Bz)7l~NR_o`Oc}7Bvd9B)o6|XA}F@oxuR6=-#TR5Nm?2{$U%Ng~a*_(#!1`u={xm zyj|^`n~F_$6kN3Lv;a{DwtMLUOE{->d@o0Qs5XjN4n1_v!G~YhEU-*2vge@d{thBc z7}0do<8vC2;9{h6+cT!sRsiVpIH3gbP&#AGivW^vIh1wMtqg$7@d~WZG9KY1Uc!{o zVt1dM_;kC+2tHVI3EAyGK)txjSa zx`MZ^g;#iBCvHb;AYTkAt9Z>jyoQmI&noVle`GQFRMw?Ze6A{9RUyUCVq3~enl3|` zIf4il>sG$WYFKYd@WRKU5Ljq!+;!7%T&t`CHs20?>7InmidX$qlK4aGk}d$cP4p&>fA0_OE1x-`mL{nXD!a=Bh+zzVqdxEImR70%!Uk0qB6xs+$tA1Ef*WFv5 z^~&tw$SmpLpvo#)-!q;JbSnXl5^j+;w@%yuiVnrVFm?jo@O_;Y;D)xm1i`k@#@=t}R!Pv(=2(t@n zZaXmo5O7o@a4x*3q2|>*+S<{c)G>jV`HNo-G3^$Q5uEVq z$m3!17}j79K!T9o`gw7G{}%gu4E{lT<-ZZikkm*BYYC(8)6AZGnH}EzhW)TOeKl0Q zfr3?mVmoF&+39Rz2tRQL!6Bp7eCix~4Y4^vUSc7}NmM|RSkX4DWTDU2()FkmE41a; zPK=R$(hUGJ7cNPQ>c)4llgx+j#0MZ3a|~yQeZg*MxpZTbx&C8VpYXhCn=4rXDoa@Bzn@ zOLNO!WAG1Tq-v{$3rK_YFR!lStEDaMhrG3yp9~n2TdT*~f(Nr!5u3x0cqSrG*#U@@qBN_Yx!f&f0HbES-XV`d(Fi zaT2!>$7ow>nt5=me()9Z;M@Aa!REo8`oTUaJ%~=?ZuQ6~-W>PkD?uPfP`a0dc7D@F z6!=NmPHX8JT;r3n=Z>~+F0mh%yPJ#oh1ppJhI&6F%voV;0yid+1;;;y2TSWwGj*J^ zRG@*WDmp1=ir}c5ichej7C2Jz-QSstwp7RHF8Y+ZJfRPqaMPYm@?7SVTsaQGKec28 zf4~!LRIRk#%gZeUd&CR2+%Rz`$xknW2@o;_H-!m^3vU?tB7Bs&*uA5X7;HvWTmBM* z{ne%I5Mo}l!el?y)^DYO2Fp=ZSi+X;yykfQFje%RV14^umdtzZh~^O=p+}}IsVFUa zi-zTzbkeK>`dhdveY!KP8WMij1ERC;IZ_i$jIJ?-$=&cI?j!A~F9qS`H5>HIAed^L z7H5+jT%<}Xx)K~WCtbj9X)&N=2vUhAKNs6;aU*4pe6-gsLwoa<6~PvL3v=$T_}7Ae zefTH&WY9PT!S7S*_0T{V5Cai*LxOcyG_Zd>MB+o48$@+*2xgGOmA4XESwy@JsM^@t zg-`mZ$qxdBG1diWuE=e`rb+#kybS+5AdkKLigyFbB;NZ#AyaNbU31Vu6097$ZC_Xg zg?B{diHpgMmhY_n5pLB?j&wT-i*b=?PuD~#ga_Z(4-PR8*6Rm2fCPY1qFFznl9C6n z=m*_sUmm=tA3!Io2jOEx0>I-@%#2-NouI zphl?$m(itp4;Ug$5~6bq_6e=SzaQb>GW@#@|6p&0D)Db7{w+j#k{aLF3E?}dAr96B z_%|Q_0{%Gi(Um53Y90r8mHDR9cjA(B?j6303l*Q8oym@R^O4x&z2f@7U~3iho4aO; z$JQ)gJBjyJS&{nN;I`Mtd*@bR{Sv>I6)t%T*miwJ3gSTw8{vSWyj)mySXZ9BXse~$ zmVmF^Dj8{jkK|e;p|y1-rF3gNi3O?Fyap?ZchuZfl_=~9nJ<|e6ha;^|5lg}3Q<6! z6%ml`sZWp!?Wxb90t#x$V2ZduLu-7E;|1FIjg<}c4aqRd)sBMEG;dThmeQX^O{{W1 zJC73+SPm1S0B>Bhc5ysVU>DJaFjDCLa0~J2$bl}4xF50{UY{W7G6$?7SweJY3I2 zh)cee{1s5G$TWuwj3~4WM!OjowV^4Y!lgfzZKN2--Xnl1JyGQr#v5lN6U~ob(ZAc3 ze2U`*W0&3z%qTFHw#I9Ks*?8@@dPrL|Q!vpQFEuw3h%gL)sG+YSL4e638{6I*-6zr@3on3N9uU zSgE-S-*Fqtcv#Te>_^_hT=>-vh+hNJ8Vr69p(%sI;3M&K!pk`lH%OX>I%g-dO3Epv+QXC=`9hC;kf__c-K*(!bw*r1uy zzh1OOC^iNYRBy|bD+(15S+M?rT-I||{_VFw2pc~zp`$HUIn-_o=4}i+Dp6bN=&)_- z3cT{9+yrxDN9*m17Q3REe`C#hWuCSuO>8$T;M=*02D69dj6p`b?+WmmGCctX{)Ivh z;u&I^5#q)R#mbZ@mDrP5Q#JBMIhz~M6TRE8D=xiKy9#yocQ?gES&^1Rykwu7Hjxsz z6A?9C`|2rBjL%>_stj?IJe)Q#qcIRV2-0+$6mMiP-G&$>ixc2Y0uYfG6zf%ye+Xly zfnQDA9U_qO#XUoc>HSxFqvJH#&!&H}9;q&t*n$jh$x*x5BO1uzk&tE&vDxx%SCm~|ni>t2+Lutlj!^=#yHF_vb)EHn>(isyt9 zni5`kqFiJ{;{r!EG$oV%fK)g1i{$A#-N5nW@3a843<4 zYvF1WC=JU6_-y8NNZMCo!@sYmoUQlol@u1aySj^U5?ngbIvLk71B~lF;EvizoszqC z+1;EzU^izVN79VJGolw%Wi59#q-^?MNq9Nw{{gm?Yu30^z^w(JomLxJ3-LRRKf|h^ z7}i4W9t(5>Y$|j8m5*QfolNC zDlg`Mg7<*n7gfVbGF??)Y(+NNkxj&RPvC1sRuYToN)hcVGp74-Qgfw;FWdrkgW`5{ z6aQ9h0ur!?I6*^*mnflrqF^g-0SlrnuLxrhX8|sxdQ+r@wNl>#Scra+sod>UfiJ}3 zW4lQ$j07sagaz-s$bAExCT2k+iGSz4s1Kb$tg%0!1(dcmPIcEfSrj^5@27#Xq1GP*1`u@4;c!X0+;_Y=0P!rvwhw z;_udH+Jp8tcgcRgV=bEm%|L)OTIp}U2lT6_9D8LH!I?DV(E+vN3cbG)W}hr+Xsu@` z4aG<0Xzc#;(5l=SHH;UchRg86*MiXRqW^~E4~QcWwjy;|jzFEW_F*g&h$C>9Tqs9i z6#8Hk%&(CY+Z4g6bkGdH7cuTx&~?t1-?0{kC}=_NBWdhu>a}52r+{$E+4Y5e9rRkW zYPQZaOT7jm-s9vqTk&{tZ>RHsar2D~-7(k|_<|(!!}#Y>_WX<;_9iq;60H)0}@R8gmJ!hkr%bZFH+y5Y1%> zr{BP*6G3XoWE7^kH(J4%zd%x}U@g$P=3`i84z2G}!WRk@MsS_8ZVZ_qhhfx;v9FEP zD+OAgJ=P&^m&g#(T;VD&J;d zmUm6H4CTvW!ar1I_y{ks-v7Sz9 zCZmO>iedtQpcV>vPMQ9N_x-ob#loz3OMYnyXv(7r8h^oGM7t!l10t5#8)Rvoozan^qRcL2_)&7N{0!dkKZrzBT`AxF0a z7>IstPeHu30?@5TNz(y9r{)4AJm2^Rc|Hk5nPAcmv;hozeU*c$&PCJb&1C04m`vlE za>UrNB3m{V>M!0f3keMRfC8+OaAkqH%%V`yM;Izp-(9veBstlOpe3=T_AG22<*r(E zi2>?)Tr23EXPtT$pw7cyNu(p;e=weVaq#uI>h<~l>yv`7&sVQ6^j{wwe0^d6)Ha@` zr}Mk9_bC!anD!&=M*0Z5Tf>RSKX{plbmOO+*wXLSi`d-y+9-)})6DvgaaIfL3T~j{ zAvTGZFjYCk1y0SOPvSB=3G2(Ri`@_u?Pf#A8WiEZU%bU50u zrST$h4quOwqpQ+R>2%E;C6#;esb z<6j=}&NUCL*JO@gQEf$mjcm(JwcML?qE+2(#nOq26oQUTkva}vQv{M8+Af+xP+th| zB=#WHxw-kxdR}Da3nE71E_sdI3L$&~>P>212npDM{`7TSE5o_UPTa@#z!T$YD*%{; zbE-Ewm23P|YEVJG>nIFzVQCR*xSIV_+_4(csB4UX!=nIqtk&GI%2~UBOEKgQ!7~SU zbZjGcAYTZm{RzFqpgPfwPDQ;PTjgwdoxRKAj;|u42;8w%bH__RK@r2W)U6$&TkjB9 z!ES;Y_W}NO8wZP#l7ZLWFSOd38fa$pi0ccLZ#+`SA++;o$9|hm2Lfb0BKSo zOY;B~HhCZ{>MfbVGQ-P21Lsi`*G2%Rp2xi9>Ajq(L-8y>FA;eKl3CdC6|m!C*bhx1 zj=HzyGpW{q{Ie))&?MJqWWEg8e>fE^hrU2bvM=MA4-{$PS-b3^d0JZmI)Tg4!`6O1 zM9)M*h;~)n-9g!R4NDkPO-DSs13O zPs5ERM?NS1pj<9`STAa6|J>XER%DAbvaq892gmS`mmV0Fvhy7m1y-~jrehQ4JSSaS zmx{%-V?!^NVx4uDFl?T~k+=g~R~t!A$-C)O_>sQhaFSaQ^-?$7nl-fugm&uMHvjlrC|jdC%l5P95R>Eh6WxFeFb$$hR<-p5dwnQEzqyf zu?46fa%-RjwQ-ihN(EBM;Zi&frocmvd?3QXz2qjoF6YgK{qs1USg8k3+kZP5f5?X} z&5A#4a@Jn?UyAN)FOmzT#zz2a6My*1Ux}w$h-?!t7ycungGoEK$=OoNT3PXj<*#tm zpPo|4DCg6PqxC>y z24oW`CAEcM1*(YS)HoR3&I9uq+>A4-FjY=ImQO&YP}iXX4N<;fw|$lT=dCMaIDejN zI6(joC#r?q%U*)QWdbSikvM=F$7geljBPl4AFXZBB=y!a26?1Kx&V4aWQyAfCP6t<%J4~M&|0K+L(mm;0=>vu!W4gt`D?R+?uJqgPV}XxA}?X{atHqX z75`qwzgI{Vf--7Zjvr$vOQtrYAzz}m1$b6O`GPQm`#y$KR&%+CTa8d9e&4T}2oFwe zuICyrHx44q;H>?n794B8D;ELhds#b~r3E30E?YPoVDfJRxLjai2YGx}x< zz&VkZM9;Niz1Z3E1y;`zcq_qCwUJJ6C31(h(J9vF5jo#}iN&$M=i7pGwrlz4KZ{9= zDs;0+EwqQY7Z$uTVi=-qx)6orsZT5|DTB;`>PKO1#=2l9pR|jRK<2>v^uNrK#wsypTT(kc2z#L~tQ7u*o zV`11IiP-yziuaiREinpoR_!1~ic@XHdobnZjd~6wrrQm#w^%4(w!>3hll+>^a2GvSr6r)1+6-U+MbZXAE5xO^yr7OhEF4qA3i>B&{T}>Tb>aZ$1Rwr=cGq7{HxXzq zEc~~&!G@!ZUOe#ZHO{XxGrv3oOs9yNQ(U6m$oH!G0QqO_jOD|UR%<@oG)mK{-Kl#C z&c2vVzm^NNMom#?RQUD(O^#MuihqRX1QVJva^cBxA;L5OF2&_CT4F(Pdj!B8q`<*& z=}T2W`*CW!Gw&x&lQ2*zE@2>bih(5i5NIXhAp3S_%bveMsjS&ER~QHK2)U%ehp`pbY!mo8+ z!e1CkwfA<&#q$l@!VtmpEaw^A&$HzRLf4BX`7s0~ie(WVxD^RLmko{&cCd$Pm%a$d zQ-)W0=)8-b)CxKjRt|duL*9Gc#?CKo!Bbq|sufq1e_eOs40WjV1nECvH(wa%`9mk53^JS zzZb-ki~JXW;K8uQniDESdkSgCs5It=n$^gV+xNM~1l9oYauw>riXF|gzriz0gT#P3K#`0KNtuQtzByKWWUvmECv+H=XjxaY?Ya5wTh>}EIgDCZRz zviku}p9U00Asms#eXQ^2Og2Wr|-M<`#bc#A<{y9Z;12_eQ$`QF)=LZ9)S1S zW-McT59Xp5ufv9)UMwitGiFJQu0vv_e#untZP^{Mo^N@^e!iaT zEiWA>k{zX?7`Dt{fj^(d@c?x`!#W70`VFZw3R4RyUWgyXsR}@1^`JvRs~Rs4 zxlAz%{sy!bis(Bw%3{2okq?c@JxkaGl8NiXXfid;3&$f#IP4vcD22V=7A{>Nx++(X zFBHUKwg+eQB-)Zo@Wzi%7X}tFP2UJi=!d z#h_L3aqoOE*)LafU_FQ(wrAXo>Sc>?hEL(6TNzD;Jl}p*JuvO&4$14)ObLeh4!~-; zb{&C3N6M0h_}|c-45^E< zyB<91iPTxDK09&RcG^U`I1i9X+KInlwTn1hh@=jL0w~mU0n!SezQ||IOE3Tc%FB_$ zzdro!7GGhtRGsVzDFu57^+vPsEAkR?)=(AZo76w{5sEyw{}`(LNwA`)f5_Rp{5=yz zQYZ0M2MnhUwphh=&weX>ov!^mk;WSL0~GFd;%2N#kVF^vBT=CPpy)kvKK@x%CcoRO zAQ3r*?EWYf&DoY1r%87PWPrFA&4r|ND*J3@EMFJ;e1@7?r^q_uF8BeDpjL{Z`;ezQfgzj3_O+@r9rc$n!S*s$=U}Rm z5XMsZ?YCt-JWJ&p`rf?%3GVyr-}0>ZU)FhS7^&JBn1@ftU(KV}8|kiM0+y4w@y8yq z&g5k_v6gQoc3j`2xTWLgzJ*{n_#~y5K=~YYM#z0ZJr77a2w-3SX3ICRs$6m@j-LBp z=w=>Fu^nxBN4Y+_R2W8`SgI@t@7+W4E=?jM{)&TT5A-{dm#ZVq4IFiP?4cAU;`R~7 zQal5YJinj{qEeN?=x=YTS%UJc(qD=z<+23twEp$Z?-2c`PXg;@|M2nE&jtHuTK*$y zXSAaAh|;Hn!utbKkqo^Qmc%32ty>jvkFDnFd*dY(WxYQg_ZjWy9Iv!GnF7Bi`Mg--W*nz7Jrj zz|hOX>5M_}Juw^K->&rV{eYL*_+IgZ&tD=%gm?NWGk-n|I=+A35Wv^W{D*GWL!{#8 zMjq$lw_oO}e^sD<(BDx4U7zo*ogJ_(9Gt5)m|jpGL&xuO^$JHpSi(%l%rHjzD~mZv z(j2ZXGts15L}(C-oTI39pbu;n~zQ@&mi7A#XI8$T0zn} zAwSjPhR*l!&U3_o(0`0KKsEN@0+P4p={zi|Bu<4kk&mY0MBHykatkJjgg46E*KSjE zK!=p!hwK;}n4-4>r=4Y;T>s{(YnxmIwgaa(^AL-S^I`+vv()@yTbQ#U7~+e!(x>95 zEZgYQs*uJfDT2JG60qvHgHxk^Jyi&>g%QAx9jzDb-aI_li0cfRAQRoI=RTq9(8B@mUa}ng>0r4 z5Y?;=ySFbQag&f`{=SO85duwo0hMjye}rrZ6z5nVA|Z>yc>n@JaIj{H71r4`8@8I1 z>WdxX-tjHmV7lcq*FtLi5l=91*h<*fb%ZGzsy;)%uET5hOsNItKw^zAiLmdZm-tZ< z34Xy`p1HscV9AtS&qLk=9J1X<&Lc+wHpsN^1E{OKt(=4!YkHSQ;gkeZhPrrW3n4X? z2|wr$$LXMf`_WqY{6^sta=U79Z#G!C?ymya?u6JMq*yyn(#Fg2|MzHhgB@ zuH@%nBvB5z#wH6hscRi2$R~Z|znKGh<$T_|L0TswD{qnZ#f3*4N&*2oA=|7Umj{j$ zVe-ESHhd<!tT zw!#%SY7U97{N%bRV4fi<7VcsZj1`CvM2fJ_qdcGI4fNVjf=Or!=>XnhIh?6ofw%mS zoA?-b>+)?HZ-bjeMEmgzDQ5qr7cchG3%vYJ_1&p98p}|rE%<91#ta!jv8 zx#&)aE{ET!!jH;~%l0P*+^B5yifi*2uDG@_ zJveIy^qd3n%W*+`azW)z8MPcH#_QK}As2u*Noa7cIWAq!$JSnJ2N}1+PFw?7Wvm*^ zKU&8D#vLg^LmI>2O3pg5bXuWOVCm4_z~na-+#@_|*N`eZeqEsG)!!QPze^g3m%@LU zo!J5UFW%WeY68}?AN6)(&CmP^=-FRq#$;xhWe4vIJ2B)P`(M{NPD<4~i8AImC~h9d z%k0^81+ zJMl)e8F1U`ojNY>irXdxf*M5jvC<@`1=>^R++o*UD|jrI*8oEkg1sdm`CF9ae?TPv z+gkEVfkOQZ8w4Qvp_tM6yLQm|Ess)C^fZ-0ACYc7P5ce%Ghx*DbzKCZ&-2Y7TS$menvDDO={Tx0%t(L*37sWP+@b28B(Kn+Yp1`y#y z(V|Z7%JxT?KjfWw%Ul;5Ieyh)tGdVAuZG6OneXH*z(-1c@d%(o4fPONqyQ$E)*#nu zE5XByePOZZ*wO?nv8jdM1I7heAI2aycIxRJP#bi) zjs4@r%l!Db3DZh!gP-WQo->4_Unv)vU4<@k5B?>4>t$xRYp!S4;6!_#To1oY4$cF< zu#6xsx`DHZ3vi(F>NvpS)ou5@I!tWZ3_LQwSNj==C{z;*`Wb>wwx4m|noL~A1D8~V zf=!!np6uQ9aV-#Bd-&>x>onSAE7BRW1)UHkLyTAG>~HMsYt5CP;L(%u3r$Hq0`M@< zXOKXB^fXBZPuht;{20$n5V;!#h{}})6_0{x>L$oLE{2Qer>K^uBBL+tQw_eblvBZP ziVOFaYXKH!kTSu}${ZX0)p$Bgu6!;WE0t))9lRBe4cJzHjXXH|kD)QV%nT7A@T~F` zvg1vN8hPK*w9lH9{VC0pk?|lO$r&#f*&oSCyN~>wUJA zWOJ+gGh&~H_Ij9HV9&UW@iVSll7eakM{op>hD_)xhS{kiW=xt=`BKK5F!8b(qg5QQ ziRZ48+3Xp`;x=K)@GhW&d0cY@FS0YwD}jnO1(%?vtPl9|Q`YF=2Y?!A03#0{$E@^X zx44^vn8acfai$OI_KBG*M1uEWkpvQdY~jX=lERJf)T&GE%F)>ER2wO(y}SUze}i`(2}vEhH~Dp-8Qw(F9K<)0?XV;DE$m3GtwhS*Kkdp! zM8zx^h-<8WV1u+>U1yEP{!}KeW0kRi-gn`~t@uIK-Bb9%R`@3T6uV~wyqFe?E`xoA z$OK)TK5n8=H+o9~;#l#m*n856|BdTyPQBarO7@{Ob%^d7wuV4KaYqeob+hs0hiFF( zqGpMM;5!+m&JO+wKx0!tf+$UM353b$>5FpS~W%Bq)2SMvQlVb=%N+X6aKyVNgRk||^WiK=N2_mz%=0=r&D>y<2)Lg|_93zmS!qRA zxbL$;q&UKjR$hl4SwTwLcn!qd1Lw0(Z7FQ@ZI%_DL%oyMpa_{*GIc@U;sITd??yrV=vIj$g zrH$&8C)fesK`r*~2m1HN_+5j4zrjCczJCol{fW-KHCsCdUp5nm_Oc2Gy;P;H>BncNMNelyTzJ>X~ zJW?DZaZB)BKHf1SRlno+DZF|k>(rNuK7i1nrBC9a~0m7rLG)=Iu%bQ@+34JU7Gp*@-XXRb<}tRZN}REBO>N~y$XgCK4gkQ9oc4f`FScVk`&T|#9xRj6i+MMS-pCqBc{u~0Q^YtiTd{h{GNe- z)A293|9G4ofxPzz8!|%RVas@n(z=*T32bOE<4x*uZm0&q#A=3Mt3#rE1h^V=1lj@5 z5g1i-1YC|ef+yg6H38bq1i(DP1Q?e&0cy}&#LBffHDK#JFFS=)vy(f zVs+Y|UCB={X#EQ*;cbvZtXjUVDkR+lDoN2zW$T+=`GNJZPpW;Wnvi>kgtyudoXl)r z*^3$bcLwsmT^tUh*3-G&q64EF>QajouJCaBpk_K{d`Gf&wc-yXq(m6{)Mo~{xQX+3 z89_|~0U(>C&_{xx9~UI|LE?kQ zm@?QQ3xJ(;q#E^hvoi7z?ctpIWJC?%a&fu@#)*89F0sD*=*2P=(k@7*+f_xOe67`Jj!k7%>Sd6D~Z0e~gm4haT=p!)APUc6-e7?{nv~%s~IJ*L}eXLzQ+O8~- z)A@=m9Gn&{vMSc&Fbk3Y*iWhtMuH!0Va*8!D-Sn<_*pOW7RGBUv`-#Dy60mdOS5`2 z0`+}e^>|FC08@SnzlY*OAyNRzTuJ>f={*E{BUwaBb{vX=QWCt#g=)^8W(;s&*EIrC z!W@VPY_=2U--9*~59rodFjH*;u~~l+jgdwjG9>_UK*kGzMsPIk3jA_`NG>28)f31> z=zY9`Z2@tK3oH{s$Ke8UvqUZ+TgT#}sjQULgm4{EgI^Bu%V<|Hd;UILVDbCZ(ef!p zxs7&%sl<~QM8^&$H z|B_)?FZ?%6Oa(Yt)6h-zp|B@?z%vwJ58=sj-wHA_OSjQ3gSc7LGOGdpWot$Lr*+7qXK` zU{xZM1Tdnjho6#zKoU8pK0hUEVoevYiZWXfu~8lGQAIIaBIjbiV^FGwT>=vyibf<+ z(A#dN<0rxODFVQN97GDK#kUX9kT(6nO_)uHb#$jrM?nDP%oL^nVz3m~eYZmZYMyq# zZ(d>zGdZ~-wilrTBR*H~z{zHLX`uW}tS>=Wz_RFe-#(uxp|j$-SU*9034EhQ&27O; zLzrIk;TNRmc=4kD$KJcgM_F9|#s9d78Rw=gO5+s^HxI}HeESqFQ zRzkAwg^TqP1#B*^#%imzwoR*5Yi%1XR;{Ruje<&RP%5ZY*GlcCp*5}4qP6mSzt7A( z`|M@|37_xl_4~)b^Xz%%nai0oXU?2Cb7r1Q|Gl*@BF`qwtD61=N&%nqE+|xqk+RK()cAfWE=7QzoUFW?mFQ+5CtJ=IwN|47qb<5L729duzPv)qhUFTf^Os~gR=69WU zA#q-Fm`ONKo^CV==gZUWMB+0OJ(We|e%4 zfA2KEgujlrW(Q4NdKg~WKLUDve77==mke|@= zgo?YD5+>I~&g%9OCc8wA?_Nll%^I0Zh)o(fo1ekySsRa@Z5{B=0w9y3(*Zya$N5c!P*;WBbq;#vUQDDU!sv@BfQCvDuJPvorvIevhXj6ctm_fK)%-Ln=Q|jX zobx28@7oQ(yBjb6P@fNpp=9-jLTnj?jRv~4F%`djHJFe~K2Hgdx#ZKCoN_x)k9%Fo zNqx;luaA5tju|(G=0JQR#tk`viz2FUVsj~8zUcn?{Kz#>Byd8^Hr2hVxoDdt-QK(= zX9N-g3mhJYGkdq?p)R``bC5Um7Je%#X%3m*C0}PsEyi`m8V7xIALu4mf1A_X1jqA$Xia7AP@$%gPX4GY|{H6J7eu9u~bg1 zg-FI|Ed#<~xhBF_WN$%Dq1&yS@->{52exDAJ2|B#&JL5c3~y$`Q43*Lw7c zF4hM0McBwS9JZlrViBPUz_6CqC-55^)zZG6zh@&Oj#P+5#Y(2F$;}Iy>rT;SRU{O{ za-xj7@| zVtKujF~b4^-?+w?Gi-4JF{ZcViHM*_U5FHPa;;2&pZha^ZCKF=oM7bTyoy9L=4#Yz z1Zj|bbOCe6SIM{YQIvGWkA3VQZqLfgt;yfv7n4DZ*I2mR0Zx>~F;Q?y#N^NLz7Z#2 zy~uO$bkcj6ga`A2V2MxB-i(F~t3PZ#5$Gu)taivB%^ z%Up;zZG!$S^x+rNon$@GfjR~MvsiR9+Y=lLt)2|Zc>-85Klv2urfpX2Bv8|2j)lW) z=*E{EgdxBz$Zd+X4ql14T#)NpL0~8}VfGEJ2`4YU1=t$HhE_f3wq2MP<1x{jS{{A! zTfpXQa{$7sTboxW^1>F#hxXM9L2Q z796C1&*ET)=W}o*Ie(|&>_q++eg*F_BZ8GPIiEFu7xNQpl{v{dc$7h5JLh4MQsFsa2kI!XNyfk#yGd8;*lP{q8VgZ#R0e}R_9eVU7b)HpjC1DB2FA;k?`)L*<*IMG;GEDNfHT9MZ3+1-FLOz z#vEd!&h6x?E7um2AIxPEnFMSGXygML{T3;agK?2I+mhJge}z|F}ULEhwR zCCqm-lvlpc9&I-f%=BpcZu8!~$&;k$gc+HJ2~L|^8lSllnUGJD-$iz4ZxDeEc!xZp zIT7bki6e(H?r^P&CSS4$JQ5PjlB*d&$9SxtZjL?kG?0n?umZ$_42_`|0eKucjU`BM zjQBG{TIEA(jZU5?#Tf!eW*9EIoR%~gZ?t-`8All@p6)gAN1GrAw1iGh(3Oid zTD-a;bzFFTEO`Ay%+eh(2tnJ9s_+&wk@|v zn(1~55=G+^qf z`zfYI7t?pMzjFa|5-zC`P-+wqPzIMP1QZSE`vPv>*g)j?XWM8E&@t!LoB4OF@jKu% zVes9_YX#fgEsZZS3^NB#9`c|YbYu1=lZUIs$yrb6X_7J@X@ghxZOiji#+(WZS(UXx6ezA|oE^LB6fh;{@sNM)hE zBp-k#kiPN?8x7%zKrj&oIT1KWFNP03U!vrBW%DT9e}YdkAzCTix>2vO!)^I`L6LtlkTPZmHaC- zoNV}G|DJ1kB(RU9_ZY_gP%75J>5Ot?jgN_Kldd~tNM?&2Jf zM-l09xC!eTmssnup4#pxPTOYvW}FMb0s8~wXk?^!a9~}X@%>o#FKbXlZ-p*{-ioSI z*0&UjX`n=ws^-MX-#7frPj6u8q542~beVuFFzpC!iRO&^|rGLewgNu?2 z=ESgCJ{l{MJl#@!7O1`@nhOW(=_*%g^xl1Rz3!s`a%TJ2=A!qJ$vGQBKLeql$55+q zPqQ#MJNzs2t@IB>r@mKC&5e~K^38?wdAQjTH-8ZHk3~tM zfXQ!4{}$8A93DJZy1TjfC^_k2QxqKuGJR9*w$)dna(bzuh9GwC4cRz5F9+EqAH*ya z?zPftMF>G1rO7xLVBbf&<%2!VG`p-{qNg+#ebAlvLeU2>FYU&63mWH?#o%%SKEOGK z8;ju1f%^`*zb#r2ogRZw`7|2{i=qv~-_$iKmy__I7q3gqSZB&PQ%c zpgU7@@q7vf$76j{tg(&6qfJk!n5j2kalKHIjUyb;BX$@4`E93vq5Wp&?_!;lF+OM-u!864rv zlNJInZ0b;fO&kR2es24kV1$vG7@&K|+1@frKO;h@1D2cfxXgoNDtRi-FfckS@q&7F zOVMwu&wF_A$Th4UB2p&9WdhNT!ZsN!xbK449L`O$QLpJaWsq9zL33o6?yE~ssGd|j zN-&ehufB$(omBp^bdELv$fr*YOusm8OFTAlAz?G7SwntxH@{RK;PSVJvJ>)H53x?u@knyO~d} zK?P;EHEWt_#%ld0Mq!jj!wUHYcSBL0OSGLQy@O8q_>$uu&EAn~x1sIL za0_Ld^v|d=u_V2uE%Qwijk6qQ8{;>K)m-%Kv|&-K2hnFBc`80_1h3Hb@Ew8&^>5{X z(vGITHmx|e>HING^F}vajLh1xxt&#<2hk^0oHumi`MMqlNj)mB2C>RamaoG&mzgEb zJnd+Duj!k|Hq9KIk}Gs2@L9gNo@Yq1A5tj8(dLMC>-H(#1oYzKlw-U6OaK zN)`SALWBZe4IH+MRIxS8WPNhkX*v;mC7pSlRIU3=wR@#0YD8L5 zzu0G@XKkWG(h|M2&qU2O(V=OH{<_aZMk? zQ<&s=60MV7tmuc%0UST6#CvLGHwlow(wf{96|%%&vPU9}vyj)nXT%UK!2kF%prR+R z1`Y?b_3{lKe8W{x&0@4(4|#-Wl$$?8LJl*BPB6L1_R ze4xrZaZCdQ(D}zU%^TCS!jY`66B$ZYK|fQn4iofuw9J`+g89irg8HRI79*%xd zFgUsj8EC#rokOcjS?%YH9Nn9MO0xgC^ix7MU@IAM4>8)TYXs3Z@$ic~`9Ic^Aq!wEBb{4IXc;EwF_+tCH7XV#rlVeuHhhrZXp@(DQb7T_U42v@%(* zrmdtCONma>k!ugr5!f41RzAA`&e$5$bkXRhxfrN7#~LdZgN}3259bPyzE3iF!&PJ< z7SK{S0nI-nuW5MlvY9Ny@V0!Lqw5vTr>o;I>wvgOAR88-v5})&{v^4qj(bEVuorKN z9M5VY1X;5mOU^USM?`ek>F0FAM{&o-LP!@j-S*}}d@2@v`6cFEc&2s+R_F%(EsLRGm0~gl zYkNJ5;v^!9d65*kYzDMgaFjf>&XxD+6Wq&WQ$*_vs6J0QdK=f@aJj}uoJXkF^J21~ zXea8)`Dl4FO-8c-L0R|w?;8x=-F-gg@~0RnDc0x#{2as}26GbPYiF?GWp(mcfMyyD zw100x$08K2SfDoIIj&e(x9#(MxutF;O)!|@e{qTISV)XqtHramwqn+bm)a3a z6N7wJMI8ai{q1$&3A=#XuO|^}Uvs%>;gtfoHq4w`$BOOL?rP}JlFRPxBtuWvHJ~MG zy^&Q>-8gj%Ac7EPvB7)`Cm~}nrS;Yk^C`Smnj9Bo$Lp?ac(H`!kCzF-_0Cub7+WBw zP)_w7)J!4g8ML1l6ca6t1=O{$DDvhM;*5aSY5-hmX<3lh(k`#D+&}?GtIU%U4JDO` z+gY+{dI^d!dtfgs5L&Vpruj8+y zvjcOaD)XE)4{X*vzavtH#={aA22D21ZfTev8US1kGjTF$&lKeGA^OQVHw4Kg0UEk{ zl8#87DRQ}#DY6w@1B%#ABkLT90J$tZ`Z0W)$db=~6kunp{r4mf#iG#3Ef({ZvWCE? zS92#eeDvohw&C(M$UEX#tx9!MaV zlY5f`0@wK0Ip6oo*Po+qitcVK|4?M^EU352g=i?~zoi|q+m?c@W6@Vg!_3K(5@EH;Scrx<7ri2mqLEW1HJRu2 z(^z3ylK(Y9j7Bi(n@=r#-@JJQZwwtN1vRld^mpjUPkrfo=n�n?Sa(r>=f3Kk%Zs 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 literal 118144 zcmeF43w&KwmH%%_3IQSs7`14Xs?{koJgOFK$AT&JVhaQj8bzg+XXPzI!n1|cw0dt2 z7g|AN6e=?^BWl&a)KZuVDaIx+84Z|`pb-N^I3W=tLezt5TJz60Wb~pCwBcrB7MJP4d6f z^p^klRsG5SPmh)?sXP0MI$gQ{#@27xCzX2T(2|sXOQS;iElo8dgX;@eC~oJ zm)6yv!Naj_TybPc>ZgF9Uk`~@Et~Ax&{$}L%1h2U`+|$lzNAPS3#v;}`!I0*PO{qm zAK!-VmMl5*(z;8|z38+4)mS)AIl3fu+SF7^zsWX|*GrbvUv&Ao7oD}_+>4fe&e|-* z=f))^sRcaO??nIUO%;tUSu%g#qIro@;Ge0odC+e(m-^LzOO{*&4jn2luDhgY{rM_L zJ4u*@zZyN~za>j9IDK1f%%|=wz|e294Z-jkYr*jNxr;8%6UEqZG@M?Nx{0#-6)hF} zZ^@FgPOm#X|7L6()6OVKb@E!j6Sr~Z(&U7WZDWYK)wH4Ckh#PJET%&d)eRL zNB4Thf93o|I1sE3ijvf!^_N}}q2Y69oOk9S^I{ZO9idqLxjJtIeCnKh<)w9JUwG*8 z=bmxN>6cu2=rNa^e&N}df9{g=FFkbOM~^$V?vSO?gF`=l_9d5|3nLsl&%LrX&q=nq zUr5t8Z>!CtKX=L5$9%5-BA9`uiZ@67cjrhHk5DxD|3Cskl z1O0vX^_sO*>K_vKp*{KAKYzo(-!Sku4EzlPf5X7vFz`1Fyfy}Ev%md#DfioOS5&;%SJo1>A@g9m`x7_>7mBf>7QBrFywN)5#?%9@M>E7^>;ctr_|Nm@75pgsIWdQII$A$+l9N z$Eom!FR1IjAl=tElB$0LEwnYL1(|m|RM~@b>0auGXIasnAl+*?AM((H^s;cqKdN|- z%}eNz-`F|}v{xLE8iVig@H2tdm}V~>hS$-SZvv3YG=uz}<$q@c%zdWoBpYP?TWyeG zZq1^^Am8?v(b0ifnt!0aXq6yS6LnQqcu2T79;{FQP%1URh{Lu9HK+d^sZ<=$pqoPc zPY=>nLCsj;4NlM;H~O;P zmX~Fh4`=I#vbBTR8mfmj&7Jk{ghGOv&fJ=l-=Ck@d$x{_wxxRo_rT|^K-}A01BrR- z5lH)j7a?QMsPxgi$klX5uzluy4WKJXcTsBDG?5gXSlboUhlvS?%gVz`tA*OGECd0C zI3jAT{>&1i-T6XbgW&Pwo94#XR8wSpnVJF6W8>@9oHD-N+?q?@mml9_e_~GO7Y=N< zc?sIB`@5#}K*ffZpr$Wks}Ect_-HFe#Us>cY@KExP9zV;PI1Ivy+S-w4PZkv^MD-* zU~Op|+rXSc0{eF(gm}2>PvIzG0h+q-WRY84au)I82jD%YsWF9`QBo*w5aLO(o z%q|bJ^?lh|q{jMeO;7g8Y)uzfw8?I+|9i+WsAAQB|_>dK>z?v1MT zCaOJ0h{dY41nCx4i;Fk;;;Eov9quut7S#5rrc*|vomOpAklvI{cLdS@x$26>-l6Q1 z2X4-GWNSLx(i>?e)m*Z&rT%ciOl#Fdd|>jRb}*>#36^hc9GoWYS2w-1ZT|E!70)i4 zUXC=WR3FoV^u}zuUChYH+EE6^x6Q#Cn~D8``k^^5X4C8H_YTtQa%T^JX33`)|2RDP zz!G@$wdJ$ZFG>18I6?m-6Vlhen_3%3|Jy-dJ4o-RCE)q~D|vXv@Z-CS!xQo29q0VD z__5`nJihixz=w`X>W)UJGp~zdd9ja|7qft`P{Eq0SncKO%urNuN>EI`n*MO|wcG0t z41+@xU|s&Q(AKLa2IdtC&B4ReZ=^qBz412WgUQ<-h@A_wWNtSYdlUL#=0y5n$Kk#9 zAM$8y`@@9r&fNicTec709i+$3zt02u4g=KYX5fQ`^L-=H$0GBMhBo~$>s(2&q485* z+&+n>e-;)V_CNDw2hJ#@)oO!$9IehRv~jLFPvi48 zPW}FojgvHR!k1~OxN#HlTacbI5wqE>CJm2`hpI52-T$?{V+-5I1iMO0S{ zDm>z47_3398NnD*a)mKG^rk`Po4xD^>RWU79}h&iwI>QL?>aA=UY0#|db#RgOIV#@ ztJ8&t7A)@z7Pn`g$(~S|{Y+W*n$ql>+m6wiLTXeXI1Ld|-3VHtc_X`cYZ=M*^!KH)QpW)l6>wcMiU{C*b?w#PF?q-}b<_`|A(i z^67c}ef9YX@mIcG@EyJ__>6z%MjEKlA6Pt;T|St_dxR!ydLu3}Hx{Z#4fMP_59ZMC z1ZKCWYTzhivzRT;o+&g&LK`#0m70o>#^(!a6{C>Ew0OhCW4mzk6pMtUU}YhrcoWyzG$wPyAAofbX*d6Y@*X!P^7hGib-c z$cWd_Q9NYF>F;~f^7w0eZbJCxZWnx8wgsQXD=VW|?A9z=)B=+bRrrQFEI-WsM1+;w zC}fG&N8dLNVo{E-zg1f3R`Zk1k|EglgUh6oqDUxK-`Lpg48;%|#Ak_k+(htUEy-X4 z%C}HqX?C-$D134vKqy6pf(fh|e3cdVq|26O(|=hS@V7ZE%cOs=%S?KRpCPs4MvTRg z9^n>8UXVoNn^J6i!} zYEU~RAQZE_GFV(rlp;tIMY=PnS(mN7BUsZkhgi~nSwh5^or}Zl^1f_6YWxlp>~{iO zw%3dxGq+rDXkBj2y0;gElWuv|hm%?vRjU7-vEd|Yya|jY0#Hi}YaDJhprm9t=~2=l z#>RzQ2YXoY?#7l9Go`Sm^nYR82eYgNTfbsMy~UcI&3>Xh`_Z!O<)zs@!m=BD%bQlU zRAm0$CU{d&)3K!#WVi^Cw5W3IDn>M;4G6jpqqt^Q-R;pbUSs&D|%iVu4 z7|5+X+~Z-aO=tsc_BAt6O=45c!D7Nwl~{(KDbHS0mi>5Xb{_-8qF$}C4f&_lQ4F&h zO{ot`-L9b2?Qu}*{x>Tq)j<2v5A?Eg{PNMa<@x2Szs>VYG5_-6MA`H6WykuLz0-^G z%Ul>F5kr6Lm&Pzix5dy4{L5#sx{5PM#2-6kPqllmq&>IhGjGig`}RH!+bpI2TQq0s zUhh_8dr|iBMA^E0*@4d$+Ft$dP7Wxxy%x%CRmi<7SKFD70+|JN3?$-Wp6U=G(P^$n zuXo3+%u|?j1Vx==Jl0T~pYR`d+`dfU;{?etA68!d^tSQwP@?Qv`Lbj2@%X!T7$27r zDt;||JZeI7JMghR_F%%l|Boqo3|#-zc>jJcGp)z^_ltnI(Bam674`48DbJBMWvp%{ zmjYM^@CwWM$LsL|-jav$xhFMCU6KL)AIppCxa^II@!X#%i$4a$2`^ZoNi8SHsMzG* z^AQLU#YJoVULhrZ^!@K#f8WfN_QTj|s(FR=tIbcAHPyacvEk9Bdp=_Es}V#y8i|#P(gy4xe#?|h z>_S@Q+*WdzVlksicGmpqQ+PBrWK`jacL}~eMR43AYU_MkL~c-pyg&3h(Ax!X%G29b zzu7juy&IhrNsto~Wp{?&=FnDd?NMrR*Xiw;1YkdWB0q@n^!9h}6k`8+^mflK(VLU+ znBz*s(nEex8mW{ZWZ@D3c&@eGtMePbB`hb z${p!dvSv1pPek@+*gw_;F8jZD@VLGARQep;}6YOr{UnXFZ2 zvR2Autu4>i-)=19*Y2U{?Bd?+ayq%)_zvS0^BLon39&f06KzyZywg$B=2ttJ6^4^Mj7Bj!MLSo(7np-OFsiD+O*{8DgtAqMmvzJWG9!oI)rtGm* z*`q46pDNE@RTiXIXOAik(zj$Mh4-!#m@?s=3SZGGVsMf(_Ggww#4##t_VsshSBiVTV`&f^nD`Dnc;HK|o;!P)snr;|K;D9cQXl z1ml$a(N#I-`{>H-)#cff%d(fE@WWnQv21$%s+KX~_N1D=)Ato4>`p^ixgo5wIKuAm zb%r&Lnsy7f_XLaYm?+%7-pO+Bg|{yA!OaG$EB<2g^!201aoB(V*J^pO}|F87eY4*}i(c>~E zHMh1wQ#&4EuQNSP7!PDc)91w9OuQ+dIL8XQA8vrSgSW(2WHP-TKgWwD*gB1=x1CH=|hm zFbUrmt-a9O2NUAs8{3JG*X-}j+t=R@wzI#Y@zLb?{tX{sVtjS)F#bQj&Gy<0+fzL0 z#EIAMd-Ln}Pi2oS#Q+$o5VT#${lwb6TYx$pEkQn;mRy|;;#Wo6jw!1?s)AarVaskX znaqb?Whc5O+m0$1v9=v$rNaNPBIvcQ?2~Ar?8i#8CE-biY@)C6D%Oe0risI2N&B>M zFpj6X^|z@}JhjmOW}OTe$SHGnm>=I18($~mt8x^lj5z0jj{xOs4Y4`=^`zGvVz(7x zh@H8bR$-xx#6O4LZ~v3f+d`~!RU_SDi;MXSSG1EV7W=Nyh;_dFb!8H1tNFKxNQ-=V zr(&@U@fc9C8z)k+Eyeug#QNb5(a**=>vqu3cF53C(5@V{9z$e3{i1Wok5_{NKz;0)a6Hf#|S5xA91w7(h0#)A)+ix z_bjBW?Z}nrnJmic<=-Nd1!EgEI?CGFT!~~p@(#D3St($E3Q>ptQP1=jXpwXPZ+}6CTF8PclW2H_%J~0T$C25_1;HmDbf?v zx99F(3WjoP>wH-WghZ|qQ)X>mY;6*v?G8vfDO`>+VP4qtRfRnxC#>gI`J4i-(|Z1z z&CvIX_srZ|omn{M#HF6Ec!2CZ+{eyfF*#Q3jA&(XazSPG;_~b%W!WoAvz0_TlrF_8 z%wM!9lE7J2u-edEHGTAv#@1-Y=I8yncs+>eVu#d_7Pd1t9}v$|7&Pl{+&pz?p89}P zeKJoS`C81=_*&6Cg?^sGptd7-_jjaV^7F*J>%E^Riu4Bc9l85ApyP9ETYcFv^Tga* zo6M6{kop}zPt0av&kq;&+~s?A^F%{zO`+%gt>-@%?-`66w3;XDoB$Sc)IEksJdT)` z1df;&L#vyYI5x<{oFs+YsB89Jgnnj3g^N|kCmZ3^n0w9T0rOp7Tl*wn7ey~ zMeG>oT6wKur_&wm^vT_|h&@h{Lqah--r!0zC&O=iC9y;k+lSjBf8T6S4S8sQ%KV{s zb5A!kUn;T?^ZQ@d-AwDwTrdz4uOCd%pPa97`8Aq@ts0m1zFqY95jGMI-Pru6?eM=Y z`vONg@7X2y=ehWE6u(RGm*14ssYp|wM&1vZ(V|ItWEfJu zGk5n-|3cpdykV=Xah;!1(bdVXKEW@Yx%)qkTFtF}(bpf(FBZRx+ev5`c!<7fq$m4q z_VTjqCrYywTIGU!%oe%Aq?jv0KQGfmZtY)+_X9^+osCv!(3A@zR58^P%A;J*&95Fn z=BH#A&WNN*v_RuHqA=h0weZ=M$7gel8?QA7J*#LmNSSe?>B`;zZ-3TkzR$nDY*HH_ zWvtFk5e5da^OLbhkc6KzMa5XSUUQx-8^1jK}O0VVdeov#o5p|+X zNIkIb(ty>l7Dum%J)Z^nMHAJ()#_JID&9bK9RHZ8{;96MrIv#O7{xN3e7M8cM^6;i zM>M&NldWvWjnJMR4ELe6pc+>$;%MZQrY_kq@*(E7)p5N1porfpqaCgBR>vWk9?L|C zd; zeVlEkI>^QKllJ&unVz5eqv-hw{!K#fGqHD+o?lcmo}Typ@#{m+@<-x)MJFEJ*5hG6 zQNwPp&NCbJT?U4Nb42?zf{?3-2qxXb#`s>K2FEG~JhUZ@{9P$5{e0mN0l2f8h^C|M>MuA(+S74$=SpG#1nUk9Lm!$J#Hi zpS*8mkhu*nyi_>U*H_+896yY$h`!j0=#+9AXC-%=HGYhMU3o0gG3RxqB|w12xba}iYWNN`lTbN5fN zk-WY5NN{%zyk!x1*uP2GG=yk&U4|&5jiy#FL0{-YOVNhl*Y*delA_s^s<^+v9p!fH z`gfr}$d;glKigDYGC>2jU(Dh+6V;FX*#`OLw~esaAjTPS@{& zLz=30-|70dTKzqCy8fxuUy2J}v6J|l>gw;cv-NujNYa1#&ep$``c2jQ?ELtxe#K7L zpKA3hce;KLCjd27?>j;Lzm7lg;(!F=+UJT2#3*X!+-QsE{qKr*93|-2KHpym{Z85w zpQ5qIo_Oco|J&?|qnRS?UqW4xj!6WjB5mg;%4zB_AJ3gQ-my)2I9Kv)7v%X?lSex* z&o?=FGHGY!!7}TA=jHiatH1N|e5=WWotNjEtp3i+^JP}QYyx@W_34bU@!7mSo=bga z1R#_#-I^AbvPmPT-6~T{8{~DK$Xi$m8yBRF*Kf?;iFz2ea!H%;mq@(4h2!k5zF=XM z);>?F)LD$rY9}LW5+77p^`jPr9c!2rt``xGpU6JAfZl@YszPYl#~TH0c0K<0i)S2r z?nL~9L(7SO@Nbg6^OEfKihmq#{Tx}mpJJZruC3qTu59DHNuA1>ZPrq1?MSd+a1xt$ zIiNEm;K&hRQIG9iqmSAlk+#iyk)ye2jgq_sv&AEa;{?C*xzQG9S+eRo|Isq#IE+LD zo9+(ZqGbjh^@#%%vlK7U{Qn-+g`b+cxz_k5G+0UEG{}ZTWL6^}YOIp?5G?SUN`boR51` z$jt={M7z$<$9T-|I6rTBQZsi3{}!LQ*NdN*T0a*R@8^F9KaU8w*NdO0{GaCM!+#^H zIFf&hQ^gMP^B;R@CW?Q3>wk!!cf}qQKktfvf2!4=v~7E48~T5$)!%KW>-X%UJ$dUc z+LNbR{hhZbr&|4;wLT;WXE6Ko_v{%WJ!u0*FVSnN|NTO zUrr=xUN8Ogo?ok<=Zp9AzeE4r2`XMU{ZsXSTL1ikdCIN5zk4F8*dhJ1pYZDS&+l*l zoBnyt`10$ae~6DxWKh3m|4#qxy#8?dXXo{Y(?4Y#^ipWF%qt`pCZ>TOZt3e%w8eGSm$Z@NaUcySn~t{(j}S^Zdw* zj#u#x$I2#&GvJ#dSS||Lq=&-a_vqnJw#2UmHn5KRn)#)J*sEmz#R;L|r+=k@Kr$gz zpEpV7S8fM=f};mm?k56gDP51srY20F3)+K&F;9Q8kWNBej7_vBsd|7J-wjeqwY z?f+D2YJGAWM{gq@t@SaMCke&*&D_vJ zTbgtimlRLi4>z{j7J`*}_L}r{owZj!j-nFso%!Sh!x=OdKG+T`v8?X)lXKSpuufc7 z*TZeqrDg7lZ}Jd?%(77+z17g`BH?j7-1ajR#;0kN6xXfjbz)p|+Ao`FnG}{8o$d>- z*qa{2O?}z!c@DZfp@^ShhdEMb`jMk+Lk7JlI`^zPRlHB4d$;XLpFwcs@e321ysR|&h4xj znbUsx;{u-d3&Ei$L!VzTJ5)QTBt=Zna2P9mLG@W~fQ>DuF()OIvV9*4}ERbeA&R-k$_t; z-yY3YV_a<{-C?wGWK<}1H|+Lm+tp+wE%W|txzG)o!FN)BJ~`iI9CixXl3|5>tyGwoQ} zh~4jLHEgt1pGqm=MHu-$4hB;M`GJNKn7gxyL(@8mCdl6(-h40C+V2RxY|*h)m-kX0~-QQ zi-a#BN+i@5e)Ro<-_2-hIZf!?j)6s>sHyssne+f3ZJJwl*{o=$8P_8n@whhWGC8hy zGA?LW96V5|Hfjbk3l8Ur;7*7-Tj(hm&x|BJ#2+}?>M``ngR0I@s~W?(fIGl|T!T<(s&R8AWqw9=-`ECg3{Fg1JcarVe9e#e(WR3)mhT8Z z%vX%)%YTZ6A)0iw4TmPrNEO}WPc>+ubvLxG zf%nq@8=oKr%kO)K>(IAK7GSSh)mXcNYByH=g)SQ_0zhNEKi~Spn^7L`Fz`zIz~Mqh zGm?up?f4W%?WWM&_mX%xaIN}>Cc3qezoi7dC#rlK4dvAVV00T8Cm}&OT)3??qZ#&} zLQsk#L+A=0 zJ?B4Er8k=Srs_#eHGi6I%*7-O4V;{qvR0H^KIqlbOHm%ECVk?9ujQV)`W#d1d zGJRX4;@DvoH+&lM9WN2a@t>FPP0{xzGc~Wk?d*q+-JhQDB+g@vEsy1~km|{;Ii;O9 zP94qFWl~5j+h3GAc$?Vh*rqfmWHJ&pt7($%{5q~y0j&>W(T<9Z`YcYQje)(MOn){@ zq}5wUrY7E!{!?C_Y-2oK;TI0kc#QF2Nc$R5^-S9YnURg<#e45|5{UH8Wjo zNbPt>MTT^i9};IcKEY*E^={yxv3Ixp_+I#ccFw1tU^C-;M)&aGAumemBrh6AcB_A@ zUUNeG-V~v#nbF-9KiKRBQivEG78>(!nbTjA4R868W6m;Z?$QaEy|La!7Wcnv0k21ASP-o%s zw5G39<{!8f^U+5l!G24X33geO*3c<@Ma*9w>bf-u{-Z#!#GxO?@x0`Z@TH zSvDG5Z?1k{cHV4S#-#$wyqd^=nyb_t4wovA9k2Mhk2YR?J5M0i&`T&so%MElwLFB;z2}NOJ%kjehJFEbA zm~uFIGbP+5g1h;ISiV%Lm4Za`=0O{sc(rHtfwXaBt9&*mUl!=FT6c5`XK`%h+>}2e zw_=uF%@ zAacfndUb>Fg}!8koC%80;ZeXKsRjmDY+g@sjeS57+5{3$u!<)3_CLz->52Y8dokSD zGE+btY~A7x7(?uD@A`twtjDRMl+9sdGbtYoL(0Dahk!d>cKuMz+T|y>bbg}uj|<`n zThcGZ`XsDa*Pl|sopy5*xvY=Qbbwbb7we6nv0zqM}{j_{R?>9l75x}kK}5e z1z2f>=(zYYUUFZ~kA5rl%e+-_Jq6;@Gk0M80VfN~uF+JzGigP2_MPUN9^j=D23P1Z zDGYw`1}QzhjDzLP7pH-#q<%jyzMIm|n$bS2Xl*#&#Po($-o7H<9NC9X{OOZP#6P>h zOZ5!QMJ2N$3RzZB>T6PnnyuNO@g?FFNqa3XPd#*UDaoo%_g$kH077B3KSOm1GBMn# za7De&O@(wu^}QdH5O2EMmpF*(_X&kRf9jp~-M}MJAwi}O$r>y?XoBfV>9`b{PgLHs zQ)4;`JKEace3#lEgRA)aw8h7hABe!!Kn9lk=9XG>g*`fODH@u)G|%9!GPq|>2)6~c zlW;e_IQq^)(088*^!)r5tnXo(xYOz5{hNFsnfd6|eDo#e!(_y*%|eWXtDhR#`C`o* zctLrarB7Q4usc*RHBr&CTu~eLOke#(YZpd4nYF@T;Vc&z4*1lb<24S*-f>0v>doULUIllM$_;$ez?5E@6>pz<$Fy_ zJ{U(!g9BJagC^?6j4_JeOhn(??0=T^KR@5UfABxm|N5V4{0s8^`v*JGf8$_z5&0K+ z$$USADa`zq@ydC&kg|kSnJ%#rSxO|jRTzJc{Ugy!E^{0fy4jN5;m_A`i9_N(i%KXd zms!O~cpJ_{H`Aut<_os?5?`T9jSnfs-S>1yFwQRWwRWdgWQz}DF5q)_BOt?!b<}HN z2wS1*F}LbIitsF6MpAgoFVpnOwaGg`D5)~FgvU`Hc70c14=c)(bbq2U;mdq<$|zk< zoNRPkIod!iHHseUWeJftdvV3Wr6f34F33wG=1YYK0SJcO1j%4y1PPmuhN~N@VBhJ5dIfVIT{X}`Ump-3cR(7ReYL6t*iQd2Wsq* zAII3@ie+kvv%T{VMjz>Kv9W0yHCjldH(NG<_eUW=q4kJ$klmeKp$EYVn_1$$c0s}X zP{Y6 zco82SMOvA_B^>G^^oV!28qw<_^gqdWIKy?JsyBXHkR*^(Ztw7!ok22!@--i~h<#HU z$EUT7rd4RaFr?fNTL_w;IR7sx4`E}Hc{s{=3IDO8zdb1dpmzld)*A)S^(`1`998~y+xPF0Gbvrug#q(Rlr??`_s#7b!vy zuInnHSx()1FPff7O1XeV=CFqZUO8-7ant68Crj9;h+iRfJ4_*lP^k7->Y>&rE#E9Y zKY9vZ3<~NigXQJH; za;IXY9i9PGjZCUXJlWHditDd(1SVf0dOE4%`m=bNvqh*_p7i#FNUM4Lr~U9iOKHt_%2s5Sfh#u;ymb`tD!qy10(_U z_RBBS=V>-`SZi=y)5`*>eBaS08EGza_P=YS-TIgzAe|5)B$qkQzu-fDg)c7gFJ_K? zafN?@rB+zu8uvoL)nH$9Y;U(ev!*J0X=V24^6YWwdw}_(3LeLad*Lg02o=l=i+0iz za?BMp4Da|?dx0X}i}|*I-6NFEpNg9jr*qbA>R|qk;m<|t<9NN_zgiX4j5XFVg>#Cu zP0>OiON(yPHAh6o>pse<;0zFYtqj)?CGckRnE36~P^5T@JK|9y(bM}&j^3}`7kY0T zxvgU55XJgmT7P$u-8K8W)9mgi{*J|08v2#Ln{Ri& z^LK~a-R^jmVp!x8CEx1raHqLD%->1k=Q0c2U4o;hDwet@f97vBf7kMN5r2#MJD$Hpe1iNMNB_Bo8m7znW>NZ_a%htOxqO;M#qtY>%#0!N zt{cEjm?7{x`hN^`$O_xE);MxG$7t8hu}_4ZRk4zl5#F^nj+{}k>dRKHy9xWOD}#wl zmIA^Pk=Sh)-Tj}p0$q*0L?^pSHfL*`xJ=b8rf_V*zc0F>5SE_)t?ibLfTf2-FT)ge zHhk&r8f(u0rwgl~7gere?uS7DpBZErT!7*ZLw|=&;amdrGc9rrVn+_7YM*=?ACXwZ zf~}*E>4^{GxMUbK^Y-SyoxfH?2_w6B&{-)-`vi2CMfptS@+{EbN@S2-b2YUs^()pN zW?!5diTG{V7j5ZQ&j zd{DC~x8`}(aW>r(x=cnXXA+F(Lo9^GM*Gi#4x7@C%$;0!G(XnP5NWwbRq~zXT=PEP zr|Ko;xn^tQlCtbxZAVp2rth|+T$bE#E#akAboN$jsguMj#7Br>skOWMO}YCIQzIzi zWq{AR91Kt%9s%3~2Lt)s-7kA@Veuo26yGN?%up;B#)CePyT0hIRhb~IHe>A)UobVR zQdka~a(5dR0Yg{>j0lV2-9*3yNXg|#M9m~HkS>A&H}vONEswDH4w%$o@i_gI*3H+? zq&ixBWNt~_;Zeie13RvINyQCEGdYHrc2Rc=U-gE*>JLB-wN=~f+f}9L0Kp~vf6Xpi zM0@YP6^vs_VXR{vE|6ua+TM0YA*^ zDCLJ$!E5nlR9p=MEPQqyOt%X-2tOr(dOcljw$UT_^Nw0s4nPU~kuHx(OV&T5ze}*Q6j4 zOEsxOO)=8?xG8$GOjcNTeNcNx?(Q?bLu*ACW`*(mdQV9~nyV@US67}k*P~`FL&=zx zGXB0r4BC>v?=$u_hHdWGx~(znM(h8Vc+$oCFQNaY^hU?98w*6%9l7Rf1hqugMRs8# z%Q5U6f~}y$#NHXZiDB=BQ%};*y%&asZ||KuQ+(^%kNDQzxj{tlq9HiG zog49Ov-q|h?}@3XSb3ujtzBgD#alG9>$CIVjP;Is^HcROLexEux$*;vd;5yxdOHrM zIjCFo1yv|bq|G(e+ky3f#d?RMJq$<6 z8fuZ;nc+Z&cjivJjF#3%Tog%BCS~n}lcM$OXj1;m3@g<~zpq>o-!aAKw^Z53wl@ib z^KF=S3NJNxns~djfZkVG%{yZZVv4yNilZF$Z|x?~f(mfl73Jiw!ZVOy!xU3N`ihGv zq2v_W<#k)SL*(ACf42j1C&7a;t;8z&4pg-0+o@=y)uf8f{XUNt2|)v>!vvR7_SsdS z(_0l67URpmMX!~kVk^ThqnAtxV$P0O)GBgLEh`lx?uV1Pom--P| zBlx8pB0KL!dbPVq4e`R%&{e$1YXRiH;s>Wi;=jtij#M5jFUu|;<{L@bT1B+XYSQ`i zxsCVS!DyIXSxwROrklf3%P|@vrPFz}XfL+uLufQH8qUH&`waD;3LsYTCkmQUS(r&ZpRR2h%3`Y(RT)WO%$+(xW1q4 zASP;%d?VIjrnRFG-JtfR2~qn~;^}-v z*id^VAT*^nqhnAmo6$HZm(8del*?vR&7u04Sx0KLYu}AAx{F5GVMgH*#*x@n>&3Yn zgY-sIF8^X9V_K?oyUOXBjhei-ewi_|BSyN0_aag0noctddZTKU@ywxXRLt&!8r1NR z>6-OH{ra)Gre=-kqF0==Q6fpYW_?oETxIEZy=sx~VoTRB$6dx=79r!5+zuZh8!N(o zW+wr6DsYJi`;bhOnod~`%zX!!8a>k6(5+43yLW#&G4kd}< zauyp~PjjEWTnQRt`4h3HtuHj3f(wDYS&fZFM127Z3Vs)YVv2R{&|^Rv1j^;8LoHSJ z2ZmL`bg6n|?+A=~EIG#fFF3x)%cTkujV#R`dn~Ok4HllrXXN!Ic~*x$n|ytudwo*= z^@8N`JP$O+(hgtI6RiG1b?TfYd-uqdcA&o{I|ZnPIpP6 zViDW0(*F$;AFX`bOzm)<_EaLPIS$KS-r@N{aF(e_o$yRnfy5?rUvXWvRqeB;9Y2EQ$O2r2nUc$F)2+ma$ldiz4FP3x z*9N;N%T9^{0X-x=4SduM{u(VZTGiIvn%!=vinDU8QgU(WTU3I{#Tm!v1Re^oCtK#T zMYWvMqjxjyon%2BTxP}JZjTTHy(~&Ph6cc3jm`Idd^cv!i})F4qecP#@ZRf;SYm!J zT<@uDs#O9`u<=ubOM(w)mk(v@2Q#$;L>D}9FcsiXURl$^!<%XcW`o|A%b6kVMIP<{ zEfenPEBqI_a>7P(Kt*g4A2gb12{KF72jn!3W-RYzFsBJ@&u70dj~1dZ+B$W5rRI{r zhHScu>ppJnv|D6@j|}k1$1mJAp0*x;PT1{E(AM4t7LpTnlJF1r5afPvIA?k2h*)|O zYg!DPFDVh|C4CqV(_k)nI)5^16ZsI+frJX7bQFjBcN7Pp9b+l(858t=TzQJK5BWlI zExEhCqk)Oyp0|qx#hu6UwJ1&~$x~cQZq3hC(ovjMN>bcmw&vX-s`_P0Bm@_y%Uy1aaR1h_6Q>udxXVp(H#H=Ym8hXirXZL+Z0pWN2rsJ7Z#pp;pq+0 zl&O6I({D@qH;_!nz$IeR%*)@23FJ3MAVaz3kLUO51#eK?z?)FMHjKz68cTNq)o(%5v25!o)`d z@8W@L!W|otY~mP;ElK5~Y607C@ka|_U)%oNGQVKJ%(0fgRg+nQ-|sJ<$@rkG^3|A+ z6@$k^`=RFkl%Pg7dDCJi1wMgu7E6J}16ei>)bz45w1LImRjrIfT;0v@X#XR|jf1(| z;~HSzhLvhi%P75at}92m4*MvaUDZX&!2X5Amha;(5g7gEy80KpU8^oM75x`cE4NDR zH|2iCzr@R%zS3hCk8XadZ0VklEY0Q~=6-2lKNtnEWXY3^tPCH+i{V+cZFsbt)3oZB zv^;k=eZAX(^Ba3Aa5PaljRwaye%-?BwpATG<$|kDu5b}jO2q7CDLTmM9j4m#4Ll9( zJ#JRh%E@YSZc53%eXh`!(y|W+)|C7(yI@_=YWU(>=>3Y?%ararrexIeq^zr82sDTV zQ9gc`?+akmRAeWL)q|X7J6K}`;rV=33y=6{yZx?c6%Cm;8-5%EFXj)&@7mH4)F|5T zNJ|XA_yvrvK|YC#a$%?#RxIBP+N8Yzw=Z4saB4Tx>wHZ-Wd4|~IEh*O&O1q5H=mVA zf-0G6WHD3FWiT&(FJzVwRSD*e^&jr&{D|~1-bMFW5-`c#*RnIa7JGBe$A5)(uvx|} zJ@kZEk&M!m?lo2=V0z7AAS;(SO%<>g%5#}Yg=vm0^A9f#OF_%r_z&K-JoVZR-RjJjeM-EZC=$(N)rwxaF=QW;k0#*Ym2!U9XK1+tEWPh zP!vAKIAdue>0*5j;C%JYoqXBfVXazFK-b$rBjz zlIbg_cq*JqPnMpS%XFxSBdKOx8cB(oJV~AYga>L5fa-7I1t1EV-RdQ9e6&K4?4_1> zk02>`FC$1^oB)z9KN&-^^)(=Q?AIQWy?|tZ)n(G+rfGJ^LT{An7~-3*j*oEkDZ+tF zh&P%icP&@k@D+(7ktE5B<4ICGcoY8Jj?m*l1gmnZKTqf&*ZdK#6ZClMZrq9<7p^dR zbTg}^PBQ7sq+nM^FUn;wxfix@a=Cko>fK_o^@U*Em+X zd!4Yu-IfNPI!nZFzPnB8T7{`(WWH6XWK=-vcCkJa#%{?UyyXiz&!9U9Z?@yTA7p{j=|m+HSmrGeC{srz+N zJF?#O;OqW@o9bM2XY+flyNf0-eAVCkNelb^y`QY`aewb8DSXJ^`^gFK_4j^K!Yl2b z9FE~cijVpI&fY7H>1TWLN69D5mzM;JkQ7#c95-JY@wcz>cQ(ea`@1oS4S)5vF_^m~ zDi~qzboU^}&aeD^gq{EN_Yrpf!{0~P`L4f@u;U?_9AW3vy!Qd-Y9Bw3^|{ZFCAwre zian-$Y_G3+PxVhWGA8%=mbDB6PxLg@JrYtcrHJHinx2EKj|o4$oI+3)I}aAv=7*U` zw4*8|-3XA-_L8#sAMG|+n%lMeC4Ul&+See zFIUQ=UeiCgRvlT^o!z^09}JN`2W~!hv+@=R$mU9k#`g^nOzb;2_3+m|#0~9Qj9&GR z7=7q#AG-D_>uMxB4+)QdH)4Ih@?5rab9lh!Kkl9@orIY&KA@z1{wVX6!hxf&*)hE| zwv-z};OPa?4#cp{ecTL332ZXHFrMnI%k185MaAig_FL8y%M2&4S81K`QtG)hJkq9v zwO#2S8|Wh`deM&0#j zF`4cTlD!LPgTbCezOlmdcl9%Mrjgd{%YYApD`&6w0An%FSD!XGmWdiRpCfwrH=?HcFLN+au0dL zE)z1-qVwts_Ll?=`zsNF4>n#v_3De+c~tR(2mK1h*7IA+L1jsMW6Q;U%?inL{#BCw zP&7+v7N2p<`US&8@jdb&(+n78nnubH26h3xA6}{UhP9pvAA|_ExQNzQX49^rla~xd z-P#u8s8Dz)@YvG@PRT{vrNBD+TlU4Stk=E8pbMek$fj0=Iv+1d%4<>Q@rY=*2-ny< zNe}innLSOHF7axb#P=kcF2gMJzbyC;TjXP&u6u&aC;y4c^mQW9W#Y;bzCw!zb_i@1v%tRsIMw~u?@wBn`L{Q^w@rQD)EdE)r3}MUUE`8b`J&nSKytl%wef zGxN~>cE>pUoyW|n1`ueFcyh>y&n|;JlJtl^5kAImB*>qmRG>e0v^@4OQbEM$5{(*L z7C6?3kN{o8Vl}UAuD?tuh2rhdtE0?E$iH1?Z#DB;qe3g z=mjy4Zh>}C5a4TfmiYISI}$Q*9-;rL(BkYKK{bsywMVhiO!`?>l)Plnt`zA+=xJJ; z;yF~8U?1KY?R2}L8+%RfNaKk}_aMB-)JMj8_``Y)4CO#adVi+Bk1V2p=6<{$hlKrk z8hLv!VhRnBr-}1o?U6ZXOQd~xLIpb=h>IT({& zTST_fU3>;)^F)^OV#y-#+q)S5g4Q+-39Dm?U>oC)`aif> z|4(0HLoV9?&+T2@zsYEt>rI2wwTQEnA;SnB~$&5NOif{b9sCiI>?Ef|Y zSoJAZJ@!|Gq{v^9NlS~%KNNoVVoGDOjpW^w3t(GwQx@4p!cBQsha!^hWVI{JbKuL# zN;c>_uPl%hUnRLxE^ChgJ0zbB(p5s2x!jwZXB6gaTAC6Dej4s%r9xk5Aply ziKq2rq3HYp;-Q(+N9)DMdw5#y?8nplF@ZNT0oUC zs&R58hpoDT+tNU1n{vewavqJ5oIIMXk%#9zn(;yyli4{cugR~G{P-P-0I~kq1QhE3 zn->W`wybrYsV5M)HMS4e*jsPJM8>*_3eBIbN5uKZjzhJ%iB%nq(dR3X%d=v${0=j5 zo5T0HHiHH+qB8>q*mvkR!+;jWSG{$>L||-DUv$DjQkoJalL7eZ3q|)`O4L~YVb z3urcK=ME*S-Cl<^73W(5VK*uE;75ruCLgZ4KzQm^Py;;Sf_DjfhwxO^DVIO~v-u7E zE|-8(qxJ6&?>nFO(0*w>TPUr@R-S-V*4Ib-zlxM}4K8QB++P2h*WpU5rQ|JSR4f*n zbE{{r00@bNciDv#3m_vE{$Y!RB`ZHPTW!s<^Qe0Fr2t#^UhAX8vS%op>fgr~Xsfm< z(9$16Ljv$T6~2{BY^qhPMDzfj+S$k2xy%S)9Zz#4jyc?5l$DjKRtGR!M(X;;kv)`r zvEIU?-?TP1DrwgRKEt=2rB+Fhn`CS9LS5$jGB3N9wpH)r5MuB+%+#GlN?(wkz?8G~Rh8&AGdd6~>gWV5noqOq?Ne-%qS} z0kVYH1`Rk@-}`#4E+MwSe^`)kuXXs3*#I2-rW6=aOt^(fu~ayvDpagQwb8B;W$KZE z#%WrV6}o+1S|>_T!5wWKhWZHT5zDE#6*WX2z`%Y~_64G63+4^k0sxbqOYVz(gZpDUMS2Mt~L8v(6#!f84NSj}9j_K-fBhX;e}2 zn%!P);fE8XqE^EnSzTJRYNM7>(8tX6Uzcy}N|_mce7Z!abW83_;&#?s&Q>Tx)s(X-PgxVO@)l8e{XN#dl!cV%FBJ>x zBCQg;!WI#5`k(r^fm?I(Lc_Tf_vV?xNBQ*zYv&+qXEyNy7PJoL?epV6IHlp6JXf zsXdsl*H;L?9a~#b)Bq)4z`t1U!q<3fplG}R`d<_oSb6(7-V5jsyJ*ok$kFQgVx9qF z{l99d_@6Vv%q+_v^Cx|qKPT~gN_lGOzsp3luVLpT_6^L1#0pF$(VSmJ#ZKe0QrN*Z zYL#R$l8g)@<2e~b@ezadcP0CN;cP+JDo#K$*=YN<-Ck5JBMvpn;JR&aX5@29_jD0d zWaPKI6vO35hFc`y6GnbZuDSUNCw!Z`iOXf(c17pQAJJlI2c|22L~|y7I-!VSHYQdI zVz472Cp(;+yv^j~3tmoIfeQbuDg6R+5(*jS9326yEB&Sh>>LCDC2d)zI$Mf6%)sn& z_xgGO$947@>1BQ+e|z(EM4?zL}mPv`SRjY7iEtv!XHsnRHMP5QyMpyMOwYqGDb(@ zlHYJ8g9ZUEsyxW(--dy9%L?wLLG6nb50E80tW>B6>~JyVL5+5L3QWjM7lEGd<>i!Q zJT4A2#f#G6o2+;IkwE}8BY0Sc{4<3x07@1X83F)f5vJ1F$-=e!C`)W7L-kTW_2}Px z{H$GXm-r0rdu%#b4lA6y%Bw`oEkm$dYIolU9dV%WxI>?&mNSZ?+kZkv8)8gmJX>M9f%H5xW z#jV+NbC!VBy6o?R`gOtb=Im55oGp8`V#8)KILa#Sd5|Bn?zZs5)`>QLs=^=Byb1qh zX92`Upv2A_t(z6y&?n$Ngqzyywl)!05P z#;fyiZ-#DLH&G%Gduy(~C0O1QEM}GK&RpYzbepY_?@67Y=8njp6u|f{mLnL>pa~GP zrMh&I$J6fM$?dBI&C3aW81@>N1Jan$#{J(dK?q$c+A_*Z947rCvs5=J-I=N<+V9JC z3w#s5qhT#Oj<2^H^{BB7+Hc{v?pMCX-uX@sr&IrSm7#X|HAs&bwezDJwkFtN!?r;^ zeS5a%*6Hht6O#|P<~w1sCQ=e&FkjQSIH)EuZBIKM5u37dR$;0!LOjdAh2Qr;;8*1ubve7AdJ>$J~&Iqnbf7U;3u z;04n(JrF*yYj4Kxd1ReKzaRt@82b-t*NrOmW*1<RqL?ND zi7Apl?M%mE7M`EFtNXtgll&X&Z#(sck3TlmObcqK2AlxQ`DBpUh1mWr*4j|!!WXiO z!|d|DY<+LGwkK2bt4KH8@`R*SM_aU2ML`eg2DhE@VMqpPfy}luDYT0=Sl*{iHQMss zlZ9bxTQcc;a$hiES>MdzBp8H2{YDG!EMC{N_#X5DH;CzGer!86VxTHWuj6M5GIgrY z2kdC7`4t~c6uUv>Ex!?5txg9?irUkEWLQ1~1Mol(f3 z4NOD~AI^1No@hsaHh^nKK(;<~n@o@=5gE&)5p?xs49IJL12nQn8Xn=v4p5 ztk~cY&#D!|frCdpVK3j#^Zr@>C3Yg^xB9LJ?Cw#2_q+JcXHE_t@lhbHWASP5h>r>8 zm4Pq1M9+`zf5P3aYKcEDk;^PT7fy&z;NujvbNvGsk>J5<|3JZSNGzAR%ReBK%su$E ze?Z=gdr(CznMMbeS^4+)yNm4Z)Bf%>yZgMq!-JybFZjFpc6YPCJKXNp`8$}2lK1*M zcMjZd{9U=d8*+CEEyHq?HUwyk#=ZXc&HndN|EqVi`5R+@G!DW|UZ1RLfikYVfIf^Q zu038?&oB$u3PMK?({$Csv${pPdQewq>*^=ES~zgNu0;iPvj&#vTGL;5fIbQ~v)P%;d}Jb+!*8#X`0u6T)WF5od?x)^zW0SBB|XIA#C7L`YWmbx z#b59{_kfD)-)@gU5kq8wK4Cg@T-s;VqZE!|$wvWAK7P>kNM)2{ua8Z&R?D_TJ~2J< z`a?dVmCL+Byi|Sx`F_106|O@@?oE$D{D$6sjRDm1tYT%eT@z_Ohx7$}@zq!Go7*pF zUZ&r}X-M8Ug%r{>F&?hAR{InoL0MmtBXa11o+>H9YQD%aE7eOWG!GlNb9c|G;}wR4 zHfJfH^8`w0T$m)M+hr(MNG0cwDLLI<+hO1zv`gS^aPUgwM4y$AEfhX;g2p_Er1L=- z%L)*_Rt!qIh8oK$g`e=S1!b)+2yLz5r8MCY)}zw>|H^dq%f?R(R8|=SE+hD6U+K_S zG`O!k#obparpW!2Tix@i`?~vSUG9GR8uvTH-yg(lm7jT{`<;bf|OcVB%vzZk+{M-4Ms)5)?{j^o!NPgcPQx78YtKAb`sbNOsT{2{90_H|>W$ib*b zUfU|tpN?0-PPkD7x+;t4a@Vq*-F&=>sh}2d%j!})v7j}$d(Oo?JKXO+{H7aF*<1%` zIp(J!Nxj1<H_yW4bN2NrvK0*WVw5Okl2yuGxu=6vm|M`pG}NYzjN7h zrQhlg@gA=_TeC6Ts9~@{urvpWmxMpywsEjjP-C*W_1BPnhhh#wEU^8tr2*^5$5v&r z-!_dhej6VJy1}UK#jyHbS(nCrqMgtgeWzZpF`{}b^cWJ_aP8o!+ttin;8=f}{s#B@U!#SXTz=EeCV zr-*~J)virZvvrg2`2~&C1?|sTC=7Y2U$N?&uw`Obsk4`z zJ)}><8YeHL3eL7r_g<@QrUtD38;j?TwKudN6rYE}YCSFs)^=YmbNp#^Ez#T&UIsv6 z8|-R&r6afITD^0pCoI*aKRtn|PjR;P=x8{_dhYd#<}X&26AQk79&L#1!!=U_}==bRHA zO`;eoIT^4|rCjy!{nnk=&~-;KD+1ygotj1X#D&*7a?N+EBiRTxMsFjS5A#OG7zG^O zZusuV!_|wtOThKG!F3YWAzDs{wMTHZj)UuK)Ql~M7_MhHBWXL~x*8E2!L`cpWr;jp zbS~$WK|W-cSO?7F^BUg-v-mz*Vmfk}{SYJqxuzvN&RXoHZg$1Pk}oUFTc_0$dt<>o z;Wm7aP#_zGUfz28#J&9IzgRC5Px>#8Q9~vN&bCV%&r-Xz@qF4Y&7AqNU3RoJ2sZr} zVd83_iPk@p_8ZhrUWl_l`obj@N#w&#gzJX-|42KGB$w%hEJe5@JkU8?tCS%UK1!dC z_n9HS6|X{0EQuFnyoKL3umZz)YUy^1*5tb^Exj# zqqGHOc_!rzA_n~0C^108&_+?>l?d@f}eTY4lUBiM|+v$Uv{spCbk zdeKt;eLuE@f?k|35ME82_WlaJ$IaPK@<1s~r$=uta7~8yVGvr;W$png#?0q%6(zMM zo!@^oCH5bIA9Xhh21~<$28zMoI5;~IKF;S?HMX2)a@n0=rNtcl#OOFH?CFvGQYx_6 zDOEO8^Q@oH@3u19qx+~x`1hg;`3^oWAj+M|+ts9xAi`IQd=#&No~I`O+~N54T}S&4 zp>|VYW8&N5muP|8rIxYq$j~J`b$Sz)#qsDu(uQ-j&v?SshvsAyNgY5S zoTU%%4bpZ7Z7ukoXq3@`PrFAB4vkYp zqr+8v5Y1&@k*?M|FcX30olfNka_p8&1)ivmL_!pn3#Zy__ZGOBE_ouJUyBC>=_wNh z1B?hs6<|sf((@Kb7gNKfZ1?Wl0KdPVo@8aX83X4oa?oWs?;MMB^B5F3ci&1xb@=n4 z{DRGTT61d#f2XfpErW~S9)6TzyH63TmnKVAxf1c>F zM@fX8*zT0`NH>|fo8+KqtgnrZG&GA0_i#{}H!56qtaICw^H2O}m(H_;d=`c3@|46E zKH~FG2+W+Oghx&RTDY%H0pfTu*as2LkyG!+N%iWsOqa={Tp#>8iaXtBb2T5K>W%hA z7-P9wMRg;Ars0dfI=ml;o`O^-XVL=$rCZVi#9MR#QD(txERCg>tgYE%pe$-FL2iu7<1G;3P9|jy`y4?g;4Pi&1m5*TBvEXy?El0KcVr4y~zzu@HEi zW71&+%=vgxODZ3mLk+PrjPP!Z6HU}PUY9USnxQ@$m|3r_wjDjW zUbn0I;9ExsQZ*jou5iDt^&^}z zz!_jQSO0)0L1C(Nvpy0&r6b+ zkYVxunRW=vz0mv_G^l35p*iGP<$hd;zcAqfdAA;+a6d;li5^QJW!y;vo8{~KmL9Qg za)nOSeFDp8=@6>$9nhNT2P>pQP$ z&aG)vpPwktt+CEOk?8!-Ux_2b>c#oQ$o&4E!u>XtQAWEz>e+|hqREl? z38g|RbE}^@2{5$%;!(SB+b@K1Iqa7Li3BY{3crT@$R%E5$|{px;La{R0)ExRig}2` zAaO{)pXsNHoIA%w{=V8M&K&EA>sUOHM0A~)YVNiz>&&|G-gWNGC?FYIu9-FBm{=>W zyB^RHI-A2O6wS<=1&bjIxjM{uPBt8p;IWwHwFba`WcL9wM0)%IvMmhBukZD=Rci^! zG9+~^;iODkUCWQxdXBD3b^Siqq9kt|0jN9~d@2H9NcIr`wG!@olQ0avNY<$0BC=8W zhK-ga+@Y9|734z#$7SS&y}UG7-c@nWXt22ZKSZCVLD?ZS1=pI8W$h+yQu^3**4eWk zV`+L*_G44CpP!Pwk|f=Z+}#HWlFwIWKUr?4`T&B?Ija&Vso6G%QoI9o38XG#bZQ?o zHZ45NfbtvrwCaLue~j9c7PZkOwde8RdK7l?{AKr+g7k*y_}; zggzp>Ec_3mm!3X|Z$`vAlp~7c>Hf-R)q)Ss)!zqG2v6@hToP|sSX7`51C4x2#W>@H znFhUc{#Cr*{a8&r|JBhyA6Qw;Dd>2Ltq zix{?RNo5?}_2!zpSrah2>#&Q&M$~^|1%tY7`4St=TInN#u3&}x8p5Eni3j!sGcGeT z4^1Ul;z${p-7FYJmRBCGD}0NWkW^9xuE7c6DlxcF0#YAjw?xh%;yxa}!6Ur-P7d~9 zKWvYBgUmW5TM=XV=`5AuLBl7wP)LLgdqK0ko@FZEtg7!>F?yOsIZ|`i0t$tgYGNq5beZ%bmfe8byV%H&oXT0Y zMSyeNS*13MZQ%XZ)Ip#sxvpDBM)`=)=UHaU7c}xXMVeL21FqR3Z9| zbA2L{8DwUm6g5#SMKe*S$~;d@ROJUW7pftefA0Nu7jJ=}x>aD}f975}Dq3uPT8IHE z0wWO7(#?IkNpdz7B>t|x|p3E9G@LU7qv^1q_js1qbA6~{%?WzfqJabAoI${fY_wZ ze!1qS7eP(lLBXX%PLykk!rnu99(&D@B&WHzgLG-OJt<(4>h~1#{`8<-wp+qP-9Jb| zDPkPnXpb$VeX%Z4X87_>o>r{7(CE$Hp2yqqw&jVkE&X}Ljf3&`6Te*GuP4|u zX_UpmusZe-n+I_q(-AlC6$mIEyBb({5lRBfnS9!F@@O{ zq00c4NUQbzU-)P03!ZFVQz(!bl_Fgue6_cgKO?<8eJ%z0z{u0zN&X<<31qMI(mBJ-+ z499&&0IgDyt$SwU{8r~>ucHj$rxV+li#|J(487Cv+cz^qSd8xO z{q8W*h$^GvyEwp>@ca*-)HP(iG(px&wiFDT9TW#|$u^x;O|)K!N_?YKC4}j2G-V>~ zuOSCn_UTf#DDf8*694%75Pu#r!m<-o;fYc#jLab##o5ycqkc3Ctw#Cx|J3;AwbKh| z`M9QG#Md-UqjB0!+A59Vj$?d-GhK%FGroZx9K)wV#2<$7&Eq`_K#mySZ0}5MMVGQa z@sa@kxW+g4oCY2t1Bu{%7+)Nd5HPlvNB@cfre7~VKVUE4bCc#Q^l~3KguOgVrd4jS zq>6g^Z|~E~3z3oSW0kd6GXX=LbBZ0s|TTnu_f z>A&ZERR0~o!f8|cyll^(rlJj9gPzy$DF!{;IYSO)(33R=J)6u<`F7R~N))Z6xFN+( z;LnrgMA1yy?zsNtlHGAM=RwX@UdbVYZuAO8Xo3@>$x&QW{h!-tZJP@1HO}b%oX?qS-rJb14>H1+cnUh;6Ip=8BTT?6zydv{I-lwdmWzFHONLmUKVK_|JcJGxi z(dt-xBh-3oWx0-p`0bwWV*q=X8ecz^^m&WDzI3r7`Y%DTW{-_K8(8CbjJT}5le1pa z+7ypi?S$7u%hDx11yfuei^YzSvKg?O8*Tg8WWD30>2bVK0rK*^#|b%ry)D>OuDMuO zC@&S-$cf*xcG@|G6=Dj`3lEtuVK1zTP?GSpyMl)XDtiK1E@X;i%kIwX4`&!=-XMTy zXW^n7$zFNgvluJ`XT79!*3S%>^&Xf+B5S=bVd$&Ep_Ja3@mh?&@BWLkJL;UbX|-dI z^unHkUVu&u-Bfx(UNr83T5+)VL18MRzFq;nRCEz&kA*9qJcwogV7u!8TYXc%VRrj| zQg89*6b`eW;Q+zIgS$F!+g$Aov%2X3z1qUIFG=HIowfI9l*{tQVedh&yX+whmzTni za(>-Imb$|JsLKAe^Ztew5DjdPJ=xvgnR>nR`q$igIeKr+&Ylg(pY_9pfkm+1;Mm!D zTf(I>K+sF&L{N!s1W^mRP&$4zMwA-dyZ6|Rvq6M`(wm4g4?iaZT{mCczE;r&uZp5y z@dBCvBgt!{y|XiWFNvVw6>7YTgsah|i~^brYX>l}OKi_eqF!r2;^FgILes7wps8Bu?^ zo>WTO8A4@W?{wiLF1q<{%rB5F=EcIJDEwvz!sI9lzr5Qs=M83p_1h*OQ^X@u|L9rs zDPlvD9Ep1PdVhol-&V63zUsXl9%Q9-5Ubbe{IX&hVzl-tY6=VDWZd)n-|JG0eE<(& z*mK+rz%Q8n&FgAE zWCdh|;MXs{f}gy^gCZl{|}o~(#`_s zU?lTdUp#KO9TI>O7`CXkf=NMuoO*gU6*^8vIK_*I@|E~95(%42A|bwuAWSXbCV75R z<`{5^6{S2Dw(m_>diSHyf{X^t1UUjylH_OAwkkJU5x^RWpf z+gt}k@>Q|v{2GKnpz?)*qc`vnx~;m3<%vOR;qRm1JnY7O>k;P}wA>GE+cHNRRzRrB zuO;aq~%Lz>gCSsUn=TLuJW;G@!cI-+Ckb-I2n1jz4NwP*>_s`IT;6?1@i6_ z*HYf?5qYPe?5(SLNtn0rt_+uLdctg8H}7R3W{0~K@rq|FV&_n{B1mX;C5}P6aSZwO zfBf^Nm-u!yPM0et{{!`2JG}x+_zTO&-1Hn8N+O0`sICuKV$$qQPT>5xO=uPVbytBl z{4m=N{8$x!nhkybI1kL`ZNep?F{rrvGi|Ug;V*PT24O^0f-lE)%oAa_i_EL*nqGUz z?6Z>n#?skuEX*E<{n&cxtrW?K-x!-Px(xj-Z!x3Btl0HV$@klmL8YimseH$ZO8mxg z$Cq>^e}jh(1Y6!Yz$t2mzbc!$xAPIHXa&alGqUu?2B5z6Kf0qPgAk08`|)QSsw{VS zJ8B+~Eup>t$0_`QK@@(MDSQK}(7vQg3SVEk@bxGTg?H(~Hxw3rmlO_h!EuD$NSW$> zi^Z*Gdoe9qi{Av}R?#`+-FZEGkr}=|rN0Vzy$8pUWb_FgOV+kuCbzEUZSVZar-^#Q z=+2)A_unw0eK>adWMOkQ?g5xW*KVim+Cx!>G8}u+%?^J5RTzZ0GC*#p*oE{;DGWW_4lf8Fay;0-y9X1RP zD8IYqr|1crd2|HnC}$$XVf)l1fD*1Bj{HFdr6yGqwO2|7;wJEWM=Ia;?9^p1jrRSz zW4w77a+6G2n`~K|@B--bdZ>vUfOd?%oX*rQQ9nJQ%61Oe2fx>eCS%141i@?cJ;86N?UiAW>`M?I!lKVTC zytsDWxB12g_ddVvo#FcJeS*=QTyYGLWzBM(xbd#7YfvSzINNDveTW&47~N?W;Tt<2 zewkH*y7sWt4O5}>s^OlbOoh5rZ$7@DQ^lZr5;&VXy`y9+BFDE)ausbaf~~iT9+n4L zV}4vcto`YZ#V=NN%-S+~B=&3XO$I$Zl5N{E8t;huwsiP#TZ8Mv)YkL6$K07a|9{8a zxn*t5J!|LPogA^Q=I*sy*3P?U9lp1$`8j_ZgHlGCx-bW)Y)1&`mQR!aWpyDk2yX*G z2Kn(8OvgnXS3$IH81rLn_{{6##`BW(Jk(FEMW=t!-*MH(_UqSlKCxgl+UbT9JFf3) zzX4AhtZ%=8PwnC$zGL26-q)Osjifd0!|{R$g}}~Us@t}M((=KjP3gkZQh4Weoa0gc z9jgd{gvZbW2OTP&jN!{A1L3SLNDoYDN&Y-hHo*-PR!=?a#Dd_gZE9 z;%7(i{o=qmhD?t9>*l!S&5v}ByMUROZ+S=OUvKh%eeBa6H}M1cFGl{?JquAu4c1=B z79RZ47Pc9c3QE_Tt^_^>EGDrvWNa;9@pZHQa$BH^XQ#jKc#J99Me>^{YhBGRO33gXjz)18>6y0^ zTWIT+JSV^4x})RVj_dp6p{ZPF+qZDqfxRHaKxL|cMkcn=xYY!0CC72tz4udOB)w|8 zPG`lRZRWueeim|T=Qkt^tT4E~xf1CyKS@G;h?2zHLb5si<)4!Ib+=Pb*C!5JJF~a2 zj$DIFWxea0F{rFb9mrdNDkf(zGEp8Xh78QlruHariSmfuMIle(Gwn$bPB^H+>DXU?A%0V|}~*ssIbN-ZELf@6k`Dz~+6AdGY33KdiDiAeNGHbh zs(NM9u{iPa_ene+iBTGNDxkm|z)l6|AWeJcf^W#z=lmBixZ!0Oj$8=wKdyZ?Chnfj zuC-Db*pAp*(Zogw`|qVvD@qoReBkcC8E@#%_ql(B^AN}iNN|0rHP`d%+Z=@urclo@ z3f;R9yG&4-8w5raEYFPzaG3;^yI9a(U8*&S6wIpSSarHiB8-kjvYrBs zK7oh6%1@_+fvDO2F#?_`_^Bp{_|FR)iOs@nQvhZ{*#&{}hnqitW3qYsxY>cP1Nuvv zN;W_cR(1w4v@){C;2j}h*u?Pi$R4L#U=Pg;T9w3tNzZLUn_)I~Mb9MArey**;`Ym6 z7;}>z0z%v}yV;NoZqvpuv@_q1^+em2srVT`KCH7!vVsO;J=26sw#u&^V=;i^ z>81|+5C!fkVErpw8{1_MVmn$?_B*y?58}bS$D0nowG`9_`*VFhl!G6#9LIopWI$?r zJqIzv8b-iQdQa}Fn5*R}=z{(70{c3cnpbwYa+Q&S_nt%s{{oUJJ!ULS1-#iTs?wy{Wz?#k^mS1_m zt;-&{bb{`*S!%(Xszyi$e*A&zE9>jXzh90-rt(W5Z3m9Lfvp9-xC3@KMhk|V?0FRW z1o>6$qo|J0+jsu<1b7O@u4>G!(?ku#t;)IVr+Q?F`x2-ns+rg7SKC&xxO0vx*DzMk zhv(UyFfDF*W!Su8mdBe-vb)8%`LSSuf%8q8G52B~$5*@g;`2xh~r(sD2 z8riF29LQdW5mz6}_NcA6BJBKra)JKmOrYkz7P^%BF}4$U=rUQKmL_>Qgk0adPqM{f z6`5?Jn3ymQp{lpr#=!{qAb0wKhBe#%rjFV=Y+7R*&q4i;Ma6`9F!>Qd9idSdYE<5` z1(M?L^dO(n#6$ZK1m3#ZxtOVtql0#t#7z*YaaCeh$0I+OiWb1qY4`d6fTGntuRA#c zqYZuKy@0?Ir|7U zKd8N~t!JuM#bJ*taNpi2VjRrl1oK^VAjgDDNY6rax2&LC+~10+8yS+nVF_lO%Cf$X zGR-XWSwYZ?l|H9Hjf$pe+p-GxrEl~Wf2X84z#SXxufS4X_&X_~Ab(C<5306j?__Wt zwO@ID8fV~g2<86{hYZ4DR!%IyZMiBbXBNuAv|#hALVj|YLfb=EIQpS*2sS79`suqA zczC_K0{oFy5c_M`TsyJjstNK2@i@HlgPXVQ*tA_Tx}EQH;^A2% zs6bUaeuxDR9^;i}T61m^r5leQcblgQdVX=0tXR0F*v^BnUOqp^s(|Bg(`66LD>MR( zs$l{kfq5qoyo)nI3EVveh}`An``j`iGD{BH-X_Vik8zkRV6pNJGC-~8^%*L7vWXRi z>bU~iix!teW(Jt95B5%x47PH&1)1Y79+N~X0>EREIs|V>LRujN*N>o60KmO1OaK7z z&LmWF0CoiMN(2Cih$*`GEJvwe?_2KgUgVnY`R%ZEjlhBsmo!rn*|=0mc~s>IX#_ zyz>h;$NjPa>{7Z%zNrt;7-MTk^@%tXqw)N9T_?;o;Jh7eTdm=0n&F=J5&HdJFXqe& zaGuPs9EfaU8zvy)$dV(hJ^zFrW_g8uyNvSO^dr{ZJ*&SUT##JJ^H1I5cw&9|Bs7?P z@ji{@Y%RX7ET;NKOzfS6u_`s<&j5_V2f7Mf4BtKO#$PMIVAT=DC~Uo8F=;$JC#z4#&V zo5gPtKPG-s{8i##Cw^M|HR7)of4%r!;%^ZDF7fXbKO_GA;y)n%M)9-aZxa7;@i&W~ z6Mw7t+r{4@ez*8L#os0VZt?Tt?-9R8{C(p0iN9a`1LD6cz6!EsD#RZl{%G+l#UCgB z1o2N4-!J}T@u!M^hWJ(DpCkTx;$J9!wfM8dpCkTU@$1B2EdCYZUnzdQ_#yF|#cvTm zCVmn=?iyBT(&2YCb0GBciMVD6H`SXbbSWVi%pPpMn$QkHX+qfLJ=mNf^f;j{gdQTa zm(cx$xU%iNo6u>5x(M;D*xs)YN)ft_5O1*d;*#XSWp~$J)up6QiL8P)IlgiC`0H@LJt#KPiQ-#FBAG5 zp;d(bN~o34zX^p1jl(3-`*}hiBUDFd2BF!6781IUP(7iu2rVZxmC$vBP9k(0p>c$= zghmnCMo1CbL+J0=>}viSp?!qPh5`CLp)rJZ5t>5i1wyk3Z6y>W^xuTm5XutD5c)2m z?S$?nw3pEBgvy}c^sXiJAwoA0`Xr$wp+$tQCe%u(o=`iX%Lsjs&|E@W3C$q%CZY2P z9S!}kcN!r+de}Re&?SUUAQU82N$46v!wIz$dKYrL`EEjQ0aEJf;ELdxEy32MXV$i~ zgqH?erpK42mWNxDHLDuKv1BCLS^{TLGMEgz2(!XX!Bk7q-xzI8hF2y1!IpS97+UR* zv__JVU`yoMa7Y#7v__K!@uBdFNMm?zB$4zlPr+k+L)hP%YH3kAu77wem~8GJ+8k^R zwS@bJH>8@H!tws$u~bq`t*t$6t~5n!Bzk6TYjTDle;P$68sm{zGFl>GA{mdgF72OT zFcu59h9DHC>MW&o7YXvGO(~urr=(yq*gvmGVpb#`ZUlv=eO`qe6tqmxACefqt{2{U z4Ynpw!FV{-Kbyk(&5gD$wZ%%MQRmr_mhdd6vLGI9a@u7I4RB^K(h^CWnMyRAqnRbr z0Qk(gk%lFS1{51vx-=ZGi?*~hg{Fr>=xS5#ewlt6`4ylq3@?waK!O3wxGWq`2nT{1 zB#uQRV6eFQ9H=wAR%e2WzWtGeaFCY+-={9Kg!$BkME|T|Hz#MNBX633(pejvIl_B3 z>45dp~3~7!gV=XDjl5ipsT#9DWX+n`i zQ8FE#2vV|M8@8Dxqf!6zVC!m1VDw@t9;D#rl^oR~qcyNJoD3`vt_sA0jmrQE*I>+~ zT0$~T;$aNT@Crzk#$*J4bUyx&D-eqEi6o+hc}X3cLIKF_NK>Ry2w?d#Vq1eP{zPOc z{=0R(>l1{VRhBeuobh{$D3LrOPi6Q>2gq&X#FVX!R4`*a1xoZIMPTeJjH72i}N+9(G9I2 z9A2WaIUGu%k^IqCN$wOx5>V;JW^b;jj42E4Wctf#w?p;A88$7dwt8g{zjs)=?>zm| zFNudo3K)@jT^o)^{S6Q}2|t)E6>mkYBCY<$WW2>`zl+q|+8Ik0%?Qk@nX%+zrw-v& zk)*<;+G5zs-x6+0`V-ORwi^@vC}v!+T2oZ548~j0+IoCJLNuh7s#GicvDLK61^y|a zX;Z4s4f&@e{9l-oxXN#fU9@E8%$h}u>}Sowg$ou2Y8MoJ&%bQ?+}c@zy6Fq2&nt|Y zULyJY1*pwswKHo9QRgpM9GJae$^2P`!KnRz6oxFWomaD9$>PGm1((${^_Ty zMX5#(DOKAF_36xLDv3XSk!c880i7@8j|Jnw$&C1tf*fb8|4O-7b;96{GxumW>Y3&wR_Bo;O_E465KA{kzefexu5V!XHXO!hkptW2d2(o=Pl-A`|zPM(s6`ip8RF=7GVQYK>4PP_bqJhckw2 z3=#!HdAV8u;Se{pEYaL*z8V@ZX9nYmaKO$`Nn#t;?$PH*@eeipDRSa_t zN^;}I^k1Rou(S_ZzY@oFn)B$dD66mTbDw|o)QuqCIC5x9%&_+)Jr4;X>M9) zda_kW_@_=m=jq}lOOt1z*l^N0MVW-4p+uRcKol+XuCy|cbDy5qI0<8Z#I$K!tyH;Y z+VQW9pz3;_Muu)0zv$t5-k>P*meaog&}!tO?#4vI=}C~YJf>UU;xxs>;XpqWx9n++ zDjc)vR!Y}}Y+9XvLp0&7ALix2S%Inm)@6alU`*ylyFLT2M=?`l5@yGO6)@MKY$h2P z74=z(g+~iU|Cy+5G8kzM#{(GeND^$oQUSx!rPtCX^(rC_pU~rjEsZG*gK&T&l;aZ? zRH7Mhw8?CQYSwri5Hl4ZakUfEElfQ-Fo);G9&c z1}bQ+A*0}EvZ#?zS1RI2+qUFyjQFHOjGg<@JMn0X+bF44EG45$TO&|~p!WomDQFDQ zP?+_Bj>Q@T8d5FG+!RW+MvWi>ZAK|jNl8N|w-pxG)ZKnpgA(Dyc0Je-I{ zTSJu1B08|>jmJ~1D%QL@0iC7=YCq=>a*xbpSlx4oL3&ebF_Ipc$i$Yg>WtejkO)br zxBd#r`mu=oji>&eBXtqfL?N$q5E;U;<7; z6HTz+Y*LwQ4L_P?RZ&6HRP6%ja*DCTcyjeT=BuLdrPDOWPSYLx zakCmiW3eyv7ziYrDGacPiL|OlfCcL&8CFmUIrF0c!)uGFTeL#9NSoNT4%)+6Z+X)} zFN8j0)6R~>6G=^=p~J6{H60?ER%;Q}7$)AWsslZFHGgpiGy7uWDi!ZNP#U^rZ0#W!X1$y<>`qO_%aSfa&Y|>NB2`$ za$+#zL^qT-b;LwPF5n&};v=R|f}q=Jn_y&lz)2|chVz9I(0QNsCkzF8D45}dd_o?M z2aXvk&T!L`g$?B7D0Dhs(%gDU0imFKxei-2wXLq>tMXXI|)jJl+!lXpBp`jV9U8u*I0L($xq@c~14 zGD+_j3S;SD=x!tf8YbCB?|$)ABpF@06hf^5J4Ft!o2of&;Ls?FZUmc($cy?ml0eTi zBPkLkhnigj&d1Jfo=tBv3}_V^Z`a!WKM{%-Xi7cGXK{Ri5?CDRs+s-rB^zRij*SSH z56xIH%L}JQWHT)XxQ`(m4$&h0g)?xTQm{*rp{X5Zw#KF^p;sD6<@4 zm?$yKqY0C2M5m2w9f+f5m6|0YR^bF&oyY|E=lxrT?=;NM&%s~1Ri7oMhH)OOMk8gV zq?X{4UK%I*RgFG%9$bBcPG1ty1TL=jsV~Ac!^PpQgZm0x7u?-&_rpB|_c+|sa690B z4VQ=eGu(c-_uxiM_o-vxPJ}xZt_tn~xLI)X;jVydfNOzU0hfkb2e$$4KDY)T z`r%~2a5=dA$3Pc;=Q;_cPr9!%VOoRvP+Mt4lJu(FfRy84j81yv0W&3$?DQ;F6=tCIuHoVoIMkECdnW+ z=*1j&W=k-Uz?oS%9>!_0N@s`V%13u0mzlGt>$CA_+-8zaXGH3S+Wtw^TQo88Qmx@Okc>Oi#N>c&7kyc8Cx;rL=Xpt~GK6EktTjnm&~ zTy?2y=Ac&&xq(i^xq?`WoPtPNn?MaCAx6{{M9jxYH$xXo=zNd4A-h~})HD8ylJT>! zUmB0DCc>2^5iSlVO&94i9AefB=7NT+Q7N-A&ft&)FO=%XSJz;3ZM80b=4^YyNwj7` zGbaVGkd{M5?3{T?Ctiye4`f(8lM-y8u8DbZECM5v;P08UUH;L8%uC5x4-r-sAuI|f zg@qV*oy4I?vKUTi5tQ~xm_AE#8+DC0xFEsWq8KOh^*X}SZe2Enwj(TTg9*@M22JEP z{apo7C~;;A7VfarK(c!a;Mx^+OJHHK>o z$tH`p(*!%BgQplQYZoIh6eIlD%@6J_V_O-YdHJL@j#w6R&ziw|OmHGRdCC0RE6%E_ zlB)GExT&!<*-{X^Pl7cyOx>ryQ%NaezkI8C;dL3zN-6fys5Lj&? zb^||oSiz6GC8>@lI1`}XlWm1qfvV+DA93}4aYj-&ky5F2|h9+f^{ zKn+tzz%ZT{z0?(-!`&}bHh=*i5wkzJ;1e+BV=A>W9*n8<=v1o!+eU+G_0mx=Cc@uu z9&OQnd4ejlm&VkxMZ6lOV&y9R5mm1GKBCkSbLFN`K)vF-OyB1Ts0~Nyqg>TH2I3Yr zESQ(gJ*$A)ag1{yt$s7Err)iNfZFt-#pcK@pw=C)j)7!QH!;J_$AzE%5?H1cZ-CFaP{*9*GXkFE9A=NWd(_Gwi>Yb6) zj!aSN_eYki{7FicVF=w?0lkVxfe!f_@qlUuPlK1!y8h7$UPqY^mQ%&!&_w!Ozs??&W5_kWw5J)QvBQzpcB7KTHd1GIwF=@9Gx5f#JTFVk@|qwX^wA= zQsulh^VJbBq;W}meguxr=g>@JHwf$g6bi|oheDigd1It1vwi%`2v5Ypk!Yz4h<_ox z^k?B^E`pb^?ngEIW&<-Z(=i`b|22|_&1P8L z0*tOX%y16SP|wBDnX#1mpOH@c{TN)Dt!25NgV%@Kfo0PZjgg3Yd!+hL#P!WZaOP5Y zU5k7(R%^}l7P9{mCb}G6?g~Oz!OJx8vk6}JGI;qIX;aURx*TJhynGPpy04MI-#CG5 zKw}0*CS_3T7c5h6j|#_)RC$Nx$C*)rStj9SQt`O;d>R^n#!p6G}(Oq9s6)Ksp2pz zc(#l-thxJWmoI)$Le{GL98s$dOsG(4UR@to6DGTIo$oXf-ylhnNUnMVYMuPQ?7 zUt{M5TT{4$f(vC>Yklh&W1p%XI0ma`Ts=1;|Dj`4*=4XuT5QOQpH41T%? z#fYDIOknXd_+4^@i{JG);V%AoYDI(k%P}h#M`4g;TJ7ayBkB*wg8kw_b>}!W+yrks z*6jglm*(pgpyGdi~ht)1iyv_9j=KYsRq~qAO9!b$BEp`vl486F<9I zVDYn0vY88VQ|}!scXYattPjyh{8LFFe)cKCT{)l65c?gVrMECJx5Wp+_w+cIcy;%2 zz}+gTf9CT}7!Mw&$^z<54{ktZ5!RYo4#fboo0vb}avbIy`>_Fe_2Cy;LCnPpUw-McWU+)l4pO%z&`PFdj#Q+Y#H!@y6bpKsArC+e!0TP zwkMCD-4a}yQ2#jIlCRoMSgdY60gdt}Bpl|V{;xs(w~N{i)bF0aHApIU*a& zs~1j*sh>^4S|dP}(VF1>bh7)Uwoc~K!*h@6n^Ou6UB7Xv8X3|?{O_I!!_)vqCXK|` zpR^p8!qt5zHOeYX-Q!-OQo%i> zn@=@MAobN#DIjk8h`PhCDq5)V|L`M0qw(KA7~lS%!q%Warkbki&|88TU3$50z5W1PJw-Fc9HR{T7CRpz}MpF4@Bz21;#PXb9d zmLW~94c3e0O`t+1xC1AN?(f=0s~=4Sd)w$O6EVJTLW(k||2FXMlRe${8_<;b3UlsT zSLQP)0h(h5RzyPBVhX7zPX?*Cu-F#0?__PW>(uG-$;H;Y_-RAY{BQLan$UlLB2<5E zqWuKO%5IQCzeeJ$!vB~b1UP;DP4q+NE|yDHe+>q}dV{iklD4OIXn16@s?bbiGx|1| z7y_8H4~@mK7pJFz$H4czm3`wWnmf#s0aUI#PetS2O`5vyp`X8(e&#-*@*5I@$BcmU zP4T})x@Cz`G=}~)k&6t+3|V~_4V?S7q`9AIu;TsZDP}?JVtogtcYTL-<&t>&DO?f< zxJ{$lCUH%yjbPPV$gF!Kvk9u#PSFoH1k?|};R)=J+B=Zy-=}yjX1_ND6l6(3_Q&G? zMEuS4^RLtI%hS*N0SwTvIsmbp3adxa`gy#Xj99!HjM%?OvAhk8hi3Kmf;G+M?w)Kg z+(=4_FPYv_JS6TW&;3oZew%*&@AT9El92Xtz`6DGvz_$&Zl#~U1D3f^3Vt;?KzYL+ zy94#=`kD^j=LX+{;JgG=PDGcf_9?D;{;iC>OEUbrWPUgO>^%a*r>MwIQEyIB<)%{V z#VM{8_S;i9bg=yS*A!s7;crY)y~sJck@SNX2WqBm8 zMrQK2e~bwsCNr(8GXZtgpsOxdR^R7C4XRl4OnI!Tsw$6SyUOZvzOM3Ic~@B<{HjbD zkaLKL)u+)UX zBI^TsRkh^HM41W{T%IjU4@Yt3)qTTqWmQO&@zr;utGdgobLDx!!~2Het0G@smoCee zbyuX1PM3E9>VscZRhK;?ePk6W&ibz8kT>MddtB&!*;TS&>JFz^8oi-gG_*ZW5`1Xt!?|6)r zX?#Z`JWcMUtc=E&O{-mS351>ev*~D#?@c$sO*bsDVUH8P7L_xBOTLLA$)~_ zE9;fQa#q6AfT8p0Jc0jFw2+hq{HqLHg>cL=67Ii3saFl00sJAfH1Ylafx9aP&Lf<{ zjN$pqmHMTD>w$wcxW@m2QVT8od32hA>yh>u3nScz-ex`-z!w-e4|tV@k>?{82QZ(K zBYyo7rH)6B6Henzwl5es2lzf49z|UYT#fK?un#AG4&e(7tgxYVtA!E%f`O|MK7546 z&jOxh;A-I9WZ-l&?9UCX03S6{<11X+t21yl!Z#Q=jqq1(IAA{v*@d2^px?s4zt_O( zYNd7=xE}D>BQ<_E;5q~6kk2g!t_msjw1N8?mHMZF>t^HaB@7jo6`O>6o(8TyTdA)b zSYhk?1q1i_m3q&>-S|nk(~r_={hvU)8@Or;?j9Jp`xK>qZs5AfDA&OG^OZX5Xj3lW zW&_t(D)m(ZXFrB=Z8!||%g1Q^3}`;r!c)Q923E%^^?d_(ou?gQQ?&3 z3kI$}1O02@`V(<~z`$Mj?Wn&SIEK1Zjn!$>_!}~C)rZhN298Zo>SY7x5IzdDvaIfE zr7kkCLY`3rXF%t-4O}%&sb3kG+v#HvCw+0MQu7U5k9vH`!0NN$d5Z)1uLkbA2;&!d zF>Tdna7W9)xlb!~zkw^!{<{pEL7wHu89G0y)Ta$xh5kw!I1Bvy4P1ADQok{9_jyW< zMtxXT^$ALS%D`3Nhq!_3QTK-o>_1+q*9@EiFCB+AV%p3^r7kvb{YgsQU|>Jm@`nbl z2EYB;!Zk`wLR&L!J!rVxz!}iiWne#e=@|p(Q106X&LeFVzL~ZU_>BgxN-C_aO#-6p>W?+Tze;GK9e9l0-Fs(w`fPvG%xz)gR zwMuO^a5vyy19t%)558pD%Fma~b>mm0VaaKOS_QG|hWw_zL^xUv`H!s2XGYKwup zI+gk#8-A-&`wU#Q4)chC^RFv)EXIt~9eGw6xauC<=QePD2l~Un^?E<^1Lq$D4;a|L zUa1ES+}EMhlLpQr?JkS|BaCqa$F5iE=#zC>dEk81z_}a2p9bzrgJ%p}^*>5oXW;B_ zQLceAsMjWob06*?8Mylu@V|lmyC6Re90UAe@Hgw&1)TE@T=i>=UjtX)h563FnG1dD zUISNN;8Q;}aM$fhJ!fI`^&btK>%thHXxi|3rA{(%*K?4)HvA^YC<9mBjD9q5{S!)E zZ{W;NFz*;xq3)Xv-2G+D?-u_S@U4YW?t2EV29HgEOcDM8ou?bv4}P0#;Mi}_j|R@( z3;wY%c;I#e=YN4dwc)7CHXDw*{MNw!Hl^M&a363+Vm@QJl~-XtHL!oKQqyesLcCXJ z;M`*9BnGa=SPmMv{tFmW299A2e%ZivmqE`laODD}9x!kgdH$CTzY^_ZVE-lH0UJIa zW6g$N4rLZ{R_MGGZDruxBD9r(tCvH^FmPW3-Xpg-O&A*%Ck|c5z;$yVTPzOhdyj=d z=MN2BxlE~_8MwX$v{{^brT${zt`PJb%zvaUA4VG*xDqsQj%RpZOsUTrSY3><2^hiU z3jdls@O2)z-2;E!18?-eKlQ*r_rNcE;6HibcRld2m^&>E6FqR12d?wLAq|(2=9@k6 z-5&Ts54_a_zwUv{KPu%)KI1&_Cq3}x9ysNJ*J`+eG~B0QX~Uc+`~?rZ%LD(;1Hb8k z-}Atup(mkDB>(Xq_*4&ko(I0f17GHWgC2OP2abB+FL~fwJ@7X?@B<$BM;`bw5B#JD ze$E5Gp zZaWY6z{h#uk9**m9ys8ElOFgE5B#tP-r|9O>4E>~f&cA+$9~MEZHfoJ&;u{@z$-lP zEgty$9{5QQyu$X+Xwd-xWB@^3D*brzi@BC{SEFQoDb!d!Ii^Rz~QR28V+{^ z+z7alaJYW0j)oK2jK5>yj)6NCZXDckaO2@V1a~r=AMO;mNpSqJkyGJ53O5z*G`Q2@ zJ_dIN+{fXj!JP?L1@{TKv*6B#I|uHQaOc8(3hq2OuH`Z1t53s04N#wf`z##(Rgc2o zBjHBt?=-?3HvwVC!<_(!>*MM~xR1b{1UC`xgLWT!yQ6(o;Qb8(^|`Wp%ou1WIBC}B z)`=?r$G(S^>M+|WQqadku5Cn& z4~9x`fmy{N65~7=Zvweo6liea!EjWm^vrQ4?*<*Jz5^w8%mogEcoyzh9t=7C;JUd# z-30~)RYR{g21Nm<97fYMhBR42FT62C)1slaRiwapXvnFpt?Nwygbck9zv#z(r`&oG%P9|=KgPAf)(%}RSYT|IP-I4?So^U*z znm8E`b_#M5l%!;^6H&=r2FDg9lVUot%y!6`q*MlBYk7AVZ8)f*P_j@O`5k_xJ%)~h zrP})nP_6vi?n&TWInYp|px8fFCBdS5B>2Li%xP%4QYzCL4v8CXO!(bEHix7jw z=WU8X;uhV-7-TBvGRNTXOI%qRTtczplKVb`#CI+Qh3(abp(fOKBL3dk!Br9I-78{)PI8!yg2IYZ+B-8tEZQ0Z4mz1T0}Zk- zKwV|YRuXqf;>AiOi2VGX3zK=I} zeB9!LGC*VHA*GQ!euGZY?~3JNr_?vk2A$mAq#9g;X1PjgF2)T#$xP>h+0fI@)i#$y zPiQZ>9d^p0Q|-M=IJjcv8uwsPjp6VRCxH@Ijt5s@i*x63kof2+VG(;}afrzdsc##p zD0dtNmp4(hp!Qs19b8g#gFxR7F}yTb3f=3rgDcBCj_#=TgOoUOA$~~n5OnW?&9Xrj zgk<_6_TZ`mbf+p%_!k-b`#~ozzLGq+goT&l2bV^_$Z!};>q$6Rrr?j@*jw0xr4B85 zc#T0bdFMrdLzHIa39oH}o6LQvAtbU3=0kClw;+AlY6yjxyH!I-F~|wPOVwaDVH|uJ z6+>+U3%QqGN<^BgF;0xEc?~ggrLgE0n?;m3P>Vb4-m6*#(IGh% zLlD=s-aPx=3@V6CIy*cj4P?>4zny2363KI^&>K83nM~9#*1h`FKNDv;=^;&5)2Siz zG&Q%k3%&W6sE~WTtwd}=lX)`KmlVATcy+S)l3;PX_X43euHc@eH^S&U1yvg8x}`Ur zy|-z@^isjz7A+a-xjR)l-rTb)9ho%OX5TlqWDy0|e5|FJV~>t;ZV% ziSYU%-@NHBZwjv5+MkWFnXuaCN5||nxBgL3H%u{F5B7Xm7A&~HX|YTGNMm8-fJ4;q zM!y?>Ho511sT)*$H`R^7Tw_Re>cSvBD2qp%M&`Xun*l?liTmB~^kQh5J$F2vNPCsk z2`IWzYQu|fKHG4u`wh@h-blBrME5JMGyB+cbs7(Gp=L9SUZqk_usk55zh;S$wThZ& z8K8H2B*3aEiuYgp=c)sBo`7|Z-fbo)&=%ta=tA`4T>Ue4!gb#IQ)jON-Y;)q-f&x< zH_Th4RiFB&cNQJCASa+duG>7i9A`g-PmWn~UDy)EkWvJc4hI7;!XcyR(@RwWo*Pk| zgZXx;XF7-Wfgj>5c%yTXeS#CA7dww{;zRFunO8TR?-D2oGFDf3SXTdHmjeDmJY#>(-VwG4csqzHWQzG0h76ud@s|DcOS|e#5=G+DSiRg6T}@y zg>UcEsh(F~OT?fH<#oXlQ6RnWrB~n-zVV8H_kZ0L2r%ZL!45W*?Q^VN;z+E)Kyens zgn)^hSR18Ezao0*w~GrO7{!-)Srm}Iu@AuWmZ<)69ud`_5H0d5D8KZxp@0hB3*~p= zL!kvB`qg0x(hm)5P@WmqPl?($L<9PL&ZQ`kiiF~~_tnti=RyPaeM10zAT&TFSlK5* z`B(H2c?)!)M?gzH>s%06_>!~dxn}G^I`24pg1xUeGnh*^_YK~HH=O%N%gA+Ka4!9H zb@7X(`n&k4QXT4fz!?GZY@~EKUMoHHOU?Qr(*UPy_tnTitn|~Rh2bGP#tN{hiVc*L zd8M>48+Krblkq^Q28z=Uk~*2mOQgrQ9yF6u!CLny zLN5KVXkmteQ=)JQ$KXuL&VZ#00rm~iqQ^t|sk^`Uxls3=(BcO|`#tv^4~F6woO$La O&;7(XpFHO*^?w0xV>5dI diff --git a/src/main/resources/de/ailis/usb4java/libusb/osx-x86_64/libusb4java.dylib b/src/main/resources/de/ailis/usb4java/libusb/osx-x86_64/libusb4java.dylib index 24f4e4a078783ecf1ac98938fb2965fa3812a216..6886f66768f24d440a5527dc977cc77a2fdecec8 100644 GIT binary patch literal 179696 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