X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fchronovu-la8%2Fapi.c;h=6e5fd5b695638dfc3699516d9e1a43baa87717dc;hb=695d0e1efa819dc98914ce1baec388c8734e98a7;hp=b0dccfeac918a7c46ea2104e824484fb4090766a;hpb=1bec72d2ac388bd78c1c4e573431170c4ed97f8c;p=libsigrok.git diff --git a/hardware/chronovu-la8/api.c b/hardware/chronovu-la8/api.c index b0dccfea..6e5fd5b6 100644 --- a/hardware/chronovu-la8/api.c +++ b/hardware/chronovu-la8/api.c @@ -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 * @@ -28,12 +28,13 @@ 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[] = { @@ -297,7 +298,7 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) return SR_ERR; break; default: - return SR_ERR_ARG; + return SR_ERR_NA; } return SR_OK; @@ -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; @@ -337,10 +341,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) sr_dbg("LIMIT_SAMPLES = %" PRIu64, devc->limit_samples); break; default: - /* Unknown capability, return SR_ERR. */ - sr_err("%s: Unknown capability: %d.", __func__, id); - return SR_ERR; - break; + return SR_ERR_NA; } return SR_OK; @@ -356,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); @@ -372,7 +375,7 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) *data = g_variant_new_string(TRIGGER_TYPE); break; default: - return SR_ERR_ARG; + return SR_ERR_NA; } return SR_OK; @@ -433,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;