mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-27 02:50:39 -04: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) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										50
									
								
								start_oss.c
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								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'; | ||||
|   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); | ||||
|     } | ||||
|   if (ioctl(data.fd_in, SNDCTL_DSP_SETDUPLEX, 0) < 0) { | ||||
|     fprintf(stderr, "Cannot use %s for full duplex.\n", dsp_in); | ||||
|     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 */ | ||||
|       } | ||||
|  | ||||
							
								
								
									
										40
									
								
								wsjt.py
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								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': | ||||
|             options.ComPort.set(value) | ||||
|             Audio.gcom2.nport=int(options.ComPort.get()) | ||||
|             try: | ||||
|                 options.ComPort.set(value) | ||||
|                 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': | ||||
|             g.ndevin.set(value) | ||||
|             options.ndevin.set(value) | ||||
|             try: | ||||
|                 g.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': | ||||
|             g.ndevout.set(value) | ||||
|             options.ndevout.set(value) | ||||
|             try: | ||||
|                 g.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