alsa: Use message logging helpers.
This commit is contained in:
parent
a0a23863da
commit
472bbb464b
|
@ -27,6 +27,15 @@
|
||||||
#include "libsigrok.h"
|
#include "libsigrok.h"
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
|
||||||
|
/* Message logging helpers with driver-specific prefix string. */
|
||||||
|
#define DRIVER_LOG_DOMAIN "alsa: "
|
||||||
|
#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args)
|
||||||
|
|
||||||
#define NUM_PROBES 2
|
#define NUM_PROBES 2
|
||||||
#define SAMPLE_WIDTH 16
|
#define SAMPLE_WIDTH 16
|
||||||
#define AUDIO_DEV "plughw:0,0"
|
#define AUDIO_DEV "plughw:0,0"
|
||||||
|
@ -74,12 +83,12 @@ static int hw_init(const char *devinfo)
|
||||||
(void)devinfo;
|
(void)devinfo;
|
||||||
|
|
||||||
if (!(ctx = g_try_malloc0(sizeof(struct context)))) {
|
if (!(ctx = g_try_malloc0(sizeof(struct context)))) {
|
||||||
sr_err("alsa: %s: ctx malloc failed", __func__);
|
sr_err("%s: ctx malloc failed", __func__);
|
||||||
return SR_ERR_MALLOC;
|
return SR_ERR_MALLOC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, "alsa", NULL, NULL))) {
|
if (!(sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, "alsa", NULL, NULL))) {
|
||||||
sr_err("alsa: %s: sdi was NULL", __func__);
|
sr_err("%s: sdi was NULL", __func__);
|
||||||
goto free_ctx;
|
goto free_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,22 +116,22 @@ static int hw_dev_open(int dev_index)
|
||||||
ret = snd_pcm_open(&ctx->capture_handle, AUDIO_DEV,
|
ret = snd_pcm_open(&ctx->capture_handle, AUDIO_DEV,
|
||||||
SND_PCM_STREAM_CAPTURE, 0);
|
SND_PCM_STREAM_CAPTURE, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't open audio device %s (%s)", AUDIO_DEV,
|
sr_err("Can't open audio device %s (%s).", AUDIO_DEV,
|
||||||
snd_strerror(ret));
|
snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_hw_params_malloc(&ctx->hw_params);
|
ret = snd_pcm_hw_params_malloc(&ctx->hw_params);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't allocate hardware parameter structure (%s)",
|
sr_err("Can't allocate hardware parameter structure (%s).",
|
||||||
snd_strerror(ret));
|
snd_strerror(ret));
|
||||||
return SR_ERR_MALLOC;
|
return SR_ERR_MALLOC;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_hw_params_any(ctx->capture_handle, ctx->hw_params);
|
ret = snd_pcm_hw_params_any(ctx->capture_handle, ctx->hw_params);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't initialize hardware parameter structure "
|
sr_err("Can't initialize hardware parameter structure (%s)",
|
||||||
"(%s)", snd_strerror(ret));
|
snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,12 +144,12 @@ static int hw_dev_close(int dev_index)
|
||||||
struct context *ctx;
|
struct context *ctx;
|
||||||
|
|
||||||
if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) {
|
if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) {
|
||||||
sr_err("alsa: %s: sdi was NULL", __func__);
|
sr_err("%s: sdi was NULL", __func__);
|
||||||
return SR_ERR_BUG;
|
return SR_ERR_BUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ctx = sdi->priv)) {
|
if (!(ctx = sdi->priv)) {
|
||||||
sr_err("alsa: %s: sdi->priv was NULL", __func__);
|
sr_err("%s: sdi->priv was NULL", __func__);
|
||||||
return SR_ERR_BUG;
|
return SR_ERR_BUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,7 +167,7 @@ static int hw_cleanup(void)
|
||||||
struct sr_dev_inst *sdi;
|
struct sr_dev_inst *sdi;
|
||||||
|
|
||||||
if (!(sdi = sr_dev_inst_get(dev_insts, 0))) {
|
if (!(sdi = sr_dev_inst_get(dev_insts, 0))) {
|
||||||
sr_err("alsa: %s: sdi was NULL", __func__);
|
sr_err("%s: sdi was NULL", __func__);
|
||||||
return SR_ERR_BUG;
|
return SR_ERR_BUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,8 +209,7 @@ static const void *hw_dev_info_get(int dev_index, int dev_info_id)
|
||||||
|
|
||||||
static int hw_dev_status_get(int dev_index)
|
static int hw_dev_status_get(int dev_index)
|
||||||
{
|
{
|
||||||
/* Avoid compiler warnings. */
|
(void)dev_index;
|
||||||
dev_index = dev_index;
|
|
||||||
|
|
||||||
return SR_ST_ACTIVE;
|
return SR_ST_ACTIVE;
|
||||||
}
|
}
|
||||||
|
@ -254,12 +262,12 @@ static int receive_data(int fd, int revents, void *cb_data)
|
||||||
count = snd_pcm_readi(ctx->capture_handle, inb,
|
count = snd_pcm_readi(ctx->capture_handle, inb,
|
||||||
MIN(4096 / 4, ctx->limit_samples));
|
MIN(4096 / 4, ctx->limit_samples));
|
||||||
if (count < 1) {
|
if (count < 1) {
|
||||||
sr_err("alsa: Failed to read samples");
|
sr_err("Failed to read samples");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(outb = g_try_malloc(sample_size * count))) {
|
if (!(outb = g_try_malloc(sample_size * count))) {
|
||||||
sr_err("alsa: %s: outb malloc failed", __func__);
|
sr_err("%s: outb malloc failed", __func__);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +317,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
|
||||||
ret = snd_pcm_hw_params_set_access(ctx->capture_handle,
|
ret = snd_pcm_hw_params_set_access(ctx->capture_handle,
|
||||||
ctx->hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
|
ctx->hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't set access type (%s)", snd_strerror(ret));
|
sr_err("Can't set access type (%s).", snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,51 +325,51 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
|
||||||
ret = snd_pcm_hw_params_set_format(ctx->capture_handle,
|
ret = snd_pcm_hw_params_set_format(ctx->capture_handle,
|
||||||
ctx->hw_params, SND_PCM_FORMAT_S16_LE);
|
ctx->hw_params, SND_PCM_FORMAT_S16_LE);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't set sample format (%s)", snd_strerror(ret));
|
sr_err("Can't set sample format (%s).", snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_hw_params_set_rate_near(ctx->capture_handle,
|
ret = snd_pcm_hw_params_set_rate_near(ctx->capture_handle,
|
||||||
ctx->hw_params, (unsigned int *)&ctx->cur_rate, 0);
|
ctx->hw_params, (unsigned int *)&ctx->cur_rate, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't set sample rate (%s)", snd_strerror(ret));
|
sr_err("Can't set sample rate (%s).", snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_hw_params_set_channels(ctx->capture_handle,
|
ret = snd_pcm_hw_params_set_channels(ctx->capture_handle,
|
||||||
ctx->hw_params, NUM_PROBES);
|
ctx->hw_params, NUM_PROBES);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't set channel count (%s)", snd_strerror(ret));
|
sr_err("Can't set channel count (%s).", snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_hw_params(ctx->capture_handle, ctx->hw_params);
|
ret = snd_pcm_hw_params(ctx->capture_handle, ctx->hw_params);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't set parameters (%s)", snd_strerror(ret));
|
sr_err("Can't set parameters (%s).", snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_prepare(ctx->capture_handle);
|
ret = snd_pcm_prepare(ctx->capture_handle);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: can't prepare audio interface for use (%s)",
|
sr_err("Can't prepare audio interface for use (%s).",
|
||||||
snd_strerror(ret));
|
snd_strerror(ret));
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
count = snd_pcm_poll_descriptors_count(ctx->capture_handle);
|
count = snd_pcm_poll_descriptors_count(ctx->capture_handle);
|
||||||
if (count < 1) {
|
if (count < 1) {
|
||||||
sr_err("alsa: Unable to obtain poll descriptors count");
|
sr_err("Unable to obtain poll descriptors count.");
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ufds = g_try_malloc(count * sizeof(struct pollfd)))) {
|
if (!(ufds = g_try_malloc(count * sizeof(struct pollfd)))) {
|
||||||
sr_err("alsa: %s: ufds malloc failed", __func__);
|
sr_err("%s: ufds malloc failed", __func__);
|
||||||
return SR_ERR_MALLOC;
|
return SR_ERR_MALLOC;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snd_pcm_poll_descriptors(ctx->capture_handle, ufds, count);
|
ret = snd_pcm_poll_descriptors(ctx->capture_handle, ufds, count);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
sr_err("alsa: Unable to obtain poll descriptors (%s)",
|
sr_err("Unable to obtain poll descriptors (%s)",
|
||||||
snd_strerror(ret));
|
snd_strerror(ret));
|
||||||
g_free(ufds);
|
g_free(ufds);
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
|
|
Loading…
Reference in New Issue