mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-28 20:32:28 -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