mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	Merge branch 'map65' of bitbucket.org:k1jt/wsjtx into map65
This commit is contained in:
		
						commit
						c8e64db9d4
					
				| @ -40,7 +40,7 @@ subroutine map65_mmdec(nutc,id2,nqd,nsubmode,nfa,nfb,nfqso,ntol,newdat,   & | ||||
|   lagain=(nagain.ne.0) | ||||
|   bVHF=.true. | ||||
|   emedelay=2.5 | ||||
|   ndepth=3                       !Does this make it too slow? | ||||
|   ndepth=2                       !Does this make it too slow? | ||||
|   ntrperiod=60 | ||||
| 
 | ||||
|   open(17,file=trim(temp_dir)//'/red.dat',status='unknown') | ||||
|  | ||||
| @ -70,6 +70,7 @@ void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid, | ||||
|             &azmoondx, &elmoondx, &ntsky, &ndop, &ndop00,&ramoon, &decmoon, | ||||
|             &dgrd, &poloffset, &xnr, 6, 6); | ||||
| 
 | ||||
|   datcom_.nfast=ndop00;               //Send self Doppler to decoder, via datcom
 | ||||
|   sprintf(cc, | ||||
|           "Az:    %6.1f\n" | ||||
|           "El:    %6.1f\n" | ||||
|  | ||||
| @ -12,3 +12,15 @@ subroutine astrosub(nyear,month,nday,uth8,nfreq,mygrid,hisgrid,          & | ||||
| 
 | ||||
|   return   | ||||
| end subroutine astrosub | ||||
| 
 | ||||
| subroutine astrosub00(nyear,month,nday,uth8,nfreq,mygrid,ndop00) | ||||
| 
 | ||||
|   implicit real*8 (a-h,o-z) | ||||
|   character*6 mygrid | ||||
| 
 | ||||
|   call astrosub(nyear,month,nday,uth8,nfreq,mygrid,mygrid,               & | ||||
|      AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,  & | ||||
|      RAMoon8,DecMoon8,Dgrd8,poloffset8,xnr8) | ||||
| 
 | ||||
|   return | ||||
| end subroutine astrosub00 | ||||
|  | ||||
| @ -12,7 +12,7 @@ subroutine decode0(dd,ss,savg,nstandalone) | ||||
|   common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,                & | ||||
|        ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,                 & | ||||
|        mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,               & | ||||
|        nfast,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime | ||||
|        ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime | ||||
|   common/early/nhsym1,nhsym2,ldecoded(32768) | ||||
|   common/decodes/ndecodes | ||||
|   data neme0/-99/,mcall3b/1/ | ||||
| @ -56,7 +56,7 @@ subroutine decode0(dd,ss,savg,nstandalone) | ||||
|        mousedf,mousefqso,nagain,ndecdone,nfshift,ndphi,max_drift,          & | ||||
|        nfcal,nkeep,mcall3b,nsum,nsave,nxant,mycall,mygrid,                 & | ||||
|        neme,ndepth,nstandalone,hiscall,hisgrid,nhsym,nfsample,             & | ||||
|        ndiskdat,nxpol,nmode) | ||||
|        ndiskdat,nxpol,nmode,ndop00) | ||||
|   call timer('map65a  ',1) | ||||
|   call timer('decode0 ',1) | ||||
| 
 | ||||
|  | ||||
| @ -10,6 +10,7 @@ subroutine ftninit(appd) | ||||
| 
 | ||||
|   addpfx='    ' | ||||
|   call pfxdump(appd//'/prefixes.txt') | ||||
|   open(12,file=appd//'/wb_q65.txt',status='unknown') | ||||
|   open(13,file=appd//'/map65.log',status='unknown') | ||||
|   open(19,file=appd//'/livecq.txt',status='unknown') | ||||
|   open(21,file=appd//'/map65_rx.log',status='unknown',access='append',err=950) | ||||
|  | ||||
| @ -7,7 +7,7 @@ program m65 | ||||
| ! | ||||
| !   10  binary input data, *.tf2 files | ||||
| !   11  prefixes.txt | ||||
| !   12 | ||||
| !   12  wb_w65.txt | ||||
| !   13  map65.log | ||||
| !   14   | ||||
| !   15 | ||||
| @ -41,7 +41,7 @@ program m65 | ||||
|   common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,                & | ||||
|        ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,                 & | ||||
|        mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,               & | ||||
|        nfast,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime | ||||
|        ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime | ||||
|   common/early/nhsym1,nhsym2,ldecoded(32768) | ||||
| 
 | ||||
|   nargs=iargc() | ||||
|  | ||||
| @ -82,7 +82,7 @@ subroutine m65c(dd,ss,savg,nparams0) | ||||
|   common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,              & | ||||
|        ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,               & | ||||
|        mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,             & | ||||
|        nfast,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,       & | ||||
|        ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,       & | ||||
|        datetime,junk1,junk2 | ||||
|   common/early/nhsym1,nhsym2,ldecoded(32768) | ||||
|   equivalence (nparams,fcenter) | ||||
|  | ||||
| @ -2,7 +2,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|      mousedf,mousefqso,nagain,ndecdone,nfshift,ndphi,max_drift,             & | ||||
|      nfcal,nkeep,mcall3b,nsum,nsave,nxant,mycall,mygrid,                    & | ||||
|      neme,ndepth,nstandalone,hiscall,hisgrid,nhsym,nfsample,                & | ||||
|      ndiskdat,nxpol,nmode) | ||||
|      ndiskdat,nxpol,nmode,ndop00) | ||||
| 
 | ||||
| !  Processes timf2 data from Linrad to find and decode JT65 signals. | ||||
| 
 | ||||
| @ -41,6 +41,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|   data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/ | ||||
|   save | ||||
| 
 | ||||
|   rewind 12 | ||||
|   ndecodes=0 | ||||
| 
 | ||||
| ! Clean start for Q65 at early decode | ||||
| @ -365,7 +366,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|               call timer('q65b    ',0) | ||||
|               call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,   & | ||||
|                    ntol,xpol,mycall,mygrid, hiscall,hisgrid,mode_q65,f0,fqso, & | ||||
|                    newdat,nagain,max_drift,nhsym,idec) | ||||
|                    newdat,nagain,max_drift,nhsym,ndop00,idec) | ||||
|               call timer('q65b    ',1) | ||||
|               if(idec.ge.0) candec(icand)=.true. | ||||
|            enddo | ||||
| @ -376,7 +377,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|               call timer('q65b    ',0) | ||||
|               call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,   & | ||||
|                    ntol,xpol,mycall,mygrid,hiscall,hisgrid,mode_q65,f0,fqso,  & | ||||
|                    newdat,nagain,max_drift,nhsym,idec) | ||||
|                    newdat,nagain,max_drift,nhsym,ndop00,idec) | ||||
|               call timer('q65b    ',1) | ||||
|            endif | ||||
|         endif | ||||
| @ -420,7 +421,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|            call timer('q65b    ',0) | ||||
|            call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & | ||||
|                 xpol,mycall,mygrid,hiscall,hisgrid,mode_q65,f0,fqso,newdat,   & | ||||
|                 nagain,max_drift,nhsym,idec) | ||||
|                 nagain,max_drift,nhsym,ndop00,idec) | ||||
|            call timer('q65b    ',1) | ||||
|            if(idec.ge.0) candec(icand)=.true. | ||||
|         enddo  ! icand | ||||
| @ -520,6 +521,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        & | ||||
|   ndecdone=2 | ||||
| 
 | ||||
| 900 close(23) | ||||
|   call flush(12) | ||||
|   ndphi=0 | ||||
|   mcall3b=mcall3a | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & | ||||
|      mycall0,mygrid,hiscall0,hisgrid,mode_q65,f0,fqso,newdat,nagain,          & | ||||
|      max_drift,nhsym,idec) | ||||
|      max_drift,nhsym,ndop00,idec) | ||||
| 
 | ||||
| ! This routine provides an interface between MAP65 and the Q65 decoder | ||||
| ! in WSJT-X.  All arguments are input data obtained from the MAP65 GUI. | ||||
| @ -181,11 +181,16 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & | ||||
|      if(nutc.ne.nutc00 .or. msg0(1:28).ne.msg00 .or. freq1.ne.freq1_00) then | ||||
| ! Write to file map65_rx.log: | ||||
|         ndecodes=ndecodes+1 | ||||
|         write(21,1110)  freq1,ndf,xdt0,npol,nsnr0,nutc,msg0(1:28),cq0 | ||||
| 1110    format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': A',2x,a3) | ||||
|         write(21,1110)  freq1,ndf,xdt0,npol,nsnr0,nutc,msg0(1:28),   & | ||||
|              cmode(2:2),cq0 | ||||
| 1110    format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': ',a1,2x,a3) | ||||
|         nutc00=nutc | ||||
|         msg00=msg0(1:28) | ||||
|         freq1_00=freq1 | ||||
|         frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal | ||||
|         fsked=frx - 0.001*ndop00/2.0 - 1.5 | ||||
|         write(12,1120) nutc,fsked,xdt0,nsnr0,trim(msg0) | ||||
| 1120    format(i4.4,f9.3,f7.2,i5,2x,a,i6) | ||||
|      endif | ||||
|   endif | ||||
| 
 | ||||
|  | ||||
| @ -1293,7 +1293,25 @@ void MainWindow::decode()                                       //decode() | ||||
|   datcom_.mousefqso=m_wide_graph_window->QSOfreq(); | ||||
|   datcom_.ndepth=m_ndepth; | ||||
|   datcom_.ndiskdat=0; | ||||
|   if(m_diskData) datcom_.ndiskdat=1; | ||||
|   if(m_diskData) { | ||||
|     datcom_.ndiskdat=1; | ||||
|     int i0=m_path.indexOf(".tf2"); | ||||
|     if(i0<0) i0=m_path.indexOf(".iq"); | ||||
|     if(i0>0) { | ||||
|       // Compute self Doppler using the filename for Date and Time
 | ||||
|       int nyear=m_path.mid(i0-11,2).toInt()+2000; | ||||
|       int month=m_path.mid(i0-9,2).toInt(); | ||||
|       int nday=m_path.mid(i0-7,2).toInt(); | ||||
|       int nhr=m_path.mid(i0-4,2).toInt(); | ||||
|       int nmin=m_path.mid(i0-2,2).toInt(); | ||||
|       double uth=nhr + nmin/60.0; | ||||
|       int nfreq=(int)datcom_.fcenter; | ||||
|       int ndop00; | ||||
| 
 | ||||
|       astrosub00_(&nyear, &month, &nday, &uth, &nfreq, m_myGrid.toLatin1(),&ndop00,6); | ||||
|       datcom_.nfast=ndop00;               //Send self Doppler to decoder, via datcom
 | ||||
|     } | ||||
|   } | ||||
|   datcom_.neme=0; | ||||
|   if(ui->actionOnly_EME_calls->isChecked()) datcom_.neme=1; | ||||
| 
 | ||||
| @ -1322,7 +1340,7 @@ void MainWindow::decode()                                       //decode() | ||||
|   datcom_.nxpol=0; | ||||
|   if(m_xpol) datcom_.nxpol=1; | ||||
|   datcom_.nmode=10*m_modeQ65 + m_modeJT65; | ||||
|   datcom_.nfast=1;                               //No longer used
 | ||||
| //  datcom_.nfast=1;                               //No longer used
 | ||||
|   datcom_.nsave=m_nsave; | ||||
|   datcom_.max_drift=ui->sbMaxDrift->value(); | ||||
| 
 | ||||
|  | ||||
| @ -322,6 +322,9 @@ extern "C" { | ||||
|               int len1, int len2); | ||||
| 
 | ||||
|   int ptt_(int* nport, int* itx, int* iptt); | ||||
| 
 | ||||
|   void astrosub00_ (int* nyear, int* month, int* nday, double* uth, int* nfreq, | ||||
|                     const char* mygrid, int* ndop00, int len1); | ||||
|   } | ||||
| 
 | ||||
| #endif // MAINWINDOW_H
 | ||||
|  | ||||
| @ -4781,6 +4781,14 @@ void MainWindow::guiUpdate() | ||||
|   if(nsec != m_sec0) { | ||||
| //    qDebug() << "AAA" << nsec << int(m_specOp) << ui->labDXped->text();
 | ||||
| 
 | ||||
|     if(m_mode=="Q65") { | ||||
|       QFileInfo fi(m_appDir+"/wb_q65.txt"); | ||||
|       QDateTime fileTime=fi.lastModified(); | ||||
|       QDateTime now = QDateTime::currentDateTimeUtc (); | ||||
|       int age=fileTime.msecsTo(now)/1000; | ||||
|       if(age==1) readWidebandDecodes(); | ||||
|     } | ||||
| 
 | ||||
|     if(m_mode=="FST4") chk_FST4_freq_range(); | ||||
|     m_currentBand=m_config.bands()->find(m_freqNominal); | ||||
|     if( SpecOp::HOUND == m_specOp ) { | ||||
| @ -9152,6 +9160,63 @@ void MainWindow::write_transmit_entry (QString const& file_name) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void MainWindow::readWidebandDecodes() | ||||
| { | ||||
| // Update "m_wEMECall" by reading wb_dec.txt
 | ||||
|   int nhr=0; | ||||
|   int nmin=0; | ||||
|   QFile f(m_appDir+"/wb_q65.txt"); | ||||
|   f.open(QIODevice::ReadOnly); | ||||
|   if(f.isOpen()) { | ||||
|     QTextStream in(&f); | ||||
|     QString line,callsign; | ||||
|     for(int i=0; i<99999; i++) { | ||||
|       line=in.readLine(); | ||||
|       if(line.length()<=0) break; | ||||
|       nhr=line.mid(0,2).toInt(); | ||||
|       nmin=line.mid(2,2).toInt(); | ||||
|       double fsked=line.mid(4,9).toDouble(); | ||||
|       QString msg=line.mid(27,-1); | ||||
|       int i1=msg.indexOf(" "); | ||||
|       int i2=i1 +1 + msg.mid(i1+1,-1).indexOf(" "); | ||||
|       QString call=msg.mid(i1+1,i2-i1); | ||||
|       QString w3=msg.mid(i2+1,-1); | ||||
|       m_EMECall[call].fsked=fsked; | ||||
|       m_EMECall[call].t=60*nhr + nmin; | ||||
|       m_EMECall[call].worked=false; | ||||
|       if(w3.contains(grid_regexp)) m_EMECall[call].grid4=w3; | ||||
|     } | ||||
|     f.close(); | ||||
| 
 | ||||
|     /*
 | ||||
|      if(m_ActiveStationsWidget != NULL) m_ActiveStationsWidget->erase(); | ||||
| 
 | ||||
|      if(m_ActiveStationsWidget!=NULL) m_ActiveStationsWidget->displayRecentStations(t); | ||||
|      QString t1; | ||||
|      if(!bReady) t1 = t1.asprintf("  %3d  %+2.2d  %4d  %1d %2d %4d",az,snr,freq,itx,age,points); | ||||
|      */ | ||||
| 
 | ||||
|     QMap<QString,EMECall>::iterator i; | ||||
|     QString t=""; | ||||
|     QString t1; | ||||
|     for(i=m_EMECall.begin(); i!=m_EMECall.end(); i++) { | ||||
|       int age=60*nhr + nmin - (i->t); | ||||
|       if(age<0) age += 1440; | ||||
|       if(i->worked) { | ||||
|         t1=t1.asprintf("%5.1f   %8s %4d\n",i->fsked,i.key().toLatin1().constData(),age); | ||||
|       } else { | ||||
|         t1=t1.asprintf("%5.1f * %8s %4d\n",i->fsked,i.key().toLatin1().constData(),age); | ||||
|       } | ||||
|       t+=t1; | ||||
|     } | ||||
|     qDebug() << "bb" << t; | ||||
|     if(m_ActiveStationsWidget != NULL) { | ||||
|       m_ActiveStationsWidget->erase(); | ||||
|       m_ActiveStationsWidget->displayRecentStations(t); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // -------------------------- Code for FT8 DXpedition Mode ---------------------------
 | ||||
| 
 | ||||
| void MainWindow::hound_reply () | ||||
|  | ||||
| @ -373,6 +373,7 @@ private: | ||||
|   void setColorHighlighting(); | ||||
|   void chkFT4(); | ||||
|   bool elide_tx1_not_allowed () const; | ||||
|   void readWidebandDecodes(); | ||||
| 
 | ||||
|   QProcessEnvironment const& m_env; | ||||
|   NetworkAccessManager m_network_manager; | ||||
| @ -701,6 +702,15 @@ private: | ||||
|   }; | ||||
|   QMap<QString,ActiveCall> m_activeCall;   //Key = callsign, value = grid4, az, points for ARRL_DIGI
 | ||||
| 
 | ||||
|   struct EMECall | ||||
|   { | ||||
|     QString grid4; | ||||
|     double fsked; | ||||
|     qint32 t; | ||||
|     bool worked; | ||||
|   }; | ||||
|   QMap<QString,EMECall> m_EMECall; | ||||
| 
 | ||||
|   struct RecentCall | ||||
|   { | ||||
|     qint64 dialFreq; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user