mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
usb-serial-for-android: Implement timeout-handling
Since the Android USB stack and subsequently the usb-serial-for-android driver have problems with read-timeouts, the read-timeout is now implemented in AndroidSerial.java. Also, DC_STATUS_TIMEOUT is returned if there are less bytes returned than expected. Different chipsets seem to behave differently with usb-serial-for-android. On CP210x the read blocks until there is some data here, but on FTDI the chip seems to return whatever is currently in the buffer (so 0 bytes if the buffer is empty). This different behaviour should be mitigated by the changes by this commit. Signed-off-by: Christof Arnosti <charno@charno.ch>
This commit is contained in:
parent
fe932059fe
commit
b15b9c6cd0
2 changed files with 13 additions and 5 deletions
|
@ -141,7 +141,11 @@ static dc_status_t serial_usb_android_read(void *io, void *data, size_t size, si
|
|||
env->GetByteArrayRegion(array, 0, retval, (jbyte *) data);
|
||||
env->DeleteLocalRef(array);
|
||||
TRACE (device->context, "%s: actual read size: %i", __FUNCTION__, retval);
|
||||
return DC_STATUS_SUCCESS;
|
||||
|
||||
if (retval < size)
|
||||
return DC_STATUS_TIMEOUT;
|
||||
else
|
||||
return DC_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue