]> sigrok.org Git - libsigrok.git/blobdiff - hardware/demo/demo.c
drivers: return SR_ERR_NA on unsupported config key
[libsigrok.git] / hardware / demo / demo.c
index d2497d5a4871c69ea0733fb3b7d62ede3c8d5e0c..73fe092727f604423c21afdbd520023cd7eab799 100644 (file)
@@ -172,8 +172,8 @@ static GSList *hw_scan(GSList *options)
 
        sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, DEMONAME, NULL, NULL);
        if (!sdi) {
-               sr_err("%s: sr_dev_inst_new failed", __func__);
-               return 0;
+               sr_err("Device instance creation failed.");
+               return NULL;
        }
        sdi->driver = di;
 
@@ -188,8 +188,8 @@ static GSList *hw_scan(GSList *options)
        drvc->instances = g_slist_append(drvc->instances, sdi);
 
        if (!(devc = g_try_malloc(sizeof(struct dev_context)))) {
-               sr_err("%s: devc malloc failed", __func__);
-               return SR_ERR_MALLOC;
+               sr_err("Device context malloc failed.");
+               return NULL;
        }
 
        devc->sdi = sdi;
@@ -286,7 +286,7 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
                }
                break;
        default:
-               return SR_ERR_ARG;
+               return SR_ERR_NA;
        }
 
        return SR_OK;
@@ -335,7 +335,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
                sr_dbg("%s: setting pattern to %d",
                        __func__, devc->sample_generator);
        } else {
-               ret = SR_ERR;
+               ret = SR_ERR_NA;
        }
 
        return ret;
@@ -364,7 +364,7 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
                *data = g_variant_new_strv(pattern_strings, ARRAY_SIZE(pattern_strings));
                break;
        default:
-               return SR_ERR_ARG;
+               return SR_ERR_NA;
        }
 
        return SR_OK;
@@ -509,6 +509,8 @@ static int hw_dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data)
 
        sr_session_source_remove_channel(devc->channel);
        g_io_channel_shutdown(devc->channel, FALSE, NULL);
+       g_io_channel_unref(devc->channel);
+       devc->channel = NULL;
 
        /* Send last packet. */
        packet.type = SR_DF_END;