diff --git a/qmap/libqmap/q65b.f90 b/qmap/libqmap/q65b.f90 index 93d99587f..1d88303a7 100644 --- a/qmap/libqmap/q65b.f90 +++ b/qmap/libqmap/q65b.f90 @@ -1,7 +1,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & - ntrperiod,iseq, & - mycall0,hiscall0,hisgrid,mode_q65,f0,fqso,nkhz_center, newdat,nagain, & - max_drift,offset,ndepth,datetime,nCFOM,ndop00,idec) + ntrperiod,iseq,mycall0,hiscall0,hisgrid,mode_q65,f0,fqso,nkhz_center, & + newdat,nagain,bClickDecode,max_drift,offset,ndepth,datetime,nCFOM, & + ndop00,idec) ! This routine provides an interface between QMAP and the Q65 decoder ! in WSJT-X. All arguments are input data obtained from the QMAP GUI. @@ -20,6 +20,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & complex ca(MAXFFT1) !FFT of raw I/Q data from Linrad complex cx(0:MAXFFT2-1),cz(0:MAXFFT2) real*8 fcenter,freq0,freq1 + logical*1 bClickDecode character*12 mycall0,hiscall0 character*12 mycall,hiscall character*6 hisgrid @@ -110,15 +111,17 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & ! NB: Frequency of ipk is now shifted to 1000 Hz. call map65_mmdec(nutc1,iwave,nqd,ntrperiod,nsubmode,nfa,nfb,1000,ntol, & newdat,nagain,max_drift,ndepth,mycall,hiscall,hisgrid) - MHz=fcenter + MHz=fcenter freq0=MHz + 0.001d0*ikhz if(nsnr0.gt.-99) then - do i=1,ndecodes !Check for dupes - i1=index(result(i)(42:),trim(msg0)) - if(i1.gt.0) go to 800 !This is a dupe, don't save it again - enddo + if(.not.bClickDecode) then + do i=1,ndecodes !Check for dupes + i1=index(result(i)(42:),trim(msg0)) + if(i1.gt.0) go to 800 !This is a dupe, don't save it again + enddo + endif nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal nq65df=nq65df + nfreq0 - 1000 @@ -130,6 +133,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & freq1=freq0 + 0.001d0*(ikhz1-ikhz) frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal fsked=frx - 0.001*ndop00/2.0 - 0.001*offset + print*,'B',nCFOM,ndop00,frx,fsked,nsnr0,bClickDecode if(iand(nCFOM,2).eq.2) write(*,3001) nCFOM,ndop00,frx,fsked 3001 format('A',i5,i8,f10.3,f10.1) ctmp=csubmode//' '//trim(msg0) diff --git a/qmap/libqmap/q65c.f90 b/qmap/libqmap/q65c.f90 index 678d504b3..a3e8bb313 100644 --- a/qmap/libqmap/q65c.f90 +++ b/qmap/libqmap/q65c.f90 @@ -44,6 +44,7 @@ subroutine q65c(itimer) call chkstat(dd,max_nhsym,bSkip) if(bSkip) return + print*,'A' call timer('decode0 ',0) call decode0(dd,ss,savg) call timer('decode0 ',1) diff --git a/qmap/libqmap/qmapa.f90 b/qmap/libqmap/qmapa.f90 index 308ec4e48..3d063d133 100644 --- a/qmap/libqmap/qmapa.f90 +++ b/qmap/libqmap/qmapa.f90 @@ -24,7 +24,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, & real ss(400,NFFT) !Symbol spectra real savg(NFFT) !Average spectrum real*8 fcenter !Center RF frequency, MHz - logical*1 bAlso30 + logical*1 bAlso30,bClickDecode character mycall*12,hiscall*12,hisgrid*6 type(candidate) :: cand(MAX_CANDIDATES) character*60 result @@ -53,6 +53,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, & foffset=0.001*(1270 + nfcal) !Offset from sync tone, plus CAL fqso=mousefqso + foffset - 0.5*(nfa+nfb) + nfshift !fqso at baseband (khz) nqd=0 + bClickDecode=(nagain.eq.1) nagain2=0 call timer('filbig ',0) @@ -69,10 +70,10 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, & ikhz=nint(freq) idec=-1 call timer('q65b ',0) - call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & - ntrperiod,iseq, & - mycall,hiscall,hisgrid,mode_q65_tmp,f0,fqso,nkhz_center,newdat, & - nagain2,max_drift,offset,ndepth,datetime,nCFOM,ndop00,idec) + call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, & + ntrperiod,iseq,mycall,hiscall,hisgrid,mode_q65_tmp,f0,fqso, & + nkhz_center,newdat,nagain2,bClickDecode,max_drift,offset, & + ndepth,datetime,nCFOM,ndop00,idec) call timer('q65b ',1) tsec=sec_midn() - tsec0 ! Don't start another decode attempt if it's too late... diff --git a/qmap/mainwindow.cpp b/qmap/mainwindow.cpp index d3aa60d08..17ca8a739 100644 --- a/qmap/mainwindow.cpp +++ b/qmap/mainwindow.cpp @@ -748,6 +748,7 @@ void MainWindow::diskWriteFinished() //diskWriteFinished void MainWindow::decoderFinished() //diskWriteFinished { + qDebug() << "bb Decoder Finished"; ui->DecodeButton->setStyleSheet(""); decodeBusy(false); m_startAnother=m_loopall; @@ -909,7 +910,7 @@ void MainWindow::decode() //decode() char *from = (char*) datcom_.d4; memcpy(to, from, sizeof(datcom_)); - datcom_.nagain=0; +// datcom_.nagain=0; datcom_.ndiskdat=0; m_call3Modified=false; @@ -921,6 +922,7 @@ void MainWindow::decode() //decode() decodes_.nQDecoderDone=0; if(m_nTx30<5) { int itimer=0; + qDebug() << "aa" << datcom_.nagain; watcher3.setFuture(QtConcurrent::run (std::bind (q65c_, &itimer))); decodeBusy(true); }