Skip to content

Commit 372a2de

Browse files
committed
Lower USB transfer timeouts for all devices
1 parent a6ce0d9 commit 372a2de

File tree

3 files changed

+52
-50
lines changed

3 files changed

+52
-50
lines changed

drivers/src/main/java/info/martinmarinov/drivers/usb/af9035/Af9035DvbDevice.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,6 @@
2020

2121
package info.martinmarinov.drivers.usb.af9035;
2222

23-
import android.content.Context;
24-
import android.hardware.usb.UsbDevice;
25-
import android.hardware.usb.UsbEndpoint;
26-
import android.hardware.usb.UsbInterface;
27-
import androidx.annotation.NonNull;
28-
import androidx.annotation.Nullable;
29-
import android.util.Log;
30-
31-
import java.io.IOException;
32-
import java.io.InputStream;
33-
34-
import info.martinmarinov.drivers.DeviceFilter;
35-
import info.martinmarinov.drivers.DvbDemux;
36-
import info.martinmarinov.drivers.DvbException;
37-
import info.martinmarinov.drivers.R;
38-
import info.martinmarinov.drivers.tools.I2cAdapter;
39-
import info.martinmarinov.drivers.tools.SleepUtils;
40-
import info.martinmarinov.drivers.usb.DvbFrontend;
41-
import info.martinmarinov.drivers.usb.DvbTuner;
42-
import info.martinmarinov.drivers.usb.DvbUsbDevice;
43-
import info.martinmarinov.usbxfer.AlternateUsbInterface;
44-
4523
import static android.hardware.usb.UsbConstants.USB_DIR_IN;
4624
import static android.hardware.usb.UsbConstants.USB_DIR_OUT;
4725
import static info.martinmarinov.drivers.DvbException.ErrorCode.BAD_API_USAGE;
@@ -91,6 +69,29 @@
9169
import static info.martinmarinov.drivers.usb.af9035.It913x.IT913X_ROLE_DUAL_MASTER;
9270
import static info.martinmarinov.drivers.usb.af9035.It913x.IT913X_ROLE_SINGLE;
9371

72+
import android.content.Context;
73+
import android.hardware.usb.UsbDevice;
74+
import android.hardware.usb.UsbEndpoint;
75+
import android.hardware.usb.UsbInterface;
76+
import android.util.Log;
77+
78+
import androidx.annotation.NonNull;
79+
import androidx.annotation.Nullable;
80+
81+
import java.io.IOException;
82+
import java.io.InputStream;
83+
84+
import info.martinmarinov.drivers.DeviceFilter;
85+
import info.martinmarinov.drivers.DvbDemux;
86+
import info.martinmarinov.drivers.DvbException;
87+
import info.martinmarinov.drivers.R;
88+
import info.martinmarinov.drivers.tools.I2cAdapter;
89+
import info.martinmarinov.drivers.tools.SleepUtils;
90+
import info.martinmarinov.drivers.usb.DvbFrontend;
91+
import info.martinmarinov.drivers.usb.DvbTuner;
92+
import info.martinmarinov.drivers.usb.DvbUsbDevice;
93+
import info.martinmarinov.usbxfer.AlternateUsbInterface;
94+
9495
class Af9035DvbDevice extends DvbUsbDevice {
9596
private final static String TAG = Af9035DvbDevice.class.getSimpleName();
9697

@@ -646,7 +647,7 @@ private int checksum(byte[] buf, int len) {
646647

647648
private void dvb_usb_generic_rw(@NonNull byte[] wbuf, int wlen, @Nullable byte[] rbuf, int rlen) throws DvbException {
648649
synchronized (usbLock) {
649-
int actlen = usbDeviceConnection.bulkTransfer(controlEndpointOut, wbuf, wlen, 5_000);
650+
int actlen = usbDeviceConnection.bulkTransfer(controlEndpointOut, wbuf, wlen, 500);
650651

651652
if (actlen < wlen) {
652653
if (actlen >= 0) actlen = -1;
@@ -656,7 +657,7 @@ private void dvb_usb_generic_rw(@NonNull byte[] wbuf, int wlen, @Nullable byte[]
656657
// put delay here if needed
657658

658659
if (rlen > 0) {
659-
actlen = usbDeviceConnection.bulkTransfer(controlEndpointIn, rbuf, rlen, 5_000);
660+
actlen = usbDeviceConnection.bulkTransfer(controlEndpointIn, rbuf, rlen, 500);
660661
if (actlen < rlen) {
661662
if (actlen >= 0) actlen = -1;
662663
throw new DvbException(HARDWARE_EXCEPTION, resources.getString(R.string.cannot_send_control_message, actlen));

drivers/src/main/java/info/martinmarinov/drivers/usb/cxusb/CxUsbDvbDevice.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,22 @@
2020

2121
package info.martinmarinov.drivers.usb.cxusb;
2222

23+
import static android.hardware.usb.UsbConstants.USB_DIR_IN;
24+
import static android.hardware.usb.UsbConstants.USB_DIR_OUT;
25+
import static info.martinmarinov.drivers.DvbException.ErrorCode.BAD_API_USAGE;
26+
import static info.martinmarinov.drivers.DvbException.ErrorCode.DVB_DEVICE_UNSUPPORTED;
27+
import static info.martinmarinov.drivers.DvbException.ErrorCode.HARDWARE_EXCEPTION;
28+
import static info.martinmarinov.drivers.tools.I2cAdapter.I2cMessage.I2C_M_RD;
29+
import static info.martinmarinov.drivers.usb.DvbUsbIds.USB_VID_MEDION;
30+
2331
import android.content.Context;
2432
import android.hardware.usb.UsbDevice;
2533
import android.hardware.usb.UsbEndpoint;
2634
import android.hardware.usb.UsbInterface;
35+
import android.util.Log;
36+
2737
import androidx.annotation.NonNull;
2838
import androidx.annotation.Nullable;
29-
import android.util.Log;
3039

3140
import info.martinmarinov.drivers.DeviceFilter;
3241
import info.martinmarinov.drivers.DvbDemux;
@@ -36,14 +45,6 @@
3645
import info.martinmarinov.drivers.usb.DvbUsbDevice;
3746
import info.martinmarinov.usbxfer.AlternateUsbInterface;
3847

39-
import static android.hardware.usb.UsbConstants.USB_DIR_IN;
40-
import static android.hardware.usb.UsbConstants.USB_DIR_OUT;
41-
import static info.martinmarinov.drivers.DvbException.ErrorCode.BAD_API_USAGE;
42-
import static info.martinmarinov.drivers.DvbException.ErrorCode.DVB_DEVICE_UNSUPPORTED;
43-
import static info.martinmarinov.drivers.DvbException.ErrorCode.HARDWARE_EXCEPTION;
44-
import static info.martinmarinov.drivers.tools.I2cAdapter.I2cMessage.I2C_M_RD;
45-
import static info.martinmarinov.drivers.usb.DvbUsbIds.USB_VID_MEDION;
46-
4748
public abstract class CxUsbDvbDevice extends DvbUsbDevice {
4849
private final static String TAG = CxUsbDvbDevice.class.getSimpleName();
4950

@@ -165,7 +166,7 @@ synchronized void cxusb_ctrl_msg(byte cmd, @NonNull byte[] wbuf, int wlen, @Null
165166

166167
private void dvb_usb_generic_rw(@NonNull byte[] wbuf, int wlen, @Nullable byte[] rbuf, int rlen) throws DvbException {
167168
synchronized (usbLock) {
168-
int actlen = usbDeviceConnection.bulkTransfer(controlEndpointOut, wbuf, wlen, 5_000);
169+
int actlen = usbDeviceConnection.bulkTransfer(controlEndpointOut, wbuf, wlen, 500);
169170

170171
if (actlen < wlen) {
171172
if (actlen >= 0) actlen = -1;
@@ -175,7 +176,7 @@ private void dvb_usb_generic_rw(@NonNull byte[] wbuf, int wlen, @Nullable byte[]
175176
// put delay here if needed
176177

177178
if (rbuf != null && rlen >= 0) {
178-
actlen = usbDeviceConnection.bulkTransfer(controlEndpointIn, rbuf, rlen, 5_000);
179+
actlen = usbDeviceConnection.bulkTransfer(controlEndpointIn, rbuf, rlen, 500);
179180
if (actlen < rlen) {
180181
if (actlen >= 0) actlen = -1;
181182
throw new DvbException(HARDWARE_EXCEPTION, resources.getString(R.string.cannot_send_control_message, actlen));

drivers/src/main/java/info/martinmarinov/drivers/usb/rtl28xx/Rtl28xxDvbDevice.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,6 @@
2020

2121
package info.martinmarinov.drivers.usb.rtl28xx;
2222

23-
import android.content.Context;
24-
import android.hardware.usb.UsbConstants;
25-
import android.hardware.usb.UsbDevice;
26-
import android.hardware.usb.UsbEndpoint;
27-
import android.hardware.usb.UsbInterface;
28-
29-
import info.martinmarinov.drivers.DeviceFilter;
30-
import info.martinmarinov.drivers.DvbException;
31-
import info.martinmarinov.drivers.usb.DvbUsbDevice;
32-
import info.martinmarinov.drivers.R;
33-
import info.martinmarinov.drivers.DvbDemux;
34-
import info.martinmarinov.drivers.tools.I2cAdapter;
35-
import info.martinmarinov.usbxfer.AlternateUsbInterface;
36-
3723
import static info.martinmarinov.drivers.DvbException.ErrorCode.BAD_API_USAGE;
3824
import static info.martinmarinov.drivers.DvbException.ErrorCode.DVB_DEVICE_UNSUPPORTED;
3925
import static info.martinmarinov.drivers.DvbException.ErrorCode.HARDWARE_EXCEPTION;
@@ -54,6 +40,20 @@
5440
import static info.martinmarinov.drivers.usb.rtl28xx.Rtl28xxConst.USB_EPA_MAXPKT;
5541
import static info.martinmarinov.drivers.usb.rtl28xx.Rtl28xxConst.USB_SYSCTL_0;
5642

43+
import android.content.Context;
44+
import android.hardware.usb.UsbConstants;
45+
import android.hardware.usb.UsbDevice;
46+
import android.hardware.usb.UsbEndpoint;
47+
import android.hardware.usb.UsbInterface;
48+
49+
import info.martinmarinov.drivers.DeviceFilter;
50+
import info.martinmarinov.drivers.DvbDemux;
51+
import info.martinmarinov.drivers.DvbException;
52+
import info.martinmarinov.drivers.R;
53+
import info.martinmarinov.drivers.tools.I2cAdapter;
54+
import info.martinmarinov.drivers.usb.DvbUsbDevice;
55+
import info.martinmarinov.usbxfer.AlternateUsbInterface;
56+
5757
abstract class Rtl28xxDvbDevice extends DvbUsbDevice {
5858
private final Object usbLock = new Object();
5959

@@ -83,7 +83,7 @@ synchronized int ctrlMsg(int value, int index, byte[] data) throws DvbException
8383
}
8484

8585
synchronized (usbLock) {
86-
int result = usbDeviceConnection.controlTransfer(requestType, 0, value, index, data, data.length, 5_000);
86+
int result = usbDeviceConnection.controlTransfer(requestType, 0, value, index, data, data.length, 500);
8787

8888
if (result < 0) {
8989
throw new DvbException(HARDWARE_EXCEPTION, resources.getString(R.string.cannot_send_control_message, result));

0 commit comments

Comments
 (0)