X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Falsa%2Falsa.c;h=527a7e5de49fa992521e61360e403475379f2b78;hb=c37d2b1ba12b62d63590509879bf58adf842896d;hp=8624f2eb82b7e6945180f063f9b7b6eee735830c;hpb=92b3101cfc71581a273e667f185b18be0f0c364f;p=libsigrok.git diff --git a/hardware/alsa/alsa.c b/hardware/alsa/alsa.c index 8624f2eb..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; @@ -359,17 +375,17 @@ static void hw_stop_acquisition(int device_index, gpointer session_device_id) } struct sr_device_plugin alsa_plugin_info = { - "alsa", - "ALSA driver", - 1, - hw_init, - hw_cleanup, - hw_opendev, - hw_closedev, - hw_get_device_info, - hw_get_status, - hw_get_capabilities, - hw_set_configuration, - hw_start_acquisition, - hw_stop_acquisition, + .name = "alsa", + .longname = "ALSA driver", + .api_version = 1, + .init = hw_init, + .cleanup = hw_cleanup, + .opendev = hw_opendev, + .closedev = hw_closedev, + .get_device_info = hw_get_device_info, + .get_status = hw_get_status, + .get_capabilities = hw_get_capabilities, + .set_configuration = hw_set_configuration, + .start_acquisition = hw_start_acquisition, + .stop_acquisition = hw_stop_acquisition, };