mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05: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,9 +7,9 @@ program m65
|
||||
!
|
||||
! 10 binary input data, *.tf2 files
|
||||
! 11 prefixes.txt
|
||||
! 12
|
||||
! 12 wb_w65.txt
|
||||
! 13 map65.log
|
||||
! 14
|
||||
! 14
|
||||
! 15
|
||||
! 16 tquick log
|
||||
! 17 saved *.tf2 files
|
||||
@ -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…
Reference in New Issue
Block a user