Home | History | Annotate | Download | only in test
      1 #include <stdio.h>
      2 #include <string.h>
      3 #include "../include/asoundlib.h"
      4 
      5 int main(void)
      6 {
      7 	int idx, dev, err;
      8 	snd_ctl_t *handle;
      9 	snd_ctl_card_info_t *info;
     10 	snd_pcm_info_t *pcminfo;
     11 	snd_rawmidi_info_t *rawmidiinfo;
     12 	char str[128];
     13 
     14 	snd_ctl_card_info_alloca(&info);
     15 	snd_pcm_info_alloca(&pcminfo);
     16 	snd_rawmidi_info_alloca(&rawmidiinfo);
     17 
     18 	idx = -1;
     19 	while (1) {
     20 		if ((err = snd_card_next(&idx)) < 0) {
     21 			printf("Card next error: %s\n", snd_strerror(err));
     22 			break;
     23 		}
     24 		if (idx < 0)
     25 			break;
     26 		sprintf(str, "hw:CARD=%i", idx);
     27 		if ((err = snd_ctl_open(&handle, str, 0)) < 0) {
     28 			printf("Open error: %s\n", snd_strerror(err));
     29 			continue;
     30 		}
     31 		if ((err = snd_ctl_card_info(handle, info)) < 0) {
     32 			printf("HW info error: %s\n", snd_strerror(err));
     33 			continue;
     34 		}
     35 		printf("Soundcard #%i:\n", idx + 1);
     36 		printf("  card - %i\n", snd_ctl_card_info_get_card(info));
     37 		printf("  id - '%s'\n", snd_ctl_card_info_get_id(info));
     38 		printf("  driver - '%s'\n", snd_ctl_card_info_get_driver(info));
     39 		printf("  name - '%s'\n", snd_ctl_card_info_get_name(info));
     40 		printf("  longname - '%s'\n", snd_ctl_card_info_get_longname(info));
     41 		printf("  mixername - '%s'\n", snd_ctl_card_info_get_mixername(info));
     42 		printf("  components - '%s'\n", snd_ctl_card_info_get_components(info));
     43 		dev = -1;
     44 		while (1) {
     45 			snd_pcm_sync_id_t sync;
     46 			if ((err = snd_ctl_pcm_next_device(handle, &dev)) < 0) {
     47 				printf("  PCM next device error: %s\n", snd_strerror(err));
     48 				break;
     49 			}
     50 			if (dev < 0)
     51 				break;
     52 			snd_pcm_info_set_device(pcminfo, dev);
     53 			snd_pcm_info_set_subdevice(pcminfo, 0);
     54 			snd_pcm_info_set_stream(pcminfo, SND_PCM_STREAM_PLAYBACK);
     55 			if ((err = snd_ctl_pcm_info(handle, pcminfo)) < 0) {
     56 				printf("  PCM info error: %s\n", snd_strerror(err));
     57 				continue;
     58 			}
     59 			printf("PCM info, device #%i:\n", dev);
     60 			printf("  device - %i\n", snd_pcm_info_get_device(pcminfo));
     61 			printf("  subdevice - %i\n", snd_pcm_info_get_subdevice(pcminfo));
     62 			printf("  stream - %i\n", snd_pcm_info_get_stream(pcminfo));
     63 			printf("  card - %i\n", snd_pcm_info_get_card(pcminfo));
     64 			printf("  id - '%s'\n", snd_pcm_info_get_id(pcminfo));
     65 			printf("  name - '%s'\n", snd_pcm_info_get_name(pcminfo));
     66 			printf("  subdevice name - '%s'\n", snd_pcm_info_get_subdevice_name(pcminfo));
     67 			printf("  class - 0x%x\n", snd_pcm_info_get_class(pcminfo));
     68 			printf("  subclass - 0x%x\n", snd_pcm_info_get_subclass(pcminfo));
     69 			printf("  subdevices count - %i\n", snd_pcm_info_get_subdevices_count(pcminfo));
     70 			printf("  subdevices avail - %i\n", snd_pcm_info_get_subdevices_avail(pcminfo));
     71 			sync = snd_pcm_info_get_sync(pcminfo);
     72 			printf("  sync - 0x%x,0x%x,0x%x,0x%x\n", sync.id32[0], sync.id32[1], sync.id32[2], sync.id32[3]);
     73 		}
     74 		dev = -1;
     75 		while (1) {
     76 			if ((err = snd_ctl_rawmidi_next_device(handle, &dev)) < 0) {
     77 				printf("  RAWMIDI next device error: %s\n", snd_strerror(err));
     78 				break;
     79 			}
     80 			if (dev < 0)
     81 				break;
     82 			snd_rawmidi_info_set_device(rawmidiinfo, dev);
     83 			snd_rawmidi_info_set_subdevice(rawmidiinfo, 0);
     84 			snd_rawmidi_info_set_stream(rawmidiinfo, SND_RAWMIDI_STREAM_OUTPUT);
     85 			if ((err = snd_ctl_rawmidi_info(handle, rawmidiinfo)) < 0) {
     86 				printf("  RAWMIDI info error: %s\n", snd_strerror(err));
     87 				continue;
     88 			}
     89 			printf("RAWMIDI info, device #%i:\n", dev);
     90 			printf("  device - %i\n", snd_rawmidi_info_get_device(rawmidiinfo));
     91 			printf("  subdevice - %i\n", snd_rawmidi_info_get_subdevice(rawmidiinfo));
     92 			printf("  stream - %i\n", snd_rawmidi_info_get_stream(rawmidiinfo));
     93 			printf("  card - %i\n", snd_rawmidi_info_get_card(rawmidiinfo));
     94 			printf("  flags - 0x%x\n", snd_rawmidi_info_get_flags(rawmidiinfo));
     95 			printf("  id - '%s'\n", snd_rawmidi_info_get_id(rawmidiinfo));
     96 			printf("  name - '%s'\n", snd_rawmidi_info_get_name(rawmidiinfo));
     97 			printf("  subname - '%s'\n", snd_rawmidi_info_get_subdevice_name(rawmidiinfo));
     98 			printf("  subdevices count - %i\n", snd_rawmidi_info_get_subdevices_count(rawmidiinfo));
     99 			printf("  subdevices avail - %i\n", snd_rawmidi_info_get_subdevices_avail(rawmidiinfo));
    100 		}
    101 		snd_ctl_close(handle);
    102 	}
    103 
    104 	snd_config_update_free_global();
    105 	return 0;
    106 }
    107