From dba9b88f3667fd699dd542388f354e682a58b9c1 Mon Sep 17 00:00:00 2001 From: Roman Vanicek Date: Sun, 6 Oct 2024 13:59:23 +0200 Subject: [PATCH] Termux-usb hack finalized --- libsigrok4DSL/dsdevice.c | 4 ++++ libsigrok4DSL/hardware/DSL/dsl.c | 4 ++-- libsigrok4DSL/hardware/common/ezusb.c | 2 +- libsigrok4DSL/libsigrok-internal.h | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libsigrok4DSL/dsdevice.c b/libsigrok4DSL/dsdevice.c index f47e234d..4ee60a8d 100644 --- a/libsigrok4DSL/dsdevice.c +++ b/libsigrok4DSL/dsdevice.c @@ -379,4 +379,8 @@ int libusb_open_termux(libusb_device *dev, libusb_device_handle **dev_handle) { return LIBUSB_ERROR_NOT_SUPPORTED; } +void libusb_close_termux(libusb_device_handle *dev_handle) { + // do nothing we have a singleton device instance +} + /** @} */ diff --git a/libsigrok4DSL/hardware/DSL/dsl.c b/libsigrok4DSL/hardware/DSL/dsl.c index eccefe09..d8eed4a9 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.c +++ b/libsigrok4DSL/hardware/DSL/dsl.c @@ -294,7 +294,7 @@ SR_PRIV gboolean dsl_check_conf_profile(libusb_device *dev) } if (hdl){ - libusb_close(hdl); + libusb_close_termux(hdl); } return bSucess; @@ -1994,7 +1994,7 @@ SR_PRIV int dsl_dev_close(struct sr_dev_inst *sdi) if (usb->devhdl != NULL){ libusb_release_interface(usb->devhdl, USB_INTERFACE); - libusb_close(usb->devhdl); + libusb_close_termux(usb->devhdl); } //sr_info("------------Close the libusb_device_handle:%p, struct:%p", usb->devhdl, usb); diff --git a/libsigrok4DSL/hardware/common/ezusb.c b/libsigrok4DSL/hardware/common/ezusb.c index 7086dd08..801bdee4 100644 --- a/libsigrok4DSL/hardware/common/ezusb.c +++ b/libsigrok4DSL/hardware/common/ezusb.c @@ -140,7 +140,7 @@ SR_PRIV int ezusb_upload_firmware(libusb_device *dev, int configuration, return SR_ERR; if (hdl != NULL) - libusb_close(hdl); + libusb_close_termux(hdl); return SR_OK; } diff --git a/libsigrok4DSL/libsigrok-internal.h b/libsigrok4DSL/libsigrok-internal.h index d6bb1574..dbeb24df 100644 --- a/libsigrok4DSL/libsigrok-internal.h +++ b/libsigrok4DSL/libsigrok-internal.h @@ -280,6 +280,7 @@ SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb); ssize_t libusb_get_device_list_termux(libusb_context *ctx, libusb_device ***list); void libusb_free_device_list_termux(libusb_device **list, int unref_devices); int libusb_open_termux(libusb_device *dev, libusb_device_handle **dev_handle); +void libusb_close_termux(libusb_device_handle *dev_handle); /* Serial-specific instances */ SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(const char *port,