From 5fbe0712e84aaaab4c89f28516cc34a769302464 Mon Sep 17 00:00:00 2001 From: eddy Date: Sun, 26 Jul 2026 12:49:37 +0200 Subject: [PATCH] Add UsbUtils utility object for shared USB functions --- .../main/java/com/eddy/atomrelay/UsbUtils.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 android/app/src/main/java/com/eddy/atomrelay/UsbUtils.kt diff --git a/android/app/src/main/java/com/eddy/atomrelay/UsbUtils.kt b/android/app/src/main/java/com/eddy/atomrelay/UsbUtils.kt new file mode 100644 index 0000000..a829fd6 --- /dev/null +++ b/android/app/src/main/java/com/eddy/atomrelay/UsbUtils.kt @@ -0,0 +1,30 @@ +package com.eddy.atomrelay + +import android.hardware.usb.UsbConstants +import android.hardware.usb.UsbDevice +import android.hardware.usb.UsbEndpoint +import android.hardware.usb.UsbInterface + +object UsbUtils { + private const val CDC_DATA_INTERFACE_CLASS = 0x0A + + fun findCdcDataInterface(device: UsbDevice): UsbInterface? { + for (i in 0 until device.interfaceCount) { + val intf = device.getInterface(i) + if (intf.interfaceClass == CDC_DATA_INTERFACE_CLASS) { + return intf + } + } + return null + } + + fun findBulkEndpoint(intf: UsbInterface, direction: Int): UsbEndpoint? { + for (i in 0 until intf.endpointCount) { + val ep = intf.getEndpoint(i) + if (ep.type == UsbConstants.USB_ENDPOINT_XFER_BULK && ep.direction == direction) { + return ep + } + } + return null + } +}