diff --git a/src/main/c/src/LibUsb.c b/src/main/c/src/LibUsb.c index b234998..3b1d823 100644 --- a/src/main/c/src/LibUsb.c +++ b/src/main/c/src/LibUsb.c @@ -1420,13 +1420,13 @@ static int LIBUSB_CALL hotplugCallback(libusb_context *context, } /** - * int hotplugRegisterCallbackNative(Context, int, int, short, short, byte, + * int hotplugRegisterCallbackNative(Context, int, int, int, int, int, * HotplugCallbackHandle, long) */ JNIEXPORT jint JNICALL METHOD_NAME(LibUsb, hotplugRegisterCallbackNative) ( JNIEnv *env, jclass class, jobject context, jint events, jint flags, - jshort vendorId, jshort productId, jbyte deviceClass, + jint vendorId, jint productId, jint deviceClass, jobject callbackHandle, jlong hotplugId ) { diff --git a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java index bdef85e..d90b542 100644 --- a/src/main/java/de/ailis/usb4java/libusb/LibUsb.java +++ b/src/main/java/de/ailis/usb4java/libusb/LibUsb.java @@ -2621,9 +2621,10 @@ public final class LibUsb throw new IllegalArgumentException("callback must not be null"); } + // Mask the values for conversion to int in libusb API. final int result = hotplugRegisterCallbackNative(context, events, - flags, vendorId, productId, deviceClass, callbackHandle, - globalHotplugId); + flags, (vendorId & 0xFFFF), (productId & 0xFFFF), + (deviceClass & 0xFF), callbackHandle, globalHotplugId); if (result == LibUsb.SUCCESS) { @@ -2638,8 +2639,8 @@ public final class LibUsb } static native int hotplugRegisterCallbackNative(final Context context, - final int events, final int flags, final short vendorId, - final short productId, final byte deviceClass, + final int events, final int flags, final int vendorId, + final int productId, final int deviceClass, final HotplugCallbackHandle callbackHandle, final long hotplugId); /** 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 19d9e75..29cc242 100644 Binary files a/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so and b/src/main/resources/de/ailis/usb4java/libusb/linux-x86_64/libusb4java.so differ