diff --git a/lib/ft4/ft4_decode.f90 b/lib/ft4/ft4_decode.f90 index 29427ffb9..83d9531d1 100644 --- a/lib/ft4/ft4_decode.f90 +++ b/lib/ft4/ft4_decode.f90 @@ -1,4 +1,4 @@ -subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & +subroutine ft4_decode(cdatetime0,tbuf,nfa,nfb,nfqso,iwave,ndecodes,mycall, & hiscall,nrx,line) use packjt77 @@ -7,7 +7,7 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & character message*37 character c77*77 - character*61 line + character*61 line,linex(100) character*37 decodes(100) character*120 data_dir character*17 cdatetime0 @@ -22,13 +22,13 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & real s4(0:3,NN) real bmeta(2*NN),bmetb(2*NN),bmetc(2*NN) - real s(NH1,NHSYM) real a(5) real llr(2*ND),llr2(2*ND),llra(2*ND),llrb(2*ND),llrc(2*ND) real s2(0:255) real candidate(3,100) real savg(NH1),sbase(NH1) - + + integer nrxx(100) integer icos4(0:3) integer*2 iwave(NMAX) !Generated full-length waveform integer*1 message77(77),apmask(2*ND),cw(2*ND) @@ -42,7 +42,7 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & data icos4/0,1,3,2/ data graymap/0,1,3,2/ data first/.true./ - save one,first + save one,first,nrxx,linex hhmmss=cdatetime0(8:13) fs=12000.0/NDOWN !Sample rate after downsampling @@ -250,17 +250,19 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & decodes(ndecodes)=message nsnr=nint(xsnr) freq=f0 + tsig=mod(tbuf + ibest/750.0,100.0) - write(line,1000) hhmmss,nsnr,ibest/750.0,nint(freq),message -1000 format(a6,i4,f5.2,i5,' + ',1x,a37) + write(line,1000) hhmmss,nsnr,tsig,nint(freq),message +1000 format(a6,i4,f5.1,i5,' + ',1x,a37) open(24,file='all_ft4.txt',status='unknown',position='append') - write(24,1002) cdatetime0,nsnr,ibest/750.0,nint(freq),message, & + write(24,1002) cdatetime0,nsnr,tsig,nint(freq),message, & nharderror,nsync_qual,isd,niterations if(hhmmss.eq.' ') write(*,1002) cdatetime0,nsnr, & - ibest/750.0,nint(freq),message,nharderror,nsync_qual,isd, & + tsig,nint(freq),message,nharderror,nsync_qual,isd, & niterations -1002 format(a17,i4,f6.2,i5,' Rx ',a37,4i5) +1002 format(a17,i4,f5.1,i5,' Rx ',a37,4i5) close(24) + linex(ndecodes)=line !### Temporary: assume most recent decoded message conveys "hiscall". ### i0=index(message,' ') @@ -273,18 +275,24 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & if(index(message,'CQ ').eq.1) nrx=1 if((index(message,trim(mycall)//' ').eq.1) .and. & (index(message,' '//trim(hiscall)//' ').ge.4)) then - if(index(message,' 559 ').gt.8) nrx=2 - if(index(message,' R 559 ').gt.8) nrx=3 + if(index(message,' 559 ').gt.8) nrx=2 !### Not right ! + if(index(message,' R 559 ').gt.8) nrx=3 !### Not right ! if(index(message,' RR73 ').gt.8) nrx=4 endif + nrxx(ndecodes)=nrx !### exit endif enddo !Sequence estimation enddo !Candidate list - return + + entry get_ft4msg(idecode,nrx,line) + line=linex(idecode) + nrx=nrxx(idecode) + return + end subroutine ft4_decode subroutine ft4_downsample(iwave,f0,c) diff --git a/lib/ft4/ft4d.f90 b/lib/ft4/ft4d.f90 index c0bd15270..20da1d2ab 100644 --- a/lib/ft4/ft4d.f90 +++ b/lib/ft4/ft4d.f90 @@ -56,9 +56,13 @@ program ft4d cdatetime=' '//datetime close(10) - call ft4_decode(cdatetime,nfa,nfb,nfqso,iwave,ndecodes,mycall, & + call ft4_decode(cdatetime,0.0,nfa,nfb,nfqso,iwave,ndecodes,mycall, & hiscall,nrx,line) - if(ndecodes.ge.1) write(*,'(a61)') line + + do idecode=1,ndecodes + call get_ft4msg(idecode,nrx,line) + write(*,'(a61)') line + enddo enddo !files write(*,1120) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index e63f57124..cf20023b6 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -163,9 +163,12 @@ extern "C" { void chkcall_(char* w, char* basc_call, bool cok, int len1, int len2); - void ft4_decode_(char* cdatetime, int* nfa, int* nfb, int* nfqso, short int id[], - int* ndecodes, char* mycall6, char* hiscall6, int* nrx, char* line, - int len1, int len2, int len3, int len4); + void ft4_decode_(char* cdatetime, float* tbuf, int* nfa, int* nfb, int* nfqso, + short int id[], int* ndecodes, char* mycall6, char* hiscall6, + int* nrx, char* line, int len1, int len2, int len3, int len4); + + void get_ft4msg_(int* idecode, int* nrx, char* line, int len); + } int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols @@ -8621,6 +8624,7 @@ void MainWindow::ft4Data(int k) int j=k/6000; j=6000*j-60000; if(j<0) j+=NRING; + float tbuf=j/12000.0; for(int i=0; i<60000; i++) { id[i]=dec_data.d2[j]; j++; @@ -8654,10 +8658,13 @@ void MainWindow::ft4Data(int k) int nrx=-1; int nfa=m_wideGraph->nStartFreq(); int nfb=m_wideGraph->Fmax(); - ft4_decode_(cdatetime,&nfa,&nfb,&nfqso,id,&ndecodes,mycall6,hiscall6, + ft4_decode_(cdatetime,&tbuf,&nfa,&nfb,&nfqso,id,&ndecodes,mycall6,hiscall6, &nrx,&line[0],17,6,6,61); line[60]=0; - if(ndecodes>0) { +// if(ndecodes>0) { + for (int idecode=1; idecode<=ndecodes; idecode++) { + get_ft4msg_(&idecode,&nrx,&line[0],61); + line[60]=0; QString sline{QString::fromLatin1(line)}; DecodedText decodedtext {sline.replace(QChar::LineFeed,"")}; ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,