mirror of
				https://github.com/alsa-project/alsa-tools.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	Add auto-probing of ice1712 cards
The ice1712 card is probed automatically when no option is given.
This commit is contained in:
		
							parent
							
								
									7ffb186591
								
							
						
					
					
						commit
						a41170e153
					
				
					 1 changed files with 35 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -1972,7 +1972,7 @@ int main(int argc, char **argv)
 | 
			
		|||
	/* Go through gtk initialization */
 | 
			
		||||
        gtk_init(&argc, &argv);
 | 
			
		||||
 | 
			
		||||
	name = "hw:0";
 | 
			
		||||
	name = NULL; /* probe */
 | 
			
		||||
	card_number = 0;
 | 
			
		||||
	input_channels = MAX_INPUT_CHANNELS;
 | 
			
		||||
	output_channels = MAX_OUTPUT_CHANNELS;
 | 
			
		||||
| 
						 | 
				
			
			@ -2055,17 +2055,40 @@ int main(int argc, char **argv)
 | 
			
		|||
		default_profile = argv[optind];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((err = snd_ctl_open(&ctl, name, 0)) < 0) {
 | 
			
		||||
		fprintf(stderr, "snd_ctl_open: %s\n", snd_strerror(err));
 | 
			
		||||
		exit(EXIT_FAILURE);
 | 
			
		||||
	}
 | 
			
		||||
	if ((err = snd_ctl_card_info(ctl, hw_info)) < 0) {
 | 
			
		||||
		fprintf(stderr, "snd_ctl_card_info: %s\n", snd_strerror(err));
 | 
			
		||||
		exit(EXIT_FAILURE);
 | 
			
		||||
	}
 | 
			
		||||
	if (strcmp(snd_ctl_card_info_get_driver(hw_info), "ICE1712")) {
 | 
			
		||||
		fprintf(stderr, "invalid card type (driver is %s)\n", snd_ctl_card_info_get_driver(hw_info));
 | 
			
		||||
		exit(EXIT_FAILURE);
 | 
			
		||||
	if (! name) {
 | 
			
		||||
		/* probe cards */
 | 
			
		||||
		static char cardname[8];
 | 
			
		||||
		/* FIXME: hardcoded max number of cards */
 | 
			
		||||
		for (card_number = 0; card_number < 8; card_number++) {
 | 
			
		||||
			sprintf(cardname, "hw:%d", card_number);
 | 
			
		||||
			if (snd_ctl_open(&ctl, cardname, 0) < 0)
 | 
			
		||||
				continue;
 | 
			
		||||
			if (snd_ctl_card_info(ctl, hw_info) < 0 ||
 | 
			
		||||
			    strcmp(snd_ctl_card_info_get_driver(hw_info), "ICE1712")) {
 | 
			
		||||
				snd_ctl_close(ctl);
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			/* found */
 | 
			
		||||
			name = cardname;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		if (! name) {
 | 
			
		||||
			fprintf(stderr, "No ICE1712 cards found\n");
 | 
			
		||||
			exit(EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if ((err = snd_ctl_open(&ctl, name, 0)) < 0) {
 | 
			
		||||
			fprintf(stderr, "snd_ctl_open: %s\n", snd_strerror(err));
 | 
			
		||||
			exit(EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
		if ((err = snd_ctl_card_info(ctl, hw_info)) < 0) {
 | 
			
		||||
			fprintf(stderr, "snd_ctl_card_info: %s\n", snd_strerror(err));
 | 
			
		||||
			exit(EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
		if (strcmp(snd_ctl_card_info_get_driver(hw_info), "ICE1712")) {
 | 
			
		||||
			fprintf(stderr, "invalid card type (driver is %s)\n", snd_ctl_card_info_get_driver(hw_info));
 | 
			
		||||
			exit(EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	snd_ctl_elem_value_set_interface(val, SND_CTL_ELEM_IFACE_CARD);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue