mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-31 22:25:35 -04:00
Coding style..
This commit is contained in:
parent
d9087a8773
commit
fb1938d29f
6 changed files with 569 additions and 553 deletions
424
test/switches.c
424
test/switches.c
|
|
@ -2,223 +2,229 @@
|
|||
#include <string.h>
|
||||
#include "../include/asoundlib.h"
|
||||
|
||||
const char *get_type( unsigned int type )
|
||||
const char *get_type(unsigned int type)
|
||||
{
|
||||
switch ( type ) {
|
||||
case 0: return "Boolean";
|
||||
case 1: return "Byte";
|
||||
case 2: return "Word";
|
||||
case 3: return "DWord";
|
||||
case 4: return "User";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
switch (type) {
|
||||
case 0:
|
||||
return "Boolean";
|
||||
case 1:
|
||||
return "Byte";
|
||||
case 2:
|
||||
return "Word";
|
||||
case 3:
|
||||
return "DWord";
|
||||
case 4:
|
||||
return "User";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
void main( void )
|
||||
void main(void)
|
||||
{
|
||||
int cards, card, device, direction, idx, count, err;
|
||||
void *handle, *chandle;
|
||||
struct snd_ctl_hw_info info;
|
||||
struct snd_ctl_switch ctl_switch;
|
||||
snd_mixer_switch_t mixer_switch;
|
||||
snd_pcm_info_t pcm_info;
|
||||
snd_pcm_switch_t pcm_switch;
|
||||
snd_rawmidi_switch_t rmidi_switch;
|
||||
snd_rawmidi_info_t rmidi_info;
|
||||
|
||||
cards = snd_cards();
|
||||
printf( "Detected %i soundcard%s...\n", cards, cards > 1 ? "s" : "" );
|
||||
if ( cards <= 0 ) {
|
||||
printf( "Giving up...\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
/* control interface */
|
||||
for ( card = 0; card < cards; card++ ) {
|
||||
if ( (err = snd_ctl_open( &handle, card )) < 0 ) {
|
||||
printf( "CTL open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (err = snd_ctl_hw_info( handle, &info )) < 0 ) {
|
||||
printf( "CTL hw info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (count = snd_ctl_switches( handle )) < 0 ) {
|
||||
printf( "CTL switches error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
for ( idx = 0; idx < count; idx++ ) {
|
||||
if ( (err = snd_ctl_switch_read( handle, idx, &ctl_switch )) < 0 ) {
|
||||
printf( "CTL switch read error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
printf( "CTL switch: '%s' %s (%i-%i)\n", ctl_switch.name, get_type( ctl_switch.type ), ctl_switch.low, ctl_switch.high );
|
||||
if ( (err = snd_ctl_switch_write( handle, idx, &ctl_switch )) < 0 ) {
|
||||
printf( "CTL switch write error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( count <= 0 )
|
||||
printf( "No CTL switches detected for soundcard #%i '%s'...\n", idx, info.name );
|
||||
snd_ctl_close( handle );
|
||||
}
|
||||
int cards, card, device, direction, idx, count, err;
|
||||
void *handle, *chandle;
|
||||
struct snd_ctl_hw_info info;
|
||||
struct snd_ctl_switch ctl_switch;
|
||||
snd_mixer_switch_t mixer_switch;
|
||||
snd_pcm_info_t pcm_info;
|
||||
snd_pcm_switch_t pcm_switch;
|
||||
snd_rawmidi_switch_t rmidi_switch;
|
||||
snd_rawmidi_info_t rmidi_info;
|
||||
|
||||
/* mixer interface */
|
||||
for ( card = 0; card < cards; card++ ) {
|
||||
if ( (err = snd_ctl_open( &handle, card )) < 0 ) {
|
||||
printf( "CTL open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (err = snd_ctl_hw_info( handle, &info )) < 0 ) {
|
||||
printf( "CTL hw info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
snd_ctl_close( handle );
|
||||
for ( device = 0; device < info.mixerdevs; device++ ) {
|
||||
if ( (err = snd_mixer_open( &handle, card, device )) < 0 ) {
|
||||
printf( "Mixer open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (count = snd_mixer_switches( handle )) < 0 ) {
|
||||
printf( "Mixer switches error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
for ( idx = 0; idx < count; idx++ ) {
|
||||
if ( (err = snd_mixer_switch_read( handle, idx, &mixer_switch )) < 0 ) {
|
||||
printf( "Mixer switch read error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
printf( "Mixer switch: '%s' %s (%i-%i)\n", mixer_switch.name, get_type( mixer_switch.type ), mixer_switch.low, mixer_switch.high );
|
||||
if ( (err = snd_mixer_switch_write( handle, idx, &mixer_switch )) < 0 ) {
|
||||
printf( "Mixer switch write error: %s\n", snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( count <= 0 )
|
||||
printf( "No mixer switches detected for soundcard #%i '%s'...\n", idx, info.name );
|
||||
snd_mixer_close( handle );
|
||||
}
|
||||
}
|
||||
cards = snd_cards();
|
||||
printf("Detected %i soundcard%s...\n", cards, cards > 1 ? "s" : "");
|
||||
if (cards <= 0) {
|
||||
printf("Giving up...\n");
|
||||
return;
|
||||
}
|
||||
/* control interface */
|
||||
for (card = 0; card < cards; card++) {
|
||||
if ((err = snd_ctl_open(&handle, card)) < 0) {
|
||||
printf("CTL open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((err = snd_ctl_hw_info(handle, &info)) < 0) {
|
||||
printf("CTL hw info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((count = snd_ctl_switches(handle)) < 0) {
|
||||
printf("CTL switches error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
for (idx = 0; idx < count; idx++) {
|
||||
if ((err = snd_ctl_switch_read(handle, idx, &ctl_switch)) < 0) {
|
||||
printf("CTL switch read error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
printf("CTL switch: '%s' %s (%i-%i)\n", ctl_switch.name, get_type(ctl_switch.type), ctl_switch.low, ctl_switch.high);
|
||||
if ((err = snd_ctl_switch_write(handle, idx, &ctl_switch)) < 0) {
|
||||
printf("CTL switch write error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (count <= 0)
|
||||
printf("No CTL switches detected for soundcard #%i '%s'...\n", idx, info.name);
|
||||
snd_ctl_close(handle);
|
||||
}
|
||||
|
||||
/* pcm switches */
|
||||
for ( card = 0; card < cards; card++ ) {
|
||||
if ( (err = snd_ctl_open( &chandle, card )) < 0 ) {
|
||||
printf( "CTL open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (err = snd_ctl_hw_info( chandle, &info )) < 0 ) {
|
||||
printf( "CTL hw info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
for ( device = 0; device < info.pcmdevs; device++ ) {
|
||||
if ( (err = snd_ctl_pcm_info( chandle, device, &pcm_info )) < 0 ) {
|
||||
printf( "CTL PCM info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
for ( direction = 0; direction < 2; direction++ ) {
|
||||
int (*switches)( void *handle );
|
||||
int (*switch_read)( void *handle, int switchn, snd_pcm_switch_t *data );
|
||||
int (*switch_write)( void *handle, int switchn, snd_pcm_switch_t *data );
|
||||
char *str;
|
||||
/* mixer interface */
|
||||
for (card = 0; card < cards; card++) {
|
||||
if ((err = snd_ctl_open(&handle, card)) < 0) {
|
||||
printf("CTL open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((err = snd_ctl_hw_info(handle, &info)) < 0) {
|
||||
printf("CTL hw info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
snd_ctl_close(handle);
|
||||
for (device = 0; device < info.mixerdevs; device++) {
|
||||
if ((err = snd_mixer_open(&handle, card, device)) < 0) {
|
||||
printf("Mixer open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((count = snd_mixer_switches(handle)) < 0) {
|
||||
printf("Mixer switches error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
for (idx = 0; idx < count; idx++) {
|
||||
if ((err = snd_mixer_switch_read(handle, idx, &mixer_switch)) < 0) {
|
||||
printf("Mixer switch read error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
printf("Mixer switch: '%s' %s (%i-%i)\n", mixer_switch.name, get_type(mixer_switch.type), mixer_switch.low, mixer_switch.high);
|
||||
if ((err = snd_mixer_switch_write(handle, idx, &mixer_switch)) < 0) {
|
||||
printf("Mixer switch write error: %s\n", snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (count <= 0)
|
||||
printf("No mixer switches detected for soundcard #%i '%s'...\n", idx, info.name);
|
||||
snd_mixer_close(handle);
|
||||
}
|
||||
}
|
||||
|
||||
if ( !(pcm_info.flags & (!direction ? SND_PCM_INFO_PLAYBACK : SND_PCM_INFO_RECORD)) ) continue;
|
||||
if ( (err = snd_pcm_open( &handle, card, device, !direction ? SND_PCM_OPEN_PLAYBACK : SND_PCM_OPEN_RECORD )) < 0 ) {
|
||||
printf( "PCM open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( !direction ) {
|
||||
switches = snd_pcm_playback_switches;
|
||||
switch_read = snd_pcm_playback_switch_read;
|
||||
switch_write = snd_pcm_playback_switch_write;
|
||||
str = "playback";
|
||||
} else {
|
||||
switches = snd_pcm_record_switches;
|
||||
switch_read = snd_pcm_record_switch_read;
|
||||
switch_write = snd_pcm_record_switch_write;
|
||||
str = "record";
|
||||
}
|
||||
if ( (count = switches( handle )) < 0 ) {
|
||||
printf( "PCM %s switches error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
for ( idx = 0; idx < count; idx++ ) {
|
||||
if ( (err = switch_read( handle, idx, &pcm_switch )) < 0 ) {
|
||||
printf( "PCM %s switch read error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
printf( "PCM switch: '%s' %s (%i-%i)\n", pcm_switch.name, get_type( pcm_switch.type ), pcm_switch.low, pcm_switch.high );
|
||||
if ( (err = switch_write( handle, idx, &pcm_switch )) < 0 ) {
|
||||
printf( "PCM %s switch write error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( count <= 0 )
|
||||
printf( "No PCM %s switches detected for soundcard #%i/#%i '%s'/'%s'...\n", str, idx, device, info.name, pcm_info.name );
|
||||
snd_pcm_close( handle );
|
||||
}
|
||||
}
|
||||
snd_ctl_close( chandle );
|
||||
}
|
||||
/* pcm switches */
|
||||
for (card = 0; card < cards; card++) {
|
||||
if ((err = snd_ctl_open(&chandle, card)) < 0) {
|
||||
printf("CTL open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((err = snd_ctl_hw_info(chandle, &info)) < 0) {
|
||||
printf("CTL hw info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
for (device = 0; device < info.pcmdevs; device++) {
|
||||
if ((err = snd_ctl_pcm_info(chandle, device, &pcm_info)) < 0) {
|
||||
printf("CTL PCM info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
for (direction = 0; direction < 2; direction++) {
|
||||
int (*switches) (void *handle);
|
||||
int (*switch_read) (void *handle, int switchn, snd_pcm_switch_t * data);
|
||||
int (*switch_write) (void *handle, int switchn, snd_pcm_switch_t * data);
|
||||
char *str;
|
||||
|
||||
/* rawmidi switches */
|
||||
for ( card = 0; card < cards; card++ ) {
|
||||
if ( (err = snd_ctl_open( &chandle, card )) < 0 ) {
|
||||
printf( "CTL open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( (err = snd_ctl_hw_info( chandle, &info )) < 0 ) {
|
||||
printf( "CTL hw info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
for ( device = 0; device < info.mididevs; device++ ) {
|
||||
if ( (err = snd_ctl_rawmidi_info( chandle, device, &rmidi_info )) < 0 ) {
|
||||
printf( "CTL RawMIDI info error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
for ( direction = 0; direction < 2; direction++ ) {
|
||||
int (*switches)( void *handle );
|
||||
int (*switch_read)( void *handle, int switchn, snd_rawmidi_switch_t *data );
|
||||
int (*switch_write)( void *handle, int switchn, snd_rawmidi_switch_t *data );
|
||||
char *str;
|
||||
if (!(pcm_info.flags & (!direction ? SND_PCM_INFO_PLAYBACK : SND_PCM_INFO_RECORD)))
|
||||
continue;
|
||||
if ((err = snd_pcm_open(&handle, card, device, !direction ? SND_PCM_OPEN_PLAYBACK : SND_PCM_OPEN_RECORD)) < 0) {
|
||||
printf("PCM open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if (!direction) {
|
||||
switches = snd_pcm_playback_switches;
|
||||
switch_read = snd_pcm_playback_switch_read;
|
||||
switch_write = snd_pcm_playback_switch_write;
|
||||
str = "playback";
|
||||
} else {
|
||||
switches = snd_pcm_record_switches;
|
||||
switch_read = snd_pcm_record_switch_read;
|
||||
switch_write = snd_pcm_record_switch_write;
|
||||
str = "record";
|
||||
}
|
||||
if ((count = switches(handle)) < 0) {
|
||||
printf("PCM %s switches error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
for (idx = 0; idx < count; idx++) {
|
||||
if ((err = switch_read(handle, idx, &pcm_switch)) < 0) {
|
||||
printf("PCM %s switch read error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
printf("PCM switch: '%s' %s (%i-%i)\n", pcm_switch.name, get_type(pcm_switch.type), pcm_switch.low, pcm_switch.high);
|
||||
if ((err = switch_write(handle, idx, &pcm_switch)) < 0) {
|
||||
printf("PCM %s switch write error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (count <= 0)
|
||||
printf("No PCM %s switches detected for soundcard #%i/#%i '%s'/'%s'...\n", str, idx, device, info.name, pcm_info.name);
|
||||
snd_pcm_close(handle);
|
||||
}
|
||||
}
|
||||
snd_ctl_close(chandle);
|
||||
}
|
||||
|
||||
if ( !(pcm_info.flags & (!direction ? SND_RAWMIDI_INFO_OUTPUT : SND_RAWMIDI_INFO_INPUT)) ) continue;
|
||||
if ( (err = snd_rawmidi_open( &handle, card, device, !direction ? SND_RAWMIDI_OPEN_OUTPUT : SND_RAWMIDI_OPEN_INPUT )) < 0 ) {
|
||||
printf( "RawMIDI CTL open error: %s\n", snd_strerror( err ) );
|
||||
continue;
|
||||
}
|
||||
if ( !direction ) {
|
||||
switches = snd_rawmidi_output_switches;
|
||||
switch_read = snd_rawmidi_output_switch_read;
|
||||
switch_write = snd_rawmidi_output_switch_write;
|
||||
str = "output";
|
||||
} else {
|
||||
switches = snd_rawmidi_input_switches;
|
||||
switch_read = snd_rawmidi_input_switch_read;
|
||||
switch_write = snd_rawmidi_input_switch_write;
|
||||
str = "input";
|
||||
}
|
||||
if ( (count = switches( handle )) < 0 ) {
|
||||
printf( "RawMIDI %s switches error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
for ( idx = 0; idx < count; idx++ ) {
|
||||
if ( (err = switch_read( handle, idx, &rmidi_switch )) < 0 ) {
|
||||
printf( "RawMIDI %s switch read error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
printf( "RawMIDI switch: '%s' %s (%i-%i)\n", rmidi_switch.name, get_type( rmidi_switch.type ), rmidi_switch.low, rmidi_switch.high );
|
||||
if ( (err = switch_write( handle, idx, &rmidi_switch )) < 0 ) {
|
||||
printf( "RawMIDI %s switch write error: %s\n", str, snd_strerror( count ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( count <= 0 )
|
||||
printf( "No RawMIDI %s switches detected for soundcard #%i/#%i '%s'/'%s'...\n", str, idx, device, info.name, rmidi_info.name );
|
||||
snd_rawmidi_close( handle );
|
||||
}
|
||||
}
|
||||
snd_ctl_close( chandle );
|
||||
}
|
||||
/* rawmidi switches */
|
||||
for (card = 0; card < cards; card++) {
|
||||
if ((err = snd_ctl_open(&chandle, card)) < 0) {
|
||||
printf("CTL open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if ((err = snd_ctl_hw_info(chandle, &info)) < 0) {
|
||||
printf("CTL hw info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
for (device = 0; device < info.mididevs; device++) {
|
||||
if ((err = snd_ctl_rawmidi_info(chandle, device, &rmidi_info)) < 0) {
|
||||
printf("CTL RawMIDI info error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
for (direction = 0; direction < 2; direction++) {
|
||||
int (*switches) (void *handle);
|
||||
int (*switch_read) (void *handle, int switchn, snd_rawmidi_switch_t * data);
|
||||
int (*switch_write) (void *handle, int switchn, snd_rawmidi_switch_t * data);
|
||||
char *str;
|
||||
|
||||
if (!(pcm_info.flags & (!direction ? SND_RAWMIDI_INFO_OUTPUT : SND_RAWMIDI_INFO_INPUT)))
|
||||
continue;
|
||||
if ((err = snd_rawmidi_open(&handle, card, device, !direction ? SND_RAWMIDI_OPEN_OUTPUT : SND_RAWMIDI_OPEN_INPUT)) < 0) {
|
||||
printf("RawMIDI CTL open error: %s\n", snd_strerror(err));
|
||||
continue;
|
||||
}
|
||||
if (!direction) {
|
||||
switches = snd_rawmidi_output_switches;
|
||||
switch_read = snd_rawmidi_output_switch_read;
|
||||
switch_write = snd_rawmidi_output_switch_write;
|
||||
str = "output";
|
||||
} else {
|
||||
switches = snd_rawmidi_input_switches;
|
||||
switch_read = snd_rawmidi_input_switch_read;
|
||||
switch_write = snd_rawmidi_input_switch_write;
|
||||
str = "input";
|
||||
}
|
||||
if ((count = switches(handle)) < 0) {
|
||||
printf("RawMIDI %s switches error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
for (idx = 0; idx < count; idx++) {
|
||||
if ((err = switch_read(handle, idx, &rmidi_switch)) < 0) {
|
||||
printf("RawMIDI %s switch read error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
printf("RawMIDI switch: '%s' %s (%i-%i)\n", rmidi_switch.name, get_type(rmidi_switch.type), rmidi_switch.low, rmidi_switch.high);
|
||||
if ((err = switch_write(handle, idx, &rmidi_switch)) < 0) {
|
||||
printf("RawMIDI %s switch write error: %s\n", str, snd_strerror(count));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (count <= 0)
|
||||
printf("No RawMIDI %s switches detected for soundcard #%i/#%i '%s'/'%s'...\n", str, idx, device, info.name, rmidi_info.name);
|
||||
snd_rawmidi_close(handle);
|
||||
}
|
||||
}
|
||||
snd_ctl_close(chandle);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue