]> sigrok.org Git - libsigrok.git/blobdiff - hardware/demo/demo.c
Drop some lines that are no longer needed.
[libsigrok.git] / hardware / demo / demo.c
index 1bd870d849b09e3ddce0d659340ec8fdc9acacda..9807edefe47d2501af17d217ad78550ff5520839 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
  *
  * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
  * Copyright (C) 2011 Olivier Fauchon <olivier@aixmarseille.com>
 #include "libsigrok.h"
 #include "libsigrok-internal.h"
 
-/* Message logging helpers with driver-specific prefix string. */
-#define DRIVER_LOG_DOMAIN "demo: "
-#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args)
-#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args)
-#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args)
+/* Message logging helpers with subsystem-specific prefix string. */
+#define LOG_PREFIX "demo: "
+#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args)
+#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args)
+#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args)
+#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args)
+#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args)
+#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args)
 
 /* TODO: Number of probes should be configurable. */
 #define NUM_PROBES             8
@@ -152,7 +152,7 @@ static int clear_instances(void)
 
 static int hw_init(struct sr_context *sr_ctx)
 {
-       return std_hw_init(sr_ctx, di, DRIVER_LOG_DOMAIN);
+       return std_hw_init(sr_ctx, di, LOG_PREFIX);
 }
 
 static GSList *hw_scan(GSList *options)
@@ -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;
@@ -210,18 +210,14 @@ static GSList *hw_dev_list(void)
 
 static int hw_dev_open(struct sr_dev_inst *sdi)
 {
-       (void)sdi;
-
-       /* Nothing needed so far. */
+       sdi->status = SR_ST_ACTIVE;
 
        return SR_OK;
 }
 
 static int hw_dev_close(struct sr_dev_inst *sdi)
 {
-       (void)sdi;
-
-       /* Nothing needed so far. */
+       sdi->status = SR_ST_INACTIVE;
 
        return SR_OK;
 }
@@ -286,7 +282,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;
@@ -299,6 +295,9 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
 
        struct dev_context *const devc = sdi->priv;
 
+       if (sdi->status != SR_ST_ACTIVE)
+               return SR_ERR_DEV_CLOSED;
+
        if (id == SR_CONF_SAMPLERATE) {
                devc->cur_samplerate = g_variant_get_uint64(data);
                sr_dbg("%s: setting samplerate to %" PRIu64, __func__,
@@ -335,7 +334,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 +363,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;
@@ -460,6 +459,9 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
 {
        struct dev_context *const devc = sdi->priv;
 
+       if (sdi->status != SR_ST_ACTIVE)
+               return SR_ERR_DEV_CLOSED;
+
        devc->cb_data = cb_data;
        devc->samples_counter = 0;
 
@@ -490,7 +492,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
                    40, receive_data, devc);
 
        /* Send header packet to the session bus. */
-       std_session_send_df_header(cb_data, DRIVER_LOG_DOMAIN);
+       std_session_send_df_header(cb_data, LOG_PREFIX);
 
        /* We use this timestamp to decide how many more samples to send. */
        devc->starttime = g_get_monotonic_time();