]> sigrok.org Git - libsigrok.git/blobdiff - src/device.c
sr_dev_open(): Factor out SR_ST_ACTIVE check.
[libsigrok.git] / src / device.c
index aa499c8d74252ad07a37cf54afbec3b1233196ce..e5cbf4ef2868473e1c689e0752361d5f9e35c998 100644 (file)
@@ -560,6 +560,14 @@ SR_API int sr_dev_open(struct sr_dev_inst *sdi)
        if (!sdi || !sdi->driver || !sdi->driver->dev_open)
                return SR_ERR;
 
+       if (sdi->status == SR_ST_ACTIVE) {
+               sr_err("%s: Device instance already active, can't re-open.",
+                       sdi->driver->name);
+               return SR_ERR;
+       }
+
+       sr_dbg("%s: Opening device.", sdi->driver->name)
+
        ret = sdi->driver->dev_open(sdi);
 
        return ret;
@@ -581,6 +589,14 @@ SR_API int sr_dev_close(struct sr_dev_inst *sdi)
        if (!sdi || !sdi->driver || !sdi->driver->dev_close)
                return SR_ERR;
 
+       if (sdi->status != SR_ST_ACTIVE) {
+               sr_err("%s: Device instance not active, can't close.",
+                       sdi->driver->name);
+               return SR_ERR_DEV_CLOSED;
+       }
+
+       sr_dbg("%s: Closing device.", sdi->driver->name)
+
        ret = sdi->driver->dev_close(sdi);
 
        return ret;