X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fserial.c;h=7f9de4f686f1f08fb01d11276420ae5f09a9dd2e;hb=bf6b9e7b16264d2a6ccb3ac2a6004cbc2cef0e43;hp=12026a8965d6b9228efc245cecf9d87b4d3231f3;hpb=d47872480164724f348ceedc8af2f39fc2e9fce4;p=libsigrok.git diff --git a/src/serial.c b/src/serial.c index 12026a89..7f9de4f6 100644 --- a/src/serial.c +++ b/src/serial.c @@ -55,12 +55,10 @@ #ifdef HAVE_SERIAL_COMM -/* See if a (assumed opened) serial port is of any supported type. */ +/* See if an (assumed opened) serial port is of any supported type. */ static int dev_is_supported(struct sr_serial_dev_inst *serial) { - if (!serial) - return 0; - if (!serial->lib_funcs) + if (!serial || !serial->lib_funcs) return 0; return 1; @@ -270,9 +268,7 @@ SR_PRIV int serial_set_read_chunk_cb(struct sr_serial_dev_inst *serial, */ SR_PRIV void sr_ser_discard_queued_data(struct sr_serial_dev_inst *serial) { - if (!serial) - return; - if (!serial->rcv_buffer) + if (!serial || !serial->rcv_buffer) return; g_string_truncate(serial->rcv_buffer, 0); @@ -288,9 +284,7 @@ SR_PRIV void sr_ser_discard_queued_data(struct sr_serial_dev_inst *serial) */ SR_PRIV size_t sr_ser_has_queued_data(struct sr_serial_dev_inst *serial) { - if (!serial) - return 0; - if (!serial->rcv_buffer) + if (!serial || !serial->rcv_buffer) return 0; return serial->rcv_buffer->len; @@ -309,9 +303,7 @@ SR_PRIV size_t sr_ser_has_queued_data(struct sr_serial_dev_inst *serial) SR_PRIV void sr_ser_queue_rx_data(struct sr_serial_dev_inst *serial, const uint8_t *data, size_t len) { - if (!serial) - return; - if (!data || !len) + if (!serial || !data || !len) return; if (serial->rx_chunk_cb_func) @@ -336,9 +328,7 @@ SR_PRIV size_t sr_ser_unqueue_rx_data(struct sr_serial_dev_inst *serial, size_t qlen; GString *buf; - if (!serial) - return 0; - if (!data || !len) + if (!serial || !data || !len) return 0; qlen = sr_ser_has_queued_data(serial); @@ -749,9 +739,6 @@ SR_PRIV int serial_readline(struct sr_serial_dev_inst *serial, * @param is_valid Callback that assesses whether the packet is valid or not. * @param[in] timeout_ms The timeout after which, if no packet is detected, to * abort scanning. - * @param[in] baudrate The baudrate of the serial port. This parameter is not - * critical, but it helps fine tune the serial port polling - * delay. * * @retval SR_OK Valid packet was found within the given timeout. * @retval SR_ERR Failure. @@ -762,7 +749,7 @@ SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial, uint8_t *buf, size_t *buflen, size_t packet_size, packet_valid_callback is_valid, - uint64_t timeout_ms, int baudrate) + uint64_t timeout_ms) { uint64_t start, time, byte_delay_us; size_t ibuf, i, maxlen; @@ -770,16 +757,16 @@ SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial, maxlen = *buflen; - sr_dbg("Detecting packets on %s (timeout = %" PRIu64 - "ms, baudrate = %d).", serial->port, timeout_ms, baudrate); + sr_dbg("Detecting packets on %s (timeout = %" PRIu64 "ms).", + serial->port, timeout_ms); - if (maxlen < (packet_size / 2) ) { + if (maxlen < (packet_size * 2) ) { sr_err("Buffer size must be at least twice the packet size."); return SR_ERR; } /* Assume 8n1 transmission. That is 10 bits for every byte. */ - byte_delay_us = 10 * ((1000 * 1000) / baudrate); + byte_delay_us = serial_timeout(serial, 1) * 1000; start = g_get_monotonic_time(); i = ibuf = len = 0; @@ -1030,9 +1017,7 @@ SR_PRIV GSList *sr_serial_find_usb(uint16_t vendor_id, uint16_t product_id) /** @private */ SR_PRIV int serial_timeout(struct sr_serial_dev_inst *port, int num_bytes) { - int bits, baud; - int ret; - int timeout_ms; + int bits, baud, ret, timeout_ms; /* Get the bitrate and frame length. */ bits = baud = 0;