mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	- Initial changes to add string names of audio devices/PTT ports
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@164 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									f9ea0f6c43
								
							
						
					
					
						commit
						c7938b6db6
					
				@ -70,7 +70,7 @@ subroutine audio_init(ndin,ndout)
 | 
			
		||||
!  print*,'Audio INIT called.'
 | 
			
		||||
  ierr=start_threads(ndevin,ndevout,y1,y2,nmax,iwrite,iwave,nwave,    &
 | 
			
		||||
       11025,NSPB,TRPeriod,TxOK,ndebug,Transmitting,            &
 | 
			
		||||
       Tsec,ngo,nmode,tbuf,ibuf,ndsec)
 | 
			
		||||
       Tsec,ngo,nmode,tbuf,ibuf,ndsec,PttPort,devin_name,devout_name)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -40,12 +40,13 @@ integer nx             !x coordinate for waterfall pixmap       GUI
 | 
			
		||||
integer mfsample       !Measured sample rate, input             SoundIn
 | 
			
		||||
integer mfsample2      !Measured sample rate, output            SoundOut
 | 
			
		||||
integer ns0            !Time at last ALL.TXT date entry         Decoder
 | 
			
		||||
character*12 devin_name,devout_name ! GUI
 | 
			
		||||
 | 
			
		||||
common/gcom1/Tbuf(1024),ntrbuf(1024),Tsec,rxdelay,txdelay,              &
 | 
			
		||||
     samfacin,samfacout,txsnrdb,y1(NRXMAX),y2(NRXMAX),                  &
 | 
			
		||||
     nmax,iwrite,iread,iwave(NTXMAX),nwave,TxOK,Receiving,Transmitting, &
 | 
			
		||||
     TxFirst,TRPeriod,ibuf,ibuf0,ave,rms,ngo,level,mute,newdat,ndsec,   &
 | 
			
		||||
     ndevin,ndevout,nx,mfsample,mfsample2,ns0
 | 
			
		||||
     ndevin,ndevout,nx,mfsample,mfsample2,ns0,devin_name,devout_name
 | 
			
		||||
 | 
			
		||||
!### volatile /gcom1/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -79,6 +79,7 @@ character*24 decodedfile
 | 
			
		||||
character*80 AppDir      !WSJT installation directory           GUI
 | 
			
		||||
character*80 filetokilla !Filenames (full path)                 Decoder
 | 
			
		||||
character*80 filetokillb
 | 
			
		||||
character*12 pttport
 | 
			
		||||
 | 
			
		||||
common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540),             &
 | 
			
		||||
     green(500),ngreen,dgain,iter,ndecoding,ndecoding0,mousebutton,   &
 | 
			
		||||
@ -90,6 +91,6 @@ common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540),             &
 | 
			
		||||
     idinterval,msmax,lenappdir,ndiskdat,nlines,nflat,ntxreq,ntxnow,  &
 | 
			
		||||
     ndepth,nspecial,ndf,ss1(-224:224),ss2(-224:224),                 &
 | 
			
		||||
     mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea,         &
 | 
			
		||||
     fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate
 | 
			
		||||
     fnameb,decodedfile,AppDir,filetokilla,filetokillb,utcdate,pttport
 | 
			
		||||
 | 
			
		||||
!### volatile /gcom2/
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								options.py
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								options.py
									
									
									
									
									
								
							@ -25,8 +25,11 @@ MyGrid=StringVar()
 | 
			
		||||
#TxDelay=StringVar()
 | 
			
		||||
IDinterval=IntVar()
 | 
			
		||||
ComPort=IntVar()
 | 
			
		||||
PttPort=StringVar()
 | 
			
		||||
ndevin=IntVar()
 | 
			
		||||
ndevout=IntVar()
 | 
			
		||||
DevinName=StringVar()
 | 
			
		||||
DevoutName=StringVar()
 | 
			
		||||
samfacin=DoubleVar()
 | 
			
		||||
samfacout=DoubleVar()
 | 
			
		||||
Template1=StringVar()
 | 
			
		||||
@ -106,12 +109,12 @@ mygrid=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Grid Locator:',
 | 
			
		||||
##        value='0.2',entry_textvariable=TxDelay)
 | 
			
		||||
idinterval=Pmw.EntryField(g1.interior(),labelpos=W,label_text='ID Interval (m):',
 | 
			
		||||
        value=10,entry_textvariable=IDinterval,entry_width=12)
 | 
			
		||||
comport=Pmw.EntryField(g1.interior(),labelpos=W,label_text='COM Port:',
 | 
			
		||||
        value=1,entry_textvariable=ComPort,entry_width=12)
 | 
			
		||||
comport=Pmw.EntryField(g1.interior(),labelpos=W,label_text='PTT Port:',
 | 
			
		||||
        value='1',entry_textvariable=PttPort,entry_width=12)
 | 
			
		||||
audioin=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio In:',
 | 
			
		||||
        value=0,entry_textvariable=ndevin,entry_width=12)
 | 
			
		||||
        value='0',entry_textvariable=DevinName,entry_width=12)
 | 
			
		||||
audioout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio Out:',
 | 
			
		||||
        value=0,entry_textvariable=ndevout,entry_width=12)
 | 
			
		||||
        value='0',entry_textvariable=DevoutName,entry_width=12)
 | 
			
		||||
ratein=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate In:',
 | 
			
		||||
        value=1.0000,entry_textvariable=samfacin,entry_width=12)
 | 
			
		||||
rateout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate Out:',
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								specjt.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								specjt.py
									
									
									
									
									
								
							@ -489,10 +489,19 @@ if g.cmap == "AFMHot":
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------- Display GUI and start mainloop
 | 
			
		||||
draw_axis()
 | 
			
		||||
Audio.gcom1.ndevin=g.ndevin.get()
 | 
			
		||||
Audio.gcom1.ndevout=g.ndevout.get()
 | 
			
		||||
ndevin=g.ndevin.get()
 | 
			
		||||
ndevout=g.ndevout.get()
 | 
			
		||||
try:
 | 
			
		||||
    ndevin=g.ndevin.get()
 | 
			
		||||
except:
 | 
			
		||||
    ndevin=0
 | 
			
		||||
Audio.gcom1.ndevin=ndevin
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    ndevout=g.ndevout.get()
 | 
			
		||||
except:
 | 
			
		||||
    ndevout=0
 | 
			
		||||
Audio.gcom1.ndevout=ndevout
 | 
			
		||||
						# Only valid for windows
 | 
			
		||||
                                                # for now
 | 
			
		||||
Audio.audio_init(ndevin,ndevout)                #Start the audio stream
 | 
			
		||||
ltime.after(200,update)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								start_oss.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								start_oss.c
									
									
									
									
									
								
							@ -80,7 +80,8 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
 | 
			
		||||
	       int *nwave, int *nfsample, int *nsamperbuf,
 | 
			
		||||
	       int *TRPeriod, int *TxOK, int *ndebug,
 | 
			
		||||
	       int *Transmitting, double *Tsec, int *ngo, int *nmode,
 | 
			
		||||
	       double tbuf[], int *ibuf, int *ndsec)
 | 
			
		||||
	       double tbuf[], int *ibuf, int *ndsec,
 | 
			
		||||
	       char *PttPort, char *devin_name, char *devout_name)
 | 
			
		||||
{
 | 
			
		||||
  pthread_t thread1,thread2;
 | 
			
		||||
  int iret1,iret2;
 | 
			
		||||
@ -90,32 +91,35 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
 | 
			
		||||
  int format;
 | 
			
		||||
  int channels;
 | 
			
		||||
  double dnfs;
 | 
			
		||||
  int i;
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  p = strchr(devin_name, ' ');
 | 
			
		||||
  if(p != NULL)
 | 
			
		||||
    *p = '\0';
 | 
			
		||||
 | 
			
		||||
  p = strchr(devin_name, '/');
 | 
			
		||||
  if(p != NULL)
 | 
			
		||||
    snprintf(dsp_in, MAXDSPNAME, "%s", devin_name);	/* assume /dev/... */
 | 
			
		||||
  else
 | 
			
		||||
    snprintf(dsp_in, MAXDSPNAME, "/dev/%s", devin_name);
 | 
			
		||||
 | 
			
		||||
  /* XXX OSS device is decoded from ndevin and ndevout
 | 
			
		||||
   * This is not strictly speaking the way to do it and is
 | 
			
		||||
   * probably specific to FreeBSD for now. 
 | 
			
		||||
   * i.e. the .0 addition is a vchan; I'll add configure magic later. --db
 | 
			
		||||
   */
 | 
			
		||||
  snprintf(dsp_in, MAXDSPNAME, 
 | 
			
		||||
	   "/dev/dsp%d.0", *ndevin);
 | 
			
		||||
  dsp_in[MAXDSPNAME] = '\0';
 | 
			
		||||
 | 
			
		||||
  data.fd_in = open (dsp_in, O_RDWR, 0);
 | 
			
		||||
 | 
			
		||||
  if (data.fd_in < 0) { 
 | 
			
		||||
	fprintf(stderr, "Cannot open %s for input.\n", dsp_in);
 | 
			
		||||
	exit(-1);
 | 
			
		||||
	return(-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (*ndevin == *ndevout) {
 | 
			
		||||
  data.fd_out = data.fd_in;
 | 
			
		||||
  strncpy(dsp_out, dsp_in, sizeof(dsp_out));
 | 
			
		||||
  dsp_out[sizeof(dsp_out)] = '\0';
 | 
			
		||||
 | 
			
		||||
  if (ioctl(data.fd_in, SNDCTL_DSP_SETDUPLEX, 0) < 0) {
 | 
			
		||||
    fprintf(stderr, "Cannot use %s for full duplex.\n", dsp_in);
 | 
			
		||||
	exit(-1);
 | 
			
		||||
    }
 | 
			
		||||
    return(-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  data.Tsec = Tsec;
 | 
			
		||||
@ -140,23 +144,23 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
 | 
			
		||||
  channels = 2;
 | 
			
		||||
  if (ioctl (data.fd_in, SNDCTL_DSP_CHANNELS, &channels) == -1) {
 | 
			
		||||
	fprintf (stderr, "Unable to set 2 channels for input.\n");
 | 
			
		||||
	exit (-1);
 | 
			
		||||
	return (-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (channels != 2) {
 | 
			
		||||
    fprintf (stderr, "Unable to set 2 channels.\n");
 | 
			
		||||
    exit (-1);
 | 
			
		||||
    return (-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  format = AFMT_S16_NE;
 | 
			
		||||
  if (ioctl (data.fd_in, SNDCTL_DSP_SETFMT, &format) == -1) {
 | 
			
		||||
	fprintf (stderr, "Unable to set format for input.\n");
 | 
			
		||||
	exit (-1);
 | 
			
		||||
	return (-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (ioctl (data.fd_in, SNDCTL_DSP_SPEED, &rate) == -1) {
 | 
			
		||||
	fprintf (stderr, "Unable to set rate for input\n");
 | 
			
		||||
	exit (-1);
 | 
			
		||||
	return (-1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  printf("Audio OSS streams running normally.\n");
 | 
			
		||||
@ -214,7 +218,7 @@ oss_loop(int *iarg)
 | 
			
		||||
	    nread = read (data.fd_in, rcv_buf, AUDIOBUFSIZE);
 | 
			
		||||
	    if (nread <= 0) {
 | 
			
		||||
	      fprintf(stderr, "Read error %d\n", nread);
 | 
			
		||||
	      exit(-1);
 | 
			
		||||
	      return (-1);
 | 
			
		||||
	    }
 | 
			
		||||
	    if (nread == AUDIOBUFSIZE) {
 | 
			
		||||
	      /* Get System time */
 | 
			
		||||
@ -281,7 +285,7 @@ oss_loop(int *iarg)
 | 
			
		||||
 | 
			
		||||
	if (write(data.fd_out, tx_buf, AUDIOBUFSIZE) < 0) {
 | 
			
		||||
	  fprintf(stderr, "Can't write to soundcard.\n");
 | 
			
		||||
	  exit(-1);
 | 
			
		||||
	  return (-1);
 | 
			
		||||
	}
 | 
			
		||||
	fivehztx_();                             /* Call fortran routine */
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								wsjt.py
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								wsjt.py
									
									
									
									
									
								
							@ -98,6 +98,8 @@ g.freeze_decode=0
 | 
			
		||||
g.mode=""
 | 
			
		||||
g.ndevin=IntVar()
 | 
			
		||||
g.ndevout=IntVar()
 | 
			
		||||
g.DevinName=StringVar()
 | 
			
		||||
g.DevoutName=StringVar()
 | 
			
		||||
g.focus=0
 | 
			
		||||
#------------------------------------------------------ showspecjt
 | 
			
		||||
def showspecjt(event=NONE):
 | 
			
		||||
@ -1512,7 +1514,7 @@ def update():
 | 
			
		||||
    Audio.gcom2.nslim2=isync-4
 | 
			
		||||
    if nosh441.get()==1 and mode.get()=='FSK441': Audio.gcom2.nslim2=99
 | 
			
		||||
    try:
 | 
			
		||||
        Audio.gcom2.nport=int(options.ComPort.get())
 | 
			
		||||
        Audio.gcom2.nport=options.ComPort.get()
 | 
			
		||||
    except:
 | 
			
		||||
        Audio.gcom2.nport=0
 | 
			
		||||
    
 | 
			
		||||
@ -2013,17 +2015,35 @@ try:
 | 
			
		||||
#        elif key == 'TxDelay': options.TxDelay.set(value)
 | 
			
		||||
        elif key == 'IDinterval': options.IDinterval.set(value)
 | 
			
		||||
        elif key == 'ComPort':
 | 
			
		||||
            try:
 | 
			
		||||
                options.ComPort.set(value)
 | 
			
		||||
            Audio.gcom2.nport=int(options.ComPort.get())
 | 
			
		||||
                Audio.gcom2.nport=options.ComPort.get()
 | 
			
		||||
            except:
 | 
			
		||||
                options.ComPort.set(0)
 | 
			
		||||
                Audio.gcom2.nport=0
 | 
			
		||||
 | 
			
		||||
            Audio.gcom2.PttPort=options.ComPort.get()
 | 
			
		||||
             
 | 
			
		||||
        elif key == 'Mileskm': options.mileskm.set(value)
 | 
			
		||||
        elif key == 'MsgStyle': options.ireport.set(value)
 | 
			
		||||
        elif key == 'Region': options.iregion.set(value)
 | 
			
		||||
        elif key == 'AudioIn':
 | 
			
		||||
            try:
 | 
			
		||||
                g.ndevin.set(value)
 | 
			
		||||
            options.ndevin.set(value)
 | 
			
		||||
            except:
 | 
			
		||||
                g.ndevin.set(0)
 | 
			
		||||
            g.DevinName.set(value)
 | 
			
		||||
            options.DevinName.set(value)
 | 
			
		||||
            Audio.gcom1.devin_name=(options.DevinName.get()+'            ')[:12]
 | 
			
		||||
        elif key == 'AudioOut':
 | 
			
		||||
            try:
 | 
			
		||||
                g.ndevout.set(value)
 | 
			
		||||
            options.ndevout.set(value)
 | 
			
		||||
                Audio.gcom1.devout_name=(options.DevoutName.get()+'            ')[:12]
 | 
			
		||||
            except:
 | 
			
		||||
                g.ndevout.set(0)
 | 
			
		||||
            g.DevoutName.set(value)
 | 
			
		||||
            options.DevoutName.set(value)
 | 
			
		||||
            Audio.gcom1.devout_name=(options.DevoutName.get()+'            ')[:12]
 | 
			
		||||
        elif key == 'SamFacIn': options.samfacin.set(value)
 | 
			
		||||
        elif key == 'SamFacOut': options.samfacout.set(value)
 | 
			
		||||
        elif key == 'Template1': options.Template1.set(value.replace("_"," "))
 | 
			
		||||
@ -2113,12 +2133,12 @@ f.write("HisGrid " + t + "\n")
 | 
			
		||||
#f.write("RxDelay " + str(options.RxDelay.get()) + "\n")
 | 
			
		||||
#f.write("TxDelay " + str(options.TxDelay.get()) + "\n")
 | 
			
		||||
f.write("IDinterval " + str(options.IDinterval.get()) + "\n")
 | 
			
		||||
f.write("ComPort " + str(options.ComPort.get()) + "\n")
 | 
			
		||||
f.write("ComPort " + options.PttPort.get() + "\n")
 | 
			
		||||
f.write("Mileskm " + str(options.mileskm.get()) + "\n")
 | 
			
		||||
f.write("MsgStyle " + str(options.ireport.get()) + "\n")
 | 
			
		||||
f.write("Region " + str(options.iregion.get()) + "\n")
 | 
			
		||||
f.write("AudioIn " + str(options.ndevin.get()) + "\n")
 | 
			
		||||
f.write("AudioOut " + str(options.ndevout.get()) + "\n")
 | 
			
		||||
f.write("AudioIn " + options.DevinName.get() + "\n")
 | 
			
		||||
f.write("AudioOut " + options.DevoutName.get() + "\n")
 | 
			
		||||
f.write("SamFacIn " + str(options.samfacin.get()) + "\n")
 | 
			
		||||
f.write("SamFacOut " + str(options.samfacout.get()) + "\n")
 | 
			
		||||
if options.Template6.get()=="": options.Template6.set("_")
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user