mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-26 02:20:20 -04:00 
			
		
		
		
	- Get rid of unnecessary filename arrays, just take names from wsjt
- Allow input and output audio device to be different. - Make audio buffers static git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@265 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									d2f9680a55
								
							
						
					
					
						commit
						ba8ee7f386
					
				
							
								
								
									
										56
									
								
								start_oss.c
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								start_oss.c
									
									
									
									
									
								
							| @ -12,13 +12,11 @@ | |||||||
| #define FRAMESPERBUFFER 1024 | #define FRAMESPERBUFFER 1024 | ||||||
| #define TIMEOUT 1000L		/* select time out for audio device */ | #define TIMEOUT 1000L		/* select time out for audio device */ | ||||||
| 
 | 
 | ||||||
| char rcv_buf[AUDIOBUFSIZE];	/* XXX grab one from upper app later --db */ | /* XXX probably safer to use a local buffer due to the wsjt threaded nature. */ | ||||||
| char tx_buf[AUDIOBUFSIZE];	/* XXX grab one from upper app later --db */ | static char rcv_buf[AUDIOBUFSIZE];	 | ||||||
|  | static char tx_buf[AUDIOBUFSIZE]; | ||||||
| 
 | 
 | ||||||
| #define DSP "/dev/dsp0.0" | #define MAXDSPNAME 16 | ||||||
| #define MAXDSPNAME sizeof(DSP)+1	/* quick hack --db */ |  | ||||||
| char dsp_in[MAXDSPNAME];		/* Both of these must be same length */ |  | ||||||
| char dsp_out[MAXDSPNAME]; |  | ||||||
| 
 | 
 | ||||||
| extern void decode1_(int *iarg); | extern void decode1_(int *iarg); | ||||||
| void oss_loop(int *iarg); | void oss_loop(int *iarg); | ||||||
| @ -99,29 +97,38 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[], | |||||||
|   if(p != NULL) |   if(p != NULL) | ||||||
|     *p = '\0'; |     *p = '\0'; | ||||||
| 
 | 
 | ||||||
|   /* If there is a '/' in the name assume it is /dev/name */ |   p = strchr(devout_name, ' '); | ||||||
|   p = strchr(devin_name, '/'); |  | ||||||
|   if(p != NULL) |   if(p != NULL) | ||||||
|     snprintf(dsp_in, MAXDSPNAME, "%s", devin_name);	/* assume /dev/... */ |     *p = '\0'; | ||||||
|   else |  | ||||||
|     snprintf(dsp_in, MAXDSPNAME, "/dev/%s", devin_name); |  | ||||||
| 
 | 
 | ||||||
|   dsp_in[MAXDSPNAME] = '\0'; |   data.fd_in = open(devin_name, O_RDONLY, 0); | ||||||
| 
 |  | ||||||
|   data.fd_in = open(dsp_in, O_RDWR, 0); |  | ||||||
| 
 | 
 | ||||||
|   if(data.fd_in < 0) {  |   if(data.fd_in < 0) {  | ||||||
| 	fprintf(stderr, "Cannot open %s for input.\n", dsp_in); | 	fprintf(stderr, "Cannot open %s for input.\n", devin_name); | ||||||
| 	return (-1); | 	return (-1); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   data.fd_out = data.fd_in; |   if (*devout_name == '\0') { | ||||||
|   strncpy(dsp_out, dsp_in, sizeof(dsp_out)); |     close(data.fd_in); | ||||||
|   dsp_out[sizeof(dsp_out)] = '\0'; |     data.fd_in = open(devin_name, O_RDWR, 0); | ||||||
| 
 | 
 | ||||||
|   if(ioctl(data.fd_in, SNDCTL_DSP_SETDUPLEX, 0) < 0) { |     if(data.fd_in < 0) {  | ||||||
|     fprintf(stderr, "Cannot use %s for full duplex.\n", dsp_in); |       fprintf(stderr, "Cannot open %s for input.\n", devin_name); | ||||||
|     return(-1); |       return (-1); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     data.fd_out = data.fd_in; | ||||||
|  |     if(ioctl(data.fd_in, SNDCTL_DSP_SETDUPLEX, 0) < 0) { | ||||||
|  |       fprintf(stderr, "Cannot use %s for full duplex.\n", devin_name); | ||||||
|  |       return(-1); | ||||||
|  |     } | ||||||
|  |   } else { | ||||||
|  |     data.fd_out = open(devin_name, O_WRONLY, 0); | ||||||
|  | 
 | ||||||
|  |     if(data.fd_out < 0) {  | ||||||
|  |       fprintf(stderr, "Cannot open %s for input.\n", devout_name); | ||||||
|  |       return (-1); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   data.Tsec = Tsec; |   data.Tsec = Tsec; | ||||||
| @ -167,8 +174,11 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[], | |||||||
| 
 | 
 | ||||||
|   printf("Audio OSS streams running normally.\n"); |   printf("Audio OSS streams running normally.\n"); | ||||||
|   printf("******************************************************************\n"); |   printf("******************************************************************\n"); | ||||||
|   printf("Opened %s for input.\n", dsp_in); |   printf("Opened %s for input.\n", devin_name); | ||||||
|   printf("Opened %s for output.\n", dsp_out); |   if (*devout_name != '\0') | ||||||
|  |     printf("Opened %s for output.\n", devout_name); | ||||||
|  |   else | ||||||
|  |     printf("Opened %s for output.\n", devin_name); | ||||||
|   printf("Rate set = %d\n", rate); |   printf("Rate set = %d\n", rate); | ||||||
| 
 | 
 | ||||||
|   //  printf("start_threads: creating thread for oss_loop\n");
 |   //  printf("start_threads: creating thread for oss_loop\n");
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user