aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/qtserialbluetooth.cpp2
-rw-r--r--core/serial_ftdi.c53
2 files changed, 0 insertions, 55 deletions
diff --git a/core/qtserialbluetooth.cpp b/core/qtserialbluetooth.cpp
index 54a21d037..fecd58a08 100644
--- a/core/qtserialbluetooth.cpp
+++ b/core/qtserialbluetooth.cpp
@@ -70,7 +70,6 @@ static dc_custom_io_t ble_serial_ops = {
.serial_configure = NULL,
.serial_set_dtr = NULL,
.serial_set_rts = NULL,
- .serial_set_halfduplex = NULL,
.serial_set_break = NULL,
.packet_size = 20,
@@ -605,7 +604,6 @@ dc_custom_io_t qt_serial_ops = {
.serial_configure = NULL,
.serial_set_dtr = NULL,
.serial_set_rts = NULL,
- .serial_set_halfduplex = NULL,
.serial_set_break = NULL,
#ifdef BLE_SUPPORT
diff --git a/core/serial_ftdi.c b/core/serial_ftdi.c
index 6471c2f0d..166bf0894 100644
--- a/core/serial_ftdi.c
+++ b/core/serial_ftdi.c
@@ -66,8 +66,6 @@ typedef struct ftdi_serial_t {
* Custom implementation using libftdi functions could be done.
*/
- /* Half-duplex settings */
- int halfduplex;
unsigned int baudrate;
unsigned int nbits;
unsigned int databits;
@@ -173,7 +171,6 @@ static dc_status_t serial_ftdi_open (dc_custom_io_t *io, dc_context_t *context,
device->timeout = -1;
// Default to full-duplex.
- device->halfduplex = 0;
device->baudrate = 0;
device->nbits = 0;
device->databits = 0;
@@ -365,21 +362,6 @@ static dc_status_t serial_ftdi_set_timeout (dc_custom_io_t *io, long timeout)
return DC_STATUS_SUCCESS;
}
-static dc_status_t serial_ftdi_set_halfduplex (dc_custom_io_t *io, unsigned int value)
-{
- ftdi_serial_t *device = (ftdi_serial_t*) io->userdata;
-
- if (device == NULL)
- return DC_STATUS_INVALIDARGS;
-
- // Most ftdi chips support full duplex operation. ft232rl does.
- // Crosscheck other chips.
-
- device->halfduplex = value;
-
- return DC_STATUS_SUCCESS;
-}
-
static dc_status_t serial_ftdi_read (dc_custom_io_t *io, void *data, size_t size, size_t *actual)
{
ftdi_serial_t *device = (ftdi_serial_t*) io->userdata;
@@ -432,13 +414,6 @@ static dc_status_t serial_ftdi_write (dc_custom_io_t *io, const void *data, size
return DC_STATUS_INVALIDARGS;
struct timeval tve, tvb;
- if (device->halfduplex) {
- // Get the current time.
- if (gettimeofday (&tvb, NULL) != 0) {
- SYSERROR (device->context, errno);
- return DC_STATUS_IO;
- }
- }
unsigned int nbytes = 0;
while (nbytes < size) {
@@ -456,33 +431,6 @@ static dc_status_t serial_ftdi_write (dc_custom_io_t *io, const void *data, size
nbytes += n;
}
- if (device->halfduplex) {
- // Get the current time.
- if (gettimeofday (&tve, NULL) != 0) {
- SYSERROR (device->context, errno);
- return DC_STATUS_IO;
- }
-
- // Calculate the elapsed time (microseconds).
- struct timeval tvt;
- timersub (&tve, &tvb, &tvt);
- unsigned long elapsed = tvt.tv_sec * 1000000 + tvt.tv_usec;
-
- // Calculate the expected duration (microseconds). A 2 millisecond fudge
- // factor is added because it improves the success rate significantly.
- unsigned long expected = 1000000.0 * device->nbits / device->baudrate * size + 0.5 + 2000;
-
- // Wait for the remaining time.
- if (elapsed < expected) {
- unsigned long remaining = expected - elapsed;
-
- // The remaining time is rounded up to the nearest millisecond to
- // match the Windows implementation. The higher resolution is
- // pointless anyway, since we already added a fudge factor above.
- serial_ftdi_sleep (device, (remaining + 999) / 1000);
- }
- }
-
INFO (device->context, "Wrote %d bytes", nbytes);
if (actual)
@@ -608,7 +556,6 @@ dc_custom_io_t serial_ftdi_ops = {
.serial_configure = serial_ftdi_configure,
.serial_set_dtr = serial_ftdi_set_dtr,
.serial_set_rts = serial_ftdi_set_rts,
- .serial_set_halfduplex = serial_ftdi_set_halfduplex,
// Can't be done in ftdi?
// only used in vyper2
.serial_set_break = serial_ftdi_set_break,