X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=hardware%2Falsa%2Falsa.c;h=527a7e5de49fa992521e61360e403475379f2b78;hb=5e59cfbfc736aab9e79caef4ab6bdcbc500e254f;hp=f567e43aeb16ad8233fc3eccab0c66cc70a5476c;hpb=e519ba8645b56f6c9eaaf69d6357a1efa8df501e;p=libsigrok.git diff --git a/hardware/alsa/alsa.c b/hardware/alsa/alsa.c index f567e43a..527a7e5d 100644 --- a/hardware/alsa/alsa.c +++ b/hardware/alsa/alsa.c @@ -22,9 +22,9 @@ #include #include #include -#include -#include #include +#include "sigrok.h" +#include "sigrok-internal.h" #define NUM_PROBES 2 #define SAMPLE_WIDTH 16 @@ -36,6 +36,12 @@ static int capabilities[] = { SR_HWCAP_CONTINUOUS, }; +static const char *probe_names[NUM_PROBES + 1] = { + "0", + "1", + NULL, +}; + static GSList *device_instances = NULL; struct alsa { @@ -108,21 +114,28 @@ static int hw_opendev(int device_index) return SR_OK; } -static void hw_closedev(int device_index) +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))) - return; - alsa = sdi->priv; - if (!alsa) - return; + if (!(sdi = sr_get_device_instance(device_instances, device_index))) { + sr_err("alsa: %s: sdi was NULL", __func__); + return SR_ERR; /* TODO: SR_ERR_ARG? */ + } + + if (!(alsa = sdi->priv)) { + sr_err("alsa: %s: sdi->priv was NULL", __func__); + return SR_ERR; /* TODO: SR_ERR_ARG? */ + } + // TODO: Return values of snd_*? if (alsa->hw_params) snd_pcm_hw_params_free(alsa->hw_params); if (alsa->capture_handle) snd_pcm_close(alsa->capture_handle); + + return SR_OK; } static void hw_cleanup(void) @@ -153,6 +166,9 @@ static void *hw_get_device_info(int device_index, int device_info_id) case SR_DI_NUM_PROBES: info = GINT_TO_POINTER(NUM_PROBES); break; + case SR_DI_PROBE_NAMES: + info = probe_names; + break; case SR_DI_CUR_SAMPLERATE: info = &alsa->cur_rate; break; @@ -364,8 +380,8 @@ struct sr_device_plugin alsa_plugin_info = { .api_version = 1, .init = hw_init, .cleanup = hw_cleanup, - .open = hw_opendev, - .close = hw_closedev, + .opendev = hw_opendev, + .closedev = hw_closedev, .get_device_info = hw_get_device_info, .get_status = hw_get_status, .get_capabilities = hw_get_capabilities,