diff --git a/lib/decode65a.f90 b/lib/decode65a.f90 index 8a7f3cd80..916cce572 100644 --- a/lib/decode65a.f90 +++ b/lib/decode65a.f90 @@ -30,7 +30,7 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, & ! NB: cx has sample rate 12000*77125/672000 = 1378.125 Hz ! Check for a shorthand message - if(single_decode) then + if(single_decode .and. mode65.ne.101) then call sh65(cx,n5,mode65,ntol,xdf,nspecial,sync2) if(nspecial.gt.0) then a=0. @@ -96,7 +96,7 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, & qual0=-1.e30 minsmo=0 maxsmo=0 - if(mode65.ge.2) then + if(mode65.ge.2 .and. mode65.ne.101) then minsmo=nint(width/df) maxsmo=2*minsmo endif diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 642f44fb5..d59ad7413 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -84,7 +84,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) !$omp parallel sections num_threads(2) copyin(/timer_private/) shared(ndecoded) if(.true.) !iif() needed on Mac !$omp section - if(params%nmode.eq.65 .or. (params%nmode.eq.(65+9) .and. params%ntxmode.eq.65)) then + if(params%nmode.eq.65 .or. params%nmode.eq.165 .or. & + (params%nmode.eq.(65+9) .and. params%ntxmode.eq.65)) then ! We're in JT65 mode, or should do JT65 first if(newdat65) dd(1:npts65)=id2(1:npts65) nf1=params%nfa @@ -274,8 +275,13 @@ contains endif endif endif - write(*,1010) params%nutc,snr,dt,freq,csync,decoded,cflags -1010 format(i4.4,i4,f5.1,i5,1x,a2,1x,a22,1x,a3) + if(ft.ge.100) then + write(*,1009) params%nutc,snr,dt,freq,csync,decoded,ft-100 +1009 format(i4.4,i4,f5.1,i5,1x,a2,1x,a22,i2) + else + write(*,1010) params%nutc,snr,dt,freq,csync,decoded,cflags +1010 format(i4.4,i4,f5.1,i5,1x,a2,1x,a22,1x,a3) + endif endif write(13,1012) params%nutc,nint(sync),snr,dt,float(freq),drift, & diff --git a/lib/extract.f90 b/lib/extract.f90 index 2bc262e0b..d2775a575 100644 --- a/lib/extract.f90 +++ b/lib/extract.f90 @@ -61,6 +61,19 @@ subroutine extract(s3,nadd,mode65,ntrials,naggressive,ndepth,nflip, & go to 1 endif + if(mode65.eq.101) then + call qra65_dec(s3,dat4,irc) !Decode + decoded=" " + if(irc.ge.0) then + call unpackmsg(dat4,decoded) !Unpack the user message + call fmtmsg(decoded,iz) + nft=100 + irc + else + dec=0 + endif + go to 900 + endif + mrs=mrsym mrs2=mr2sym diff --git a/lib/jt65_decode.f90 b/lib/jt65_decode.f90 index 80b8f9a97..5b362b9d0 100644 --- a/lib/jt65_decode.f90 +++ b/lib/jt65_decode.f90 @@ -163,7 +163,9 @@ contains nvec=100 endif - mode65=2**nsubmode + if(nsubmode.le.8) mode65=2**nsubmode + if(nsubmode.eq.101) mode65=101 + nflip=1 nqd=0 decoded=' ' diff --git a/lib/qra65code.f90 b/lib/qra65code.f90 index 1c34d58fb..59b83dfbe 100644 --- a/lib/qra65code.f90 +++ b/lib/qra65code.f90 @@ -8,9 +8,9 @@ program QRA65code ! Return codes from qra65_dec: ! irc=0 [? ? ?] AP0 (decoding with no a-priori information) ! irc=1 [CQ ? ?] AP27 -! irc=2 [CQ ? ] AP44 +! irc=2 [CQ ? ] AP42 ! irc=3 [CALL ? ?] AP29 -! irc=4 [CALL ? ] AP45 +! irc=4 [CALL ? ] AP44 ! irc=5 [CALL CALL ?] AP57 use packjt diff --git a/mainwindow.cpp b/mainwindow.cpp index 2ddfb8a5a..24d1edf42 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -820,7 +820,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, } statusChanged(); -//### +//### The following is temporary ### { QString t=m_config.my_callsign(); if(t!="IV3NWV" and t!="K1JT" and t!="K9AN" and t!="G4WJS" @@ -1991,7 +1991,9 @@ void MainWindow::decode() //decode() dec_data.params.ntxmode=9; if(m_modeTx=="JT65") dec_data.params.ntxmode=65; dec_data.params.nmode=9; - if(m_mode=="JT65" or m_mode=="QRA65") dec_data.params.nmode=65; + if(m_mode=="JT65") dec_data.params.nmode=65; + if(m_mode=="QRA65") dec_data.params.nmode=165; + if(m_mode=="QRA65") dec_data.params.ntxmode=165; if(m_mode=="JT9+JT65") dec_data.params.nmode=9+65; // = 74 if(m_mode=="JT4") { dec_data.params.nmode=4; @@ -1999,6 +2001,7 @@ void MainWindow::decode() //decode() } dec_data.params.ntrperiod=m_TRperiod; dec_data.params.nsubmode=m_nSubMode; + if(m_mode=="QRA65") dec_data.params.nsubmode=101; dec_data.params.minw=0; dec_data.params.nclearave=m_nclearave; if(m_nclearave!=0) {