X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Falsa%2Fapi.c;h=4349bc813196660fc64d4118b4004125806ab798;hb=035a1078fda93cf1da37d19b3a1d95311b99b00f;hp=42f3210469a49a67c263ff534f3246ffb46691d0;hpb=52ba6e05d59d6b2199214aed14330f213e79a593;p=libsigrok.git diff --git a/hardware/alsa/api.c b/hardware/alsa/api.c index 42f32104..4349bc81 100644 --- a/hardware/alsa/api.c +++ b/hardware/alsa/api.c @@ -28,17 +28,12 @@ #include "protocol.h" static const int hwcaps[] = { - SR_HWCAP_SAMPLERATE, - SR_HWCAP_LIMIT_SAMPLES, - SR_HWCAP_CONTINUOUS, + SR_CONF_SAMPLERATE, + SR_CONF_LIMIT_SAMPLES, + SR_CONF_CONTINUOUS, 0, }; -static const char *probe_names[] = { - "Channel 0", "Channel 1", - NULL, -}; - SR_PRIV struct sr_dev_driver alsa_driver_info; static struct sr_dev_driver *di = &alsa_driver_info; @@ -145,24 +140,17 @@ static int hw_cleanup(void) return SR_OK; } -static int hw_info_get(int info_id, const void **data, - const struct sr_dev_inst *sdi) +static int config_get(int id, const void **data, const struct sr_dev_inst *sdi) { struct dev_context *devc; - if (info_id != SR_DI_HWCAPS) /* For SR_DI_HWCAPS sdi will be NULL. */ + if (id != SR_DI_HWCAPS) /* For SR_DI_HWCAPS sdi will be NULL. */ devc = sdi->priv; - switch (info_id) { + switch (id) { case SR_DI_HWCAPS: *data = hwcaps; break; - case SR_DI_NUM_PROBES: - *data = &devc->num_probes; - break; - case SR_DI_PROBE_NAMES: - *data = probe_names; - break; case SR_DI_CUR_SAMPLERATE: *data = &devc->cur_samplerate; break; @@ -174,29 +162,27 @@ static int hw_info_get(int info_id, const void **data, *data = &devc->supp_rates; break; default: - sr_err("Invalid info_id: %d.", info_id); return SR_ERR_ARG; } return SR_OK; } -static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, - const void *value) +static int config_set(int id, const void *value, const struct sr_dev_inst *sdi) { struct dev_context *devc; devc = sdi->priv; - switch (hwcap) { - case SR_HWCAP_SAMPLERATE: + switch (id) { + case SR_CONF_SAMPLERATE: alsa_set_samplerate(sdi, *(const uint64_t *)value); break; - case SR_HWCAP_LIMIT_SAMPLES: + case SR_CONF_LIMIT_SAMPLES: devc->limit_samples = *(const uint64_t *)value; break; default: - sr_err("Unknown capability: %d.", hwcap); + sr_err("Unknown capability: %d.", id); return SR_ERR; } @@ -208,7 +194,6 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, { struct sr_datafeed_packet packet; struct sr_datafeed_header header; - struct sr_datafeed_meta_analog meta; struct dev_context *devc; int count, ret; char *endianness; @@ -282,7 +267,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, return SR_ERR_MALLOC; } - sr_err("Getting %d poll descriptors.", count); + sr_spew("Getting %d poll descriptors.", count); ret = snd_pcm_poll_descriptors(devc->capture_handle, devc->ufds, count); if (ret < 0) { sr_err("Unable to obtain poll descriptors: %s.", @@ -299,13 +284,6 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, gettimeofday(&header.starttime, NULL); sr_session_send(devc->cb_data, &packet); - /* Send metadata about the SR_DF_ANALOG packets to come. */ - sr_dbg("Sending SR_DF_META_ANALOG packet."); - packet.type = SR_DF_META_ANALOG; - packet.payload = &meta; - meta.num_probes = devc->num_probes; - sr_session_send(devc->cb_data, &packet); - /* Poll every 10ms, or whenever some data comes in. */ sr_source_add(devc->ufds[0].fd, devc->ufds[0].events, 10, alsa_receive_data, (void *)sdi); @@ -342,10 +320,10 @@ SR_PRIV struct sr_dev_driver alsa_driver_info = { .scan = hw_scan, .dev_list = hw_dev_list, .dev_clear = clear_instances, + .config_get = config_get, + .config_set = config_set, .dev_open = hw_dev_open, .dev_close = hw_dev_close, - .info_get = hw_info_get, - .dev_config_set = hw_dev_config_set, .dev_acquisition_start = hw_dev_acquisition_start, .dev_acquisition_stop = hw_dev_acquisition_stop, .priv = NULL,