]> sigrok.org Git - libsigrok.git/blobdiff - src/device.c
Accept subtype of expected GVariant values.
[libsigrok.git] / src / device.c
index ced46fa120fc665d58e672be109227c8b6c02ca0..f3a76ac269b9a67a7f0f765a8e509d4138736663 100644 (file)
@@ -247,6 +247,7 @@ SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int status,
 SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
 {
        struct sr_channel *ch;
+       struct sr_channel_group *cg;
        GSList *l;
 
        for (l = sdi->channels; l; l = l->next) {
@@ -257,8 +258,11 @@ SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
        }
        g_slist_free(sdi->channels);
 
-       if (sdi->channel_groups)
-               g_slist_free(sdi->channel_groups);
+       for (l = sdi->channel_groups; l; l = l->next) {
+               cg = l->data;
+               g_free(cg->priv);
+       }
+       g_slist_free(sdi->channel_groups);
 
        g_free(sdi->vendor);
        g_free(sdi->model);
@@ -570,6 +574,18 @@ SR_API const char *sr_dev_inst_connid_get(struct sr_dev_inst *sdi)
        if (!sdi)
                return NULL;
 
+       #ifdef HAVE_LIBSERIALPORT
+       struct sr_serial_dev_inst *serial;
+
+       if ((!sdi->connection_id) && (sdi->inst_type == SR_INST_SERIAL)) {
+               /* connection_id isn't populated, let's do that here. */
+
+               serial = sdi->conn;
+               sdi->connection_id = g_strdup(serial->port);
+       }
+       #endif
+
+
        if ((!sdi->connection_id) && (sdi->inst_type == SR_INST_USB)) {
                /* connection_id isn't populated, let's do that here. */