Changed according to new hctl API

This commit is contained in:
Jaroslav Kysela 2001-02-09 15:38:59 +00:00
parent 3fadc219ee
commit 7346943471

View file

@ -301,7 +301,7 @@ static void show_control_id(snd_ctl_elem_id_t *id)
printf(",subdevice=%i", subdevice); printf(",subdevice=%i", subdevice);
} }
static int show_control(const char *space, snd_ctl_t *handle, static int show_control(const char *space, snd_hctl_t *handle,
snd_ctl_elem_id_t *id, int level) snd_ctl_elem_id_t *id, int level)
{ {
int err; int err;
@ -309,11 +309,11 @@ static int show_control(const char *space, snd_ctl_t *handle,
unsigned int count; unsigned int count;
snd_ctl_elem_type_t type; snd_ctl_elem_type_t type;
snd_ctl_elem_info_t *info; snd_ctl_elem_info_t *info;
snd_ctl_elem_t *control; snd_hctl_elem_t *helem;
snd_ctl_elem_info_alloca(&info); snd_ctl_elem_info_alloca(&info);
snd_ctl_elem_alloca(&control); if ((helem = snd_hctl_find_elem(handle, id)) == NULL)
snd_ctl_elem_info_set_id(info, id); return -EINVAL;
if ((err = snd_ctl_elem_info(handle, info)) < 0) { if ((err = snd_hctl_elem_info(helem, info)) < 0) {
error("Control %s cinfo error: %s\n", card, snd_strerror(err)); error("Control %s cinfo error: %s\n", card, snd_strerror(err));
return err; return err;
} }
@ -338,7 +338,7 @@ static int show_control(const char *space, snd_ctl_t *handle,
printf(",items=%u\n", items); printf(",items=%u\n", items);
for (item = 0; item < items; item++) { for (item = 0; item < items; item++) {
snd_ctl_elem_info_set_item(info, item); snd_ctl_elem_info_set_item(info, item);
if ((err = snd_ctl_elem_info(handle, info)) < 0) { if ((err = snd_hctl_elem_info(helem, info)) < 0) {
error("Control %s element info error: %s\n", card, snd_strerror(err)); error("Control %s element info error: %s\n", card, snd_strerror(err));
return err; return err;
} }
@ -351,8 +351,10 @@ static int show_control(const char *space, snd_ctl_t *handle,
break; break;
} }
if (level & 1) { if (level & 1) {
snd_ctl_elem_set_id(control, id); snd_ctl_elem_t *elem;
if ((err = snd_ctl_elem_read(handle, control)) < 0) { snd_ctl_elem_alloca(&elem);
snd_ctl_elem_set_id(elem, id);
if ((err = snd_hctl_elem_read(helem, elem)) < 0) {
error("Control %s element read error: %s\n", card, snd_strerror(err)); error("Control %s element read error: %s\n", card, snd_strerror(err));
return err; return err;
} }
@ -362,16 +364,16 @@ static int show_control(const char *space, snd_ctl_t *handle,
printf(","); printf(",");
switch (snd_enum_to_int(type)) { switch (snd_enum_to_int(type)) {
case SND_CTL_ELEM_TYPE_BOOLEAN: case SND_CTL_ELEM_TYPE_BOOLEAN:
printf("%s", snd_ctl_elem_get_boolean(control, idx) ? "on" : "off"); printf("%s", snd_ctl_elem_get_boolean(elem, idx) ? "on" : "off");
break; break;
case SND_CTL_ELEM_TYPE_INTEGER: case SND_CTL_ELEM_TYPE_INTEGER:
printf("%li", snd_ctl_elem_get_integer(control, idx)); printf("%li", snd_ctl_elem_get_integer(elem, idx));
break; break;
case SND_CTL_ELEM_TYPE_ENUMERATED: case SND_CTL_ELEM_TYPE_ENUMERATED:
printf("%u", snd_ctl_elem_get_enumerated(control, idx)); printf("%u", snd_ctl_elem_get_enumerated(elem, idx));
break; break;
case SND_CTL_ELEM_TYPE_BYTES: case SND_CTL_ELEM_TYPE_BYTES:
printf("0x%02x", snd_ctl_elem_get_byte(control, idx)); printf("0x%02x", snd_ctl_elem_get_byte(elem, idx));
break; break;
default: default:
printf("?"); printf("?");
@ -386,19 +388,15 @@ static int show_control(const char *space, snd_ctl_t *handle,
static int controls(int level) static int controls(int level)
{ {
int err; int err;
snd_ctl_t *handle; snd_hctl_t *handle;
snd_hctl_elem_t *elem; snd_hctl_elem_t *elem;
snd_ctl_elem_id_t *id; snd_ctl_elem_id_t *id;
snd_ctl_elem_id_alloca(&id); snd_ctl_elem_id_alloca(&id);
if ((err = snd_ctl_open(&handle, card)) < 0) { if ((err = snd_hctl_open(&handle, card)) < 0) {
error("Control %s open error: %s", card, snd_strerror(err)); error("Control %s open error: %s", card, snd_strerror(err));
return err; return err;
} }
if ((err = snd_hctl_build(handle)) < 0) {
error("Control %s hbuild error: %s\n", card, snd_strerror(err));
return err;
}
for (elem = snd_hctl_first_elem(handle); elem; elem = snd_hctl_elem_next(elem)) { for (elem = snd_hctl_first_elem(handle); elem; elem = snd_hctl_elem_next(elem)) {
snd_hctl_elem_get_id(elem, id); snd_hctl_elem_get_id(elem, id);
show_control_id(id); show_control_id(id);
@ -406,7 +404,7 @@ static int controls(int level)
if (level > 0) if (level > 0)
show_control(" ", handle, id, 1); show_control(" ", handle, id, 1);
} }
snd_ctl_close(handle); snd_hctl_close(handle);
return 0; return 0;
} }
@ -733,9 +731,16 @@ static int cset(int argc, char *argv[], int roflag)
return err; return err;
} }
} }
if (!quiet)
show_control(" ", handle, id, 3);
snd_ctl_close(handle); snd_ctl_close(handle);
if (!quiet) {
snd_hctl_t *hctl;
if ((err = snd_hctl_open(&hctl, card)) < 0) {
error("Control %s open error: %s\n", card, snd_strerror(err));
return err;
}
show_control(" ", hctl, id, 3);
snd_hctl_close(hctl);
}
return 0; return 0;
} }
@ -935,7 +940,8 @@ static void events_add(snd_hctl_elem_t *helem)
snd_hctl_elem_set_callback(helem, element_callback); snd_hctl_elem_set_callback(helem, element_callback);
} }
int ctl_callback(snd_ctl_t *ctl, snd_ctl_event_type_t event, int ctl_callback(snd_hctl_t *hctl,
snd_ctl_event_type_t event,
snd_hctl_elem_t *elem) snd_hctl_elem_t *elem)
{ {
switch (event) { switch (event) {
@ -954,19 +960,15 @@ int ctl_callback(snd_ctl_t *ctl, snd_ctl_event_type_t event,
static int events(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED) static int events(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED)
{ {
snd_ctl_t *handle; snd_hctl_t *handle;
snd_hctl_elem_t *helem; snd_hctl_elem_t *helem;
int err; int err;
if ((err = snd_ctl_open(&handle, card)) < 0) { if ((err = snd_hctl_open(&handle, card)) < 0) {
error("Control %s open error: %s\n", card, snd_strerror(err)); error("Control %s open error: %s\n", card, snd_strerror(err));
return err; return err;
} }
snd_hctl_set_callback(handle, ctl_callback); snd_hctl_set_callback(handle, ctl_callback);
if ((err = snd_hctl_build(handle)) < 0) {
error("Control %s hbuild error: %s\n", card, snd_strerror(err));
return err;
}
for (helem = snd_hctl_first_elem(handle); helem; helem = snd_hctl_elem_next(helem)) { for (helem = snd_hctl_first_elem(handle); helem; helem = snd_hctl_elem_next(helem)) {
snd_hctl_elem_set_callback(helem, element_callback); snd_hctl_elem_set_callback(helem, element_callback);
} }
@ -974,7 +976,7 @@ static int events(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED)
while (1) { while (1) {
struct pollfd ctl_poll; struct pollfd ctl_poll;
int res; int res;
ctl_poll.fd = snd_ctl_poll_descriptor(handle); ctl_poll.fd = snd_hctl_poll_descriptor(handle);
ctl_poll.events = POLLIN; ctl_poll.events = POLLIN;
ctl_poll.revents = 0; ctl_poll.revents = 0;
if ((res = poll(&ctl_poll, 1, -1)) > 0) { if ((res = poll(&ctl_poll, 1, -1)) > 0) {
@ -984,7 +986,7 @@ static int events(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED)
printf("%i events processed\n", res); printf("%i events processed\n", res);
} }
} }
snd_ctl_close(handle); snd_hctl_close(handle);
} }
static void sevents_value(snd_mixer_selem_id_t *sid) static void sevents_value(snd_mixer_selem_id_t *sid)