From 291c66806ab2c9369cbe3fd77bb1a9605d993f72 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 27 Nov 2017 20:22:44 +0000 Subject: [PATCH] Various corrections/additions to DXpedition Fox mode. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8262 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/decoder.f90 | 17 ++++++++++------- lib/ft8/foxgen.f90 | 41 ++++++++++++++++------------------------- mainwindow.cpp | 24 ++++++++++++++++-------- mainwindow.ui | 2 +- 4 files changed, 43 insertions(+), 41 deletions(-) diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 224c7d336..d4ecbe5e0 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -96,11 +96,11 @@ subroutine multimode_decoder(ss,id2,params,nfsample) nsnrfox(j)=nsnrfox(i) nfreqfox(j)=nfreqfox(i) n15fox(j)=n -! m=n15max-n - call azdist(params%mygrid,g2fox(j),utch,nAz,nEl,nDmiles,nDkm, & + m=n15max-n + call azdist(params%mygrid,g2fox(j),0.d0,nAz,nEl,nDmiles,nDkm, & nHotAz,nHotABetter) - write(19,1004) c2fox(j),g2fox(j),nsnrfox(j),nfreqfox(j),nDkm -1004 format(a12,1x,a4,i5,i6,i7) + write(19,1004) c2fox(j),g2fox(j),nsnrfox(j),nfreqfox(j),nDkm,m +1004 format(a12,1x,a4,i5,i6,i7,i3) endif enddo nfox=j @@ -437,7 +437,7 @@ contains real, intent(in) :: freq character(len=22), intent(in) :: decoded character c1*12,c2*6,g2*4,w*4 - integer i1,i2,i3,n15 + integer i1,i2,i3,n15,nwrap integer, intent(in) :: nap real, intent(in) :: qual character*2 annot @@ -457,7 +457,8 @@ contains g2fox=' ' nsnrfox=-99 nfreqfox=-99 - n15z=-99 + n15z=0 + nwrap=0 nfox=0 first=.false. endif @@ -485,13 +486,15 @@ contains .and. isgrid4(g2)) then n=params%nutc n15=(3600*(n/10000) + 60*mod((n/100),100) + mod(n,100))/15 + if(n15.lt.n15z) nwrap=nwrap+5760 !New UTC day + n15z=n15 + n15=n15+nwrap nfox=nfox+1 c2fox(nfox)=c2 g2fox(nfox)=g2 nsnrfox(nfox)=snr nfreqfox(nfox)=nint(freq) n15fox(nfox)=n15 - n15z=n15 endif endif diff --git a/lib/ft8/foxgen.f90 b/lib/ft8/foxgen.f90 index e0d116a2d..dbbe5ba58 100644 --- a/lib/ft8/foxgen.f90 +++ b/lib/ft8/foxgen.f90 @@ -1,11 +1,11 @@ -subroutine foxgen(t) +subroutine foxgen(nslots,t) parameter (NN=79,KK=87,NSPS=4*1920) parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2) character*(*) t character*22 msg,msgsent character*12 t1 - character*6 MyCall,MyGrid + character*6 MyCall,MyGrid,call1,call2 logical bcontest integer itone(NN) integer*1 msgbits(KK) @@ -17,6 +17,7 @@ subroutine foxgen(t) common/foxcom/wave equivalence (x,cx),(y,cy) +! print*,'cc',nslots,len(t),t call system_clock(count0,clkfreq) MyCall='KH1DX' MyGrid='AJ10 ' @@ -28,28 +29,18 @@ subroutine foxgen(t) twopi=8.d0*atan(1.d0) wave=0. - m=len(t) - i=0 - i0=1 - do n=1,5 - do j=1,12 - i=i+1 - if(i.eq.m .or. ichar(t(i:i)).eq.10) then - if(i.ne.m) t1=t(i0:i-1) - if(i.eq.m) t1=t(i0:i) - i1=index(t1,' ') - msg=t1(1:i1)//MyCall//t1(i1:) - iz=len(trim(msg)) - do iter=1,5 !Collapse multiple blanks into one - ib2=index(msg(1:iz),' ') - if(ib2.lt.1) exit - msg=msg(1:ib2)//msg(ib2+2:) - iz=iz-1 - enddo - exit - endif - enddo - i0=i+1 + do n=1,nslots + ia=22*(n-1)+1 + call1=t(ia:ia+5) + if(t(ia+7:ia+10).eq.'RR73') then + irpt1=99 + else + read(t(ia+7:ia+10),*) irpt1 + endif + call2=t(ia+11:ia+16) + read(t(ia+18:ia+21),*) irpt2 + print*,n,call1,irpt1,call2,irpt2 + call genft8(msg,mygrid,bcontest,i3bit,msgsent,msgbits,itone) f0=1500.d0 + fstep*(n-1) @@ -70,7 +61,7 @@ subroutine foxgen(t) ! time=float(count1-count0)/float(clkfreq) !Cumulative execution time ! write(*,3001) n,k,i,time,msgsent !3001 format(i1,i8,i4,f10.6,2x,a22) - if(i.ge.m) exit +! if(i.ge.m) exit enddo sqx=0. diff --git a/mainwindow.cpp b/mainwindow.cpp index 89a1b1f2b..5d27448b6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -135,7 +135,7 @@ extern "C" { void calibrate_(char data_dir[], int* iz, double* a, double* b, double* rms, double* sigmaa, double* sigmab, int* irc, int len1); - void foxgen_(char* tb3, int len); + void foxgen_(int* nslots, char* tb3, int len); } int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols @@ -3324,12 +3324,20 @@ void MainWindow::guiUpdate() } if(m_modeTx=="FT8") { if(m_config.bFox()) { - QString t=ui->textBrowser3->toPlainText(); - int len=t.length(); -// qint64 ms0=QDateTime::currentMSecsSinceEpoch(); - foxgen_(const_cast (t.toLatin1().constData()),len); -// qint64 ms=QDateTime::currentMSecsSinceEpoch(); -// qDebug() << "aa" << m_Nslots << ms-ms0 << t; + QString t1=""; + QString t3=ui->textBrowser3->toPlainText() + "\n"; + QString t4=ui->textBrowser4->toPlainText() + "\n"; + int nslots=ui->sbNslots->value(); + for(int i=0; i (t1.toLatin1().constData()),len1); } else { genft8_(message, MyGrid, &bcontest, &m_i3bit, msgsent, const_cast (ft8msgbits), const_cast (itone), 22, 6, 22); @@ -6005,7 +6013,7 @@ void MainWindow::transmit (double snr) if (m_modeTx == "FT8") { toneSpacing=12000.0/1920.0; if(m_config.x2ToneSpacing()) toneSpacing=2*12000.0/1920.0; - if(m_config.bFox()) toneSpacing=-1; + if(m_config.bFox() and !m_tune) toneSpacing=-1; Q_EMIT sendMessage (NUM_FT8_SYMBOLS, 1920.0, ui->TxFreqSpinBox->value () - m_XIT, toneSpacing, m_soundOutput, m_config.audio_output_channel (), diff --git a/mainwindow.ui b/mainwindow.ui index 7f7d58559..b93780ab7 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -1649,7 +1649,7 @@ list. The list can be maintained in Settings (F2). 5 - 20 + 100 12