--- src/cochran_commander.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/cochran_commander.c b/src/cochran_commander.c index fdcac67..fdb1390 100644 --- a/src/cochran_commander.c +++ b/src/cochran_commander.c @@ -61,6 +61,7 @@ cochran_packet (cochran_device_t *device, const unsigned char command[], dc_device_t *abstract = (dc_device_t *) device; unsigned int bytes_read = 0, n, read_size; unsigned int ptr; + int rc;
if (device_is_cancelled (abstract)) return DC_STATUS_CANCELLED; @@ -80,10 +81,21 @@ cochran_packet (cochran_device_t *device, const unsigned char command[],
// Weird but I only get the right result when I do it twice // Rates are odd, like 825600 for the EMC, 115200 for commander - serial_configure(device->port, device->data.conf.high_baud, 8, + rc = serial_configure(device->port, device->data.conf.high_baud, 8, SERIAL_PARITY_NONE, 2, SERIAL_FLOWCONTROL_NONE); - serial_configure(device->port, device->data.conf.high_baud, 8, + if (rc == -1) { + ERROR (abstract->context, "Failed to set the high baud rate."); + free (device); + return DC_STATUS_IO; + } + + rc = serial_configure(device->port, device->data.conf.high_baud, 8, SERIAL_PARITY_NONE, 2, SERIAL_FLOWCONTROL_NONE); + if (rc == -1) { + ERROR (abstract->context, "Failed to set the high baud rate."); + free (device); + return DC_STATUS_IO; + } }
// Receive the answer from the device.