From 827e2ceef8d00f090b88dc3af7142b96ed91f140 Mon Sep 17 00:00:00 2001 From: Uriel Date: Sun, 21 Apr 2024 19:31:28 -0300 Subject: [PATCH] update hid4java to 0.8 (#992) Co-authored-by: sctanf <36978460+sctanf@users.noreply.github.com> --- flake.nix | 1 + server/desktop/build.gradle.kts | 2 +- .../desktop/tracking/trackers/hid/TrackersHID.kt | 11 ++++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index fb910088ce..17bc8b6f97 100644 --- a/flake.nix +++ b/flake.nix @@ -96,6 +96,7 @@ expat libayatana-appindicator libusb1 + libudev-zero ]) ++ lib.optionals pkgs.stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.Security diff --git a/server/desktop/build.gradle.kts b/server/desktop/build.gradle.kts index 2f811465a7..989878f025 100644 --- a/server/desktop/build.gradle.kts +++ b/server/desktop/build.gradle.kts @@ -59,7 +59,7 @@ dependencies { implementation("net.java.dev.jna:jna:5.+") implementation("net.java.dev.jna:jna-platform:5.+") implementation("com.fazecast:jSerialComm:2.10.2") - implementation("org.hid4java:hid4java:0.7.0") + implementation("org.hid4java:hid4java:0.8.0") } tasks.shadowJar { diff --git a/server/desktop/src/main/java/dev/slimevr/desktop/tracking/trackers/hid/TrackersHID.kt b/server/desktop/src/main/java/dev/slimevr/desktop/tracking/trackers/hid/TrackersHID.kt index f6b4a3c358..f4c46d7278 100644 --- a/server/desktop/src/main/java/dev/slimevr/desktop/tracking/trackers/hid/TrackersHID.kt +++ b/server/desktop/src/main/java/dev/slimevr/desktop/tracking/trackers/hid/TrackersHID.kt @@ -32,7 +32,7 @@ class TrackersHID(name: String, private val trackersConsumer: Consumer) private val hidServices: HidServices init { - hidServicesSpecification.isAutoStart = false + hidServicesSpecification.setAutoStart(false) hidServices = HidManager.getHidServices(hidServicesSpecification) hidServices.addHidServicesListener(this) val dataReadThread = Thread(dataReadRunnable) @@ -43,7 +43,7 @@ class TrackersHID(name: String, private val trackersConsumer: Consumer) private fun checkConfigureDevice(hidDevice: HidDevice) { if (hidDevice.vendorId == 0x2FE3 && hidDevice.productId == 0x5652) { // TODO: Use correct ids - if (!hidDevice.isOpen) { + if (hidDevice.isClosed) { check(hidDevice.open()) { "Unable to open device" } } // TODO: Configure the device here @@ -164,7 +164,7 @@ class TrackersHID(name: String, private val trackersConsumer: Consumer) var devicesPresent = false for ((hidDevice, deviceList) in devicesByHID) { val dataReceived: Array = try { - hidDevice.read(80, 1) // Read up to 80 bytes, timeout 1ms + hidDevice.read(80, 0) // Read up to 80 bytes } catch (e: NegativeArraySizeException) { continue // Skip devices with read error (Maybe disconnected) } @@ -174,6 +174,7 @@ class TrackersHID(name: String, private val trackersConsumer: Consumer) // TODO: make this less bad if (dataReceived.size % 20 != 0) { LogManager.info("[TrackerServer] Malformed HID packet, ignoring") + continue // Don't continue with this data } val packetCount = dataReceived.size / 20 var i = 0 @@ -243,6 +244,10 @@ class TrackersHID(name: String, private val trackersConsumer: Consumer) // TODO: } + override fun hidDataReceived(p0: HidServicesEvent?) { + // Seems to have issues with the size of data returned + } + companion object { /** * Change between IMU axes and OpenGL/SteamVR axes