]> sigrok.org Git - libsigrok.git/blobdiff - src/serial.c
serial: Shorten a few code snippets.
[libsigrok.git] / src / serial.c
index 12026a8965d6b9228efc245cecf9d87b4d3231f3..7f9de4f686f1f08fb01d11276420ae5f09a9dd2e 100644 (file)
 
 #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;