]> sigrok.org Git - libsigrok.git/blobdiff - hardware/chronovu-la8/api.c
Enforce open device before config_set()/dev_acquisition_start()
[libsigrok.git] / hardware / chronovu-la8 / api.c
index 53acf0b809386654184717fc35116240ae6edf7f..6e5fd5b695638dfc3699516d9e1a43baa87717dc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
  *
  * Copyright (C) 2011-2012 Uwe Hermann <uwe@hermann-uwe.de>
  *
 SR_PRIV struct sr_dev_driver chronovu_la8_driver_info;
 static struct sr_dev_driver *di = &chronovu_la8_driver_info;
 
-/* This will be initialized via config_list()/SR_CONF_SAMPLERATE.
+/*
+ * This will be initialized via config_list()/SR_CONF_SAMPLERATE.
  *
  * Min: 1 sample per 0.01us -> sample time is 0.084s, samplerate 100MHz
  * Max: 1 sample per 2.55us -> sample time is 21.391s, samplerate 392.15kHz
  */
-SR_PRIV uint64_t chronovu_la8_samplerates[255 + 1] = { 0 };
+SR_PRIV uint64_t chronovu_la8_samplerates[255] = { 0 };
 
 /* Note: Continuous sampling is not supported by the hardware. */
 SR_PRIV const int32_t chronovu_la8_hwcaps[] = {
@@ -307,6 +308,9 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
 
+       if (sdi->status != SR_ST_ACTIVE)
+               return SR_ERR_DEV_CLOSED;
+
        if (!(devc = sdi->priv)) {
                sr_err("%s: sdi->priv was NULL.", __func__);
                return SR_ERR_BUG;
@@ -353,14 +357,16 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
-                               chronovu_la8_hwcaps, ARRAY_SIZE(chronovu_la8_hwcaps),
+                               chronovu_la8_hwcaps,
+                               ARRAY_SIZE(chronovu_la8_hwcaps),
                                sizeof(int32_t));
                break;
        case SR_CONF_SAMPLERATE:
                fill_supported_samplerates_if_needed();
                g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}"));
                gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"),
-                               chronovu_la8_samplerates, ARRAY_SIZE(chronovu_la8_samplerates),
+                               chronovu_la8_samplerates,
+                               ARRAY_SIZE(chronovu_la8_samplerates),
                                sizeof(uint64_t));
                g_variant_builder_add(&gvb, "{sv}", "samplerates", gvar);
                *data = g_variant_builder_end(&gvb);
@@ -430,6 +436,9 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
        uint8_t buf[4];
        int bytes_written;
 
+       if (sdi->status != SR_ST_ACTIVE)
+               return SR_ERR_DEV_CLOSED;
+
        if (!(devc = sdi->priv)) {
                sr_err("%s: sdi->priv was NULL.", __func__);
                return SR_ERR_BUG;