#include <libusb.h>
#endif
#include <stdarg.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
};
#endif
+struct sr_serial_dev_inst;
#ifdef HAVE_SERIAL_COMM
struct ser_lib_functions;
struct sr_serial_dev_inst {
int parity_bits;
int stop_bits;
} comm_params;
+ GString *rcv_buffer;
#ifdef HAVE_LIBSERIALPORT
/** libserialport port handle */
struct sp_port *sp_data;
#endif
#ifdef HAVE_SERIAL_COMM
+#ifndef HAVE_LIBSERIALPORT
+/*
+ * Some identifiers which initially got provided by libserialport are
+ * used internally within the libsigrok serial layer's implementation,
+ * while libserialport no longer is the exclusive provider of serial
+ * communication support. Declare the identifiers here so they remain
+ * available across all build configurations.
+ */
+enum libsp_parity {
+ SP_PARITY_NONE = 0,
+ SP_PARITY_ODD = 1,
+ SP_PARITY_EVEN = 2,
+ SP_PARITY_MARK = 3,
+ SP_PARITY_SPACE = 4,
+};
+
+enum libsp_flowcontrol {
+ SP_FLOWCONTROL_NONE = 0,
+ SP_FLOWCONTROL_XONXOFF = 1,
+ SP_FLOWCONTROL_RTSCTS = 2,
+ SP_FLOWCONTROL_DTRDSR = 3,
+};
+#endif
+
/* Serial-specific instances */
SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(const char *port,
const char *serialcomm);
SR_PRIV GSList *sr_serial_find_usb(uint16_t vendor_id, uint16_t product_id);
SR_PRIV int serial_timeout(struct sr_serial_dev_inst *port, int num_bytes);
+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);
+SR_PRIV void sr_ser_queue_rx_data(struct sr_serial_dev_inst *serial,
+ const uint8_t *data, size_t len);
+SR_PRIV size_t sr_ser_unqueue_rx_data(struct sr_serial_dev_inst *serial,
+ uint8_t *data, size_t len);
+
struct ser_lib_functions {
int (*open)(struct sr_serial_dev_inst *serial, int flags);
int (*close)(struct sr_serial_dev_inst *serial);