]> sigrok.org Git - libsigrok.git/commitdiff
std: Add std_serial_dev_open().
authorBert Vermeulen <redacted>
Sat, 7 Dec 2013 19:26:15 +0000 (20:26 +0100)
committerBert Vermeulen <redacted>
Sat, 7 Dec 2013 20:26:50 +0000 (21:26 +0100)
libsigrok-internal.h
std.c

index 3122e5812e209c424f129db66b64a8c1b1db702d..cb4fd3fe6aa37bc862df6a896d78fcdb7feff331 100644 (file)
@@ -181,6 +181,7 @@ typedef void (*std_dev_clear_t)(void *priv);
 SR_PRIV int std_init(struct sr_context *sr_ctx, struct sr_dev_driver *di,
                const char *prefix);
 #ifdef HAVE_LIBSERIALPORT
+SR_PRIV int std_serial_dev_open(struct sr_dev_inst *sdi);
 SR_PRIV int std_serial_dev_acquisition_stop(struct sr_dev_inst *sdi,
                void *cb_data, dev_close_t dev_close_fn,
                struct sr_serial_dev_inst *serial, const char *prefix);
diff --git a/std.c b/std.c
index 2b4dec3fc7903f5e474092e985c42acdfe3295cb..7dc020b999f736bd36d60628862dbd11f9065475 100644 (file)
--- a/std.c
+++ b/std.c
@@ -103,6 +103,32 @@ SR_PRIV int std_session_send_df_header(const struct sr_dev_inst *sdi,
 
 #ifdef HAVE_LIBSERIALPORT
 
+/*
+ * Standard serial driver dev_open() helper.
+ *
+ * This function can be used to implement the dev_open() driver API
+ * callback in drivers that use a serial port. The port is opened
+ * with the SERIAL_RDWR and SERIAL_NONBLOCK flags.
+ *
+ * If the open succeeded, the status field of the given sdi is set
+ * to SR_ST_ACTIVE.
+ *
+ * @retval SR_OK Success.
+ * @retval SR_ERR Serial port open failed.
+ */
+SR_PRIV int std_serial_dev_open(struct sr_dev_inst *sdi)
+{
+       struct sr_serial_dev_inst *serial;
+
+       serial = sdi->conn;
+       if (serial_open(serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK)
+               return SR_ERR;
+
+       sdi->status = SR_ST_ACTIVE;
+
+       return SR_OK;
+}
+
 /*
  * Standard sr_session_stop() API helper.
  *