X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Falsa%2Fapi.c;h=43d9b51b5543484605f11826682f076ad8e4f27e;hb=48535594664cc5d55db428cd8ca5ffba328be05a;hp=39ab74d139480f3e852f7fa44f3e0a4a556c8c94;hpb=aa0dbd683c58c9dd342140a4080d2aa0b95c5bb3;p=libsigrok.git diff --git a/hardware/alsa/api.c b/hardware/alsa/api.c index 39ab74d1..43d9b51b 100644 --- a/hardware/alsa/api.c +++ b/hardware/alsa/api.c @@ -92,6 +92,8 @@ static int hw_dev_open(struct sr_dev_inst *sdi) return SR_ERR; } + sdi->status = SR_ST_ACTIVE; + return SR_OK; } @@ -108,6 +110,7 @@ static int hw_dev_close(struct sr_dev_inst *sdi) sr_err("Failed to close device: %s.", snd_strerror(ret)); devc->capture_handle = NULL; + sdi->status = SR_ST_INACTIVE; } } else { sr_dbg("No capture handle, no need to close audio device."); @@ -133,7 +136,7 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) *data = g_variant_new_uint64(devc->cur_samplerate); break; default: - return SR_ERR_ARG; + return SR_ERR_NA; } return SR_OK; @@ -143,6 +146,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; + devc = sdi->priv; switch (id) { @@ -153,8 +159,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) devc->limit_samples = g_variant_get_uint64(data); break; default: - sr_err("Unknown capability: %d.", id); - return SR_ERR; + return SR_ERR_NA; } return SR_OK; @@ -191,7 +196,7 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) *data = g_variant_builder_end(&gvb); break; default: - return SR_ERR_ARG; + return SR_ERR_NA; } return SR_OK; @@ -204,6 +209,9 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, int count, ret; char *endianness; + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + devc = sdi->priv; devc->cb_data = cb_data; devc->num_samples = 0;