X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Falsa%2Falsa.c;h=b6dd66c4ca0a92405bb2649a72dbdd397d1c167e;hb=341ce41545cab2bda88230c8434f36c64eadd8a1;hp=3fa72a8c399dc11965fb5835d908ad15c9dddda1;hpb=ca070ed9a0237e5cea10e5dd974e06da62de890d;p=libsigrok.git diff --git a/hardware/alsa/alsa.c b/hardware/alsa/alsa.c index 3fa72a8c..b6dd66c4 100644 --- a/hardware/alsa/alsa.c +++ b/hardware/alsa/alsa.c @@ -77,7 +77,7 @@ static int hw_init(const char *deviceinfo) return 0; } - sdi = sr_device_instance_new(0, SR_ST_ACTIVE, "alsa", NULL, NULL); + sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, "alsa", NULL, NULL); if (!sdi) goto free_alsa; @@ -97,29 +97,29 @@ static int hw_opendev(int device_index) struct alsa *alsa; int err; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_dev_inst_get(device_instances, device_index))) return SR_ERR; alsa = sdi->priv; err = snd_pcm_open(&alsa->capture_handle, AUDIO_DEV, SND_PCM_STREAM_CAPTURE, 0); if (err < 0) { - sr_warn("cannot open audio device %s (%s)", AUDIO_DEV, - snd_strerror(err)); + sr_err("cannot open audio device %s (%s)", AUDIO_DEV, + snd_strerror(err)); return SR_ERR; } err = snd_pcm_hw_params_malloc(&alsa->hw_params); if (err < 0) { - sr_warn("cannot allocate hardware parameter structure (%s)", - snd_strerror(err)); + sr_err("cannot allocate hardware parameter structure (%s)", + snd_strerror(err)); return SR_ERR; } err = snd_pcm_hw_params_any(alsa->capture_handle, alsa->hw_params); if (err < 0) { - sr_warn("cannot initialize hardware parameter structure (%s)", - snd_strerror(err)); + sr_err("cannot initialize hardware parameter structure (%s)", + snd_strerror(err)); return SR_ERR; } @@ -131,7 +131,7 @@ static int hw_closedev(int device_index) struct sr_device_instance *sdi; struct alsa *alsa; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) { + if (!(sdi = sr_dev_inst_get(device_instances, device_index))) { sr_err("alsa: %s: sdi was NULL", __func__); return SR_ERR; /* TODO: SR_ERR_ARG? */ } @@ -150,15 +150,18 @@ static int hw_closedev(int device_index) return SR_OK; } -static void hw_cleanup(void) +static int hw_cleanup(void) { struct sr_device_instance *sdi; - if (!(sdi = sr_get_device_instance(device_instances, 0))) - return; + if (!(sdi = sr_dev_inst_get(device_instances, 0))) { + sr_err("alsa: %s: sdi was NULL", __func__); + return SR_ERR_BUG; + } + + sr_dev_inst_free(sdi); - free(sdi->priv); - sr_device_instance_free(sdi); + return SR_OK; } static void *hw_get_device_info(int device_index, int device_info_id) @@ -167,7 +170,7 @@ static void *hw_get_device_info(int device_index, int device_info_id) struct alsa *alsa; void *info = NULL; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_dev_inst_get(device_instances, device_index))) return NULL; alsa = sdi->priv; @@ -210,7 +213,7 @@ static int hw_set_configuration(int device_index, int capability, void *value) struct sr_device_instance *sdi; struct alsa *alsa; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_dev_inst_get(device_instances, device_index))) return SR_ERR; alsa = sdi->priv; @@ -248,7 +251,7 @@ static int receive_data(int fd, int revents, void *user_data) count = snd_pcm_readi(alsa->capture_handle, inb, MIN(4096/4, alsa->limit_samples)); if (count < 1) { - sr_warn("Failed to read samples"); + sr_err("Failed to read samples"); return FALSE; } @@ -296,14 +299,14 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) int count; int err; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_dev_inst_get(device_instances, device_index))) return SR_ERR; alsa = sdi->priv; err = snd_pcm_hw_params_set_access(alsa->capture_handle, alsa->hw_params, SND_PCM_ACCESS_RW_INTERLEAVED); if (err < 0) { - sr_warn("cannot set access type (%s)", snd_strerror(err)); + sr_err("cannot set access type (%s)", snd_strerror(err)); return SR_ERR; } @@ -311,52 +314,52 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) err = snd_pcm_hw_params_set_format(alsa->capture_handle, alsa->hw_params, SND_PCM_FORMAT_S16_LE); if (err < 0) { - sr_warn("cannot set sample format (%s)", snd_strerror(err)); + sr_err("cannot set sample format (%s)", snd_strerror(err)); return SR_ERR; } err = snd_pcm_hw_params_set_rate_near(alsa->capture_handle, alsa->hw_params, (unsigned int *) &alsa->cur_rate, 0); if (err < 0) { - sr_warn("cannot set sample rate (%s)", snd_strerror(err)); + sr_err("cannot set sample rate (%s)", snd_strerror(err)); return SR_ERR; } err = snd_pcm_hw_params_set_channels(alsa->capture_handle, alsa->hw_params, NUM_PROBES); if (err < 0) { - sr_warn("cannot set channel count (%s)", snd_strerror(err)); + sr_err("cannot set channel count (%s)", snd_strerror(err)); return SR_ERR; } err = snd_pcm_hw_params(alsa->capture_handle, alsa->hw_params); if (err < 0) { - sr_warn("cannot set parameters (%s)", snd_strerror(err)); + sr_err("cannot set parameters (%s)", snd_strerror(err)); return SR_ERR; } err = snd_pcm_prepare(alsa->capture_handle); if (err < 0) { - sr_warn("cannot prepare audio interface for use (%s)", - snd_strerror(err)); + sr_err("cannot prepare audio interface for use (%s)", + snd_strerror(err)); return SR_ERR; } count = snd_pcm_poll_descriptors_count(alsa->capture_handle); if (count < 1) { - sr_warn("Unable to obtain poll descriptors count"); + sr_err("Unable to obtain poll descriptors count"); return SR_ERR; } if (!(ufds = g_try_malloc(count * sizeof(struct pollfd)))) { - sr_warn("alsa: %s: ufds malloc failed", __func__); + sr_err("alsa: %s: ufds malloc failed", __func__); return SR_ERR_MALLOC; } err = snd_pcm_poll_descriptors(alsa->capture_handle, ufds, count); if (err < 0) { - sr_warn("Unable to obtain poll descriptors (%s)", - snd_strerror(err)); + sr_err("Unable to obtain poll descriptors (%s)", + snd_strerror(err)); g_free(ufds); return SR_ERR; } @@ -379,11 +382,13 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) return SR_OK; } -static void hw_stop_acquisition(int device_index, gpointer session_device_id) +static int hw_stop_acquisition(int device_index, gpointer session_device_id) { /* Avoid compiler warnings. */ device_index = device_index; session_device_id = session_device_id; + + return SR_OK; } SR_PRIV struct sr_device_plugin alsa_plugin_info = {