From 48b60eab71d3fb7b7571f0975880742852abe9bf Mon Sep 17 00:00:00 2001 From: Steve Franke Date: Tue, 5 Jun 2018 16:37:29 -0500 Subject: [PATCH] Make two sync passes, one for each sync array. Label candidates with their type and decode accordingly. --- CMakeLists.txt | 16 +- lib/ft8/.sync8.f90.swp | Bin 0 -> 20480 bytes lib/{fsk4hf => ft8}/bpdecode174_91.f90 | 0 lib/ft8/chkcrc14a.f90 | 24 + lib/{fsk4hf => ft8}/encode174_91.f90 | 0 lib/{fsk4hf => ft8}/extractmessage174_91.f90 | 0 lib/ft8/{ft8b.f90 => ft8b_1.f90} | 10 +- lib/ft8/ft8b_2.f90 | 457 ++++++++++++++++++ .../ldpc_174_91_c_colorder.f90 | 0 .../ldpc_174_91_c_generator.f90 | 0 lib/{fsk4hf => ft8}/ldpc_174_91_c_parity.f90 | 0 lib/{fsk4hf => ft8}/ldpcsim174_91.f90 | 0 lib/{fsk4hf => ft8}/osd174_91.f90 | 34 +- lib/ft8/sync8.f90 | 41 +- lib/ft8/sync8d.f90 | 13 +- lib/ft8_decode.f90 | 18 +- 16 files changed, 558 insertions(+), 55 deletions(-) create mode 100644 lib/ft8/.sync8.f90.swp rename lib/{fsk4hf => ft8}/bpdecode174_91.f90 (100%) create mode 100644 lib/ft8/chkcrc14a.f90 rename lib/{fsk4hf => ft8}/encode174_91.f90 (100%) rename lib/{fsk4hf => ft8}/extractmessage174_91.f90 (100%) rename lib/ft8/{ft8b.f90 => ft8b_1.f90} (98%) create mode 100644 lib/ft8/ft8b_2.f90 rename lib/{fsk4hf => ft8}/ldpc_174_91_c_colorder.f90 (100%) rename lib/{fsk4hf => ft8}/ldpc_174_91_c_generator.f90 (100%) rename lib/{fsk4hf => ft8}/ldpc_174_91_c_parity.f90 (100%) rename lib/{fsk4hf => ft8}/ldpcsim174_91.f90 (100%) rename lib/{fsk4hf => ft8}/osd174_91.f90 (92%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 505876daf..7b4c2a0b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -374,7 +374,7 @@ set (wsjt_FSRCS lib/fsk4hf/bpdecode120.f90 lib/fsk4hf/bpdecode168.f90 lib/ft8/bpdecode174.f90 - lib/fsk4hf/bpdecode174_91.f90 + lib/ft8/bpdecode174_91.f90 lib/fsk4hf/bpdecode300.f90 lib/fsk4hf/bpdecode204.f90 lib/baddata.f90 @@ -384,6 +384,7 @@ set (wsjt_FSRCS lib/fsk4hf/chkcrc10.f90 lib/fsk4hf/chkcrc12.f90 lib/ft8/chkcrc12a.f90 + lib/ft8/chkcrc14a.f90 lib/chkcall.f90 lib/chkhist.f90 lib/chkmsg.f90 @@ -411,7 +412,7 @@ set (wsjt_FSRCS lib/fsk4hf/encode120.f90 lib/fsk4hf/encode168.f90 lib/ft8/encode174.f90 - lib/fsk4hf/encode174_91.f90 + lib/ft8/encode174_91.f90 lib/fsk4hf/encode300.f90 lib/fsk4hf/encode204.f90 lib/entail.f90 @@ -421,7 +422,7 @@ set (wsjt_FSRCS lib/extractmessage144.f90 lib/fsk4hf/extractmessage168.f90 lib/ft8/extractmessage174.f90 - lib/fsk4hf/extractmessage174_91.f90 + lib/ft8/extractmessage174_91.f90 lib/fano232.f90 lib/fast9.f90 lib/fast_decode.f90 @@ -452,7 +453,8 @@ set (wsjt_FSRCS lib/freqcal.f90 lib/fsk4hf/fsk4hf.f90 lib/ft8/ft8apset.f90 - lib/ft8/ft8b.f90 + lib/ft8/ft8b_1.f90 + lib/ft8/ft8b_2.f90 lib/ft8/ft8code.f90 lib/ft8/ft8_downsample.f90 lib/ft8/ft8sim.f90 @@ -502,7 +504,7 @@ set (wsjt_FSRCS lib/fsk4hf/ldpcsim120.f90 lib/fsk4hf/ldpcsim168.f90 lib/ft8/ldpcsim174.f90 - lib/fsk4hf/ldpcsim174_91.f90 + lib/ft8/ldpcsim174_91.f90 lib/fsk4hf/ldpcsim300.f90 lib/fsk4hf/ldpcsim204.f90 lib/ldpcsim40.f90 @@ -532,7 +534,7 @@ set (wsjt_FSRCS lib/fsk4hf/msksoftsym.f90 lib/fsk4hf/msksoftsymw.f90 lib/ft8/osd174.f90 - lib/fsk4hf/osd174_91.f90 + lib/ft8/osd174_91.f90 lib/fsk4hf/osd300.f90 lib/fsk4hf/osd204.f90 lib/pctile.f90 @@ -1239,7 +1241,7 @@ target_link_libraries (ldpcsim120 wsjt_fort wsjt_cxx) add_executable (ldpcsim174 lib/ft8/ldpcsim174.f90 wsjtx.rc) target_link_libraries (ldpcsim174 wsjt_fort wsjt_cxx) -add_executable (ldpcsim174_91 lib/fsk4hf/ldpcsim174_91.f90 wsjtx.rc) +add_executable (ldpcsim174_91 lib/ft8/ldpcsim174_91.f90 wsjtx.rc) target_link_libraries (ldpcsim174_91 wsjt_fort wsjt_cxx) add_executable (ldpcsim144 lib/ldpcsim144.f90 wsjtx.rc) diff --git a/lib/ft8/.sync8.f90.swp b/lib/ft8/.sync8.f90.swp new file mode 100644 index 0000000000000000000000000000000000000000..97d11ad1501c6bf5ee2c8e7e1cdc57564e941ee0 GIT binary patch literal 20480 zcmeI2UyR&F9mgF~T1cTy3zR<+XpTtK-t~HI@7*OmVbr8*2$6E6x`5K_!(n^v%k1si zd-iOycM^pMplT38fQoo(1qz}((IWAmO7H;c15yQo2Y879K|vrMqDuUED13iod)K>n zX`p>Th_UW->-qPancvL(=AQ%mgYP@Tj#;*b=dh-IS$p$C_doEQ#t$FR@;LL8t%yQi z@>vtn#VE;JXZ-L)nr^kuW~tRrL%%fusg`^1R%yLtOk-V@_?o`vl`58AOf*3Ng5 z@R$|fBTF-vS~-;llm=e521X)o9lK5IxQ-lLN8Y)>-f-s!UbZ-uP-#GEKxsf}Kxsf} zKxsf}Kxsf};D1j8Vt7#d2#Woxvgld)dtmPOrqX>^`8%2mKUlioSpGgb7hXEmkJ5nB zfYN}{fYN}{fYN}{fYN}{fYN}{fYN}{z<)slepl0;#^(Pq+Ti2%OK01tz8@Lq5axE1{A5Xu664W0$x1fK$H;5fJ!*q{O44qkk% zrdZ6Ja8BI?Jb)2RqzFH8C(J%0;jjMMqjuBJ_kMyc0mSGunx|G z_k()@Jqv6t%>)Z}7=62;X^iDw?1zmUZ}|0G+p^mOe|*vJ>$w3>{6$H(o8lJ_UU^)+ z7OpCQ0_TGZKOXC$k7Qk6M7G{BxncE%HRIJY3^wDz4bQf;B7OCLA32-R4dnFZQkXB8NQW$qS)b>^WC&-ue=%Zd z(%+%lvLMO@g(s1pwYsBW#NsU4&aF!s7m?mD8?^%H&PvUjo3bFRe5Q_C`4-JB!{cIS z7!`V`1$8JWi@JJJs;w60QkdQwM*bFpTaM8Xxrl~)WH=NrX>`ku2!(D@mvU{WZOhwg zPPJcTM1j=X2Rt!YH0Gj^n0VZ0O~#Y%Sm(P5S>;wT3nk??s{pYn>vW1Wh{{S_VRw#T{dl);>Pumt!rOrIoeonBu#yKwmcv5_Q-^%6kBCet7qXgYa132M38Tm+rXI{g{vY~0zX)0oJl=V2(B&AkH% zb&!_RineLqkge^>{~Im}RS$M%gB^`VB3WHb3KVzCqwz5{u;sv%^~U>ByE3oT1-;di zC(k+U)wQ#0jIjlFM9v7KC<%91z!R2UjI!Jx4EsFUq?Lk5GYF?%>romcJa_-uG9_8< zoDHK4BX|&`eMIDeCv9UA2kmZ5t;T&h`Z0fz%}ipS{0&;6l%|7>pHmsX7_(x>jK~6- z``JN<>>w$G>>%d4O`S_aSiVZDDGilluAXuz6AJO@Ut10llt`LrGU}*fq*IWIVu8TS zD_dV1?GpjilQBs`uGur7g866RICST4Ml2sjp~yx9O~$B+f*UpgsWGu&;T2*+GK@yU zg=C)({LQIPk+fD5DN2?+PDh#R>tj>4r0JL~$Ha^{^DJa;$k5P*n6XYx*K}5<%cLqWPQE^hwL0O0Bf4bg-)I*jU&=P&f7*Os%xg zlqH=h;GAQjV>#{;JGF~+vbUnMp`W!&0dujZPDGc@gOR(y?n?*5k%0PTXDnO6HyL%) zA$4c0hKuscj%zU{=dbM%$0`^DAYxEzDCcM_V*O%FZn*6Zbi8Q7SeQ$u+n#1Vd0V(I z&4r({qvNAkkR=ft`a(n*S(}<5r|m+(G6XF`VCO#+guxSSVx$!&!qM%OWvnV_j@WQ( z4*80FC(+Ake&VK85PGm2nWe~Lc~E*%$7JXat7nd%r%2L0u`T+dNz1Q2{`On|Ek)`A z%e4RvopNbWi9l({AWcNd5jdNcM)`~|auwZ`SJ>Bo4Lk}$;DL95JHXB0Maa7b{#ePT&7yjg z29ySr29ySr29ySr29ySr29ySr29yR~i3V`)gOg9W6D(e99+Ryh_K{g6M)IscUhsHZ z^30`nXoT14U0iYRv9R}|hPIG6)1fOF$dpfg*N&T%iIX<#y?tWIJDXap&c3na?M*F~ zyKgLccXRzqG#qc%4lHq7hyyh`(UtpU+~2VBBpc^qaQ(j^bo5M#@uYohv8!}uM!9t_E_kLluXNQ`9IVng ' + if(ncrc10.ne.icrc10) msg37=c1//' RR73; '//c2//' <...> ' + +! msg37=c1//' RR73; '//c2//' <...> ' + write(msg37(35:37),1010) irpt +1010 format(i3.2) + if(msg37(35:35).ne.'-') msg37(35:35)='+' + + iz=len(trim(msg37)) + do iter=1,10 !Collapse multiple blanks + ib2=index(msg37(1:iz),' ') + if(ib2.lt.1) exit + msg37=msg37(1:ib2)//msg37(ib2+2:) + iz=iz-1 + enddo + else + msg37=message//' ' + endif + + return + endif + enddo + + return +end subroutine ft8b_2 + +!subroutine normalizebmet(bmet,n) +! real bmet(n) +! +! bmetav=sum(bmet)/real(n) +! bmet2av=sum(bmet*bmet)/real(n) +! var=bmet2av-bmetav*bmetav +! if( var .gt. 0.0 ) then +! bmetsig=sqrt(var) +! else +! bmetsig=sqrt(bmet2av) +! endif +! bmet=bmet/bmetsig +! return +!end subroutine normalizebmet + + diff --git a/lib/fsk4hf/ldpc_174_91_c_colorder.f90 b/lib/ft8/ldpc_174_91_c_colorder.f90 similarity index 100% rename from lib/fsk4hf/ldpc_174_91_c_colorder.f90 rename to lib/ft8/ldpc_174_91_c_colorder.f90 diff --git a/lib/fsk4hf/ldpc_174_91_c_generator.f90 b/lib/ft8/ldpc_174_91_c_generator.f90 similarity index 100% rename from lib/fsk4hf/ldpc_174_91_c_generator.f90 rename to lib/ft8/ldpc_174_91_c_generator.f90 diff --git a/lib/fsk4hf/ldpc_174_91_c_parity.f90 b/lib/ft8/ldpc_174_91_c_parity.f90 similarity index 100% rename from lib/fsk4hf/ldpc_174_91_c_parity.f90 rename to lib/ft8/ldpc_174_91_c_parity.f90 diff --git a/lib/fsk4hf/ldpcsim174_91.f90 b/lib/ft8/ldpcsim174_91.f90 similarity index 100% rename from lib/fsk4hf/ldpcsim174_91.f90 rename to lib/ft8/ldpcsim174_91.f90 diff --git a/lib/fsk4hf/osd174_91.f90 b/lib/ft8/osd174_91.f90 similarity index 92% rename from lib/fsk4hf/osd174_91.f90 rename to lib/ft8/osd174_91.f90 index 38b5e69ba..34419f98f 100644 --- a/lib/fsk4hf/osd174_91.f90 +++ b/lib/ft8/osd174_91.f90 @@ -98,7 +98,7 @@ absrx=absrx(indices) rx=rx(indices) apmaskr=apmaskr(indices) -call mrbencode(m0,c0,g2,N,K) +call mrbencode91(m0,c0,g2,N,K) nxor=ieor(c0,hdec) nhardmin=sum(nxor) dmin=sum(nxor*absrx) @@ -161,7 +161,7 @@ do iorder=1,nord ntotal=ntotal+1 me=ieor(m0,mi) if(n1.eq.iflag) then - call mrbencode(me,ce,g2,N,K) + call mrbencode91(me,ce,g2,N,K) e2sub=ieor(ce(K+1:N),hdec(K+1:N)) e2=e2sub nd1Kpt=sum(e2sub(1:nt))+1 @@ -171,7 +171,7 @@ do iorder=1,nord nd1Kpt=sum(e2(1:nt))+2 endif if(nd1Kpt .le. ntheta) then - call mrbencode(me,ce,g2,N,K) + call mrbencode91(me,ce,g2,N,K) nxor=ieor(ce,hdec) if(n1.eq.iflag) then dd=d1+sum(e2sub*absrx(K+1:N)) @@ -190,7 +190,7 @@ do iorder=1,nord enddo ! Get the next test error pattern, iflag will go negative ! when the last pattern with weight iorder has been generated. - call nextpat(misub,k,iorder,iflag) + call nextpat91(misub,k,iorder,iflag) enddo enddo @@ -201,7 +201,7 @@ if(npre2.eq.1) then do i2=i1-1,1,-1 ntotal=ntotal+1 mi(1:ntau)=ieor(g2(K+1:K+ntau,i1),g2(K+1:K+ntau,i2)) - call boxit(reset,mi(1:ntau),ntau,ntotal,i1,i2) + call boxit91(reset,mi(1:ntau),ntau,ntotal,i1,i2) enddo enddo @@ -214,7 +214,7 @@ if(npre2.eq.1) then iflag=K-nord+1 do while(iflag .ge.0) me=ieor(m0,misub) - call mrbencode(me,ce,g2,N,K) + call mrbencode91(me,ce,g2,N,K) e2sub=ieor(ce(K+1:N),hdec(K+1:N)) do i2=0,ntau ntotal2=ntotal2+1 @@ -222,7 +222,7 @@ if(npre2.eq.1) then if(i2.gt.0) ui(i2)=1 r2pat=ieor(e2sub,ui) 778 continue - call fetchit(reset,r2pat(1:ntau),ntau,in1,in2) + call fetchit91(reset,r2pat(1:ntau),ntau,in1,in2) if(in1.gt.0.and.in2.gt.0) then ncount2=ncount2+1 mi=misub @@ -230,7 +230,7 @@ if(npre2.eq.1) then mi(in2)=1 if(sum(mi).lt.nord+npre1+npre2.or.any(iand(apmaskr(1:K),mi).eq.1)) cycle me=ieor(m0,mi) - call mrbencode(me,ce,g2,N,K) + call mrbencode91(me,ce,g2,N,K) nxor=ieor(ce,hdec) dd=sum(nxor*absrx) if( dd .lt. dmin ) then @@ -241,7 +241,7 @@ if(npre2.eq.1) then goto 778 endif enddo - call nextpat(misub,K,nord,iflag) + call nextpat91(misub,K,nord,iflag) enddo endif @@ -254,7 +254,7 @@ cw(colorder+1)=cw ! put the codeword back into received-word order return end subroutine osd174_91 -subroutine mrbencode(me,codeword,g2,N,K) +subroutine mrbencode91(me,codeword,g2,N,K) integer*1 me(K),codeword(N),g2(N,K) ! fast encoding for low-weight test patterns codeword=0 @@ -264,9 +264,9 @@ integer*1 me(K),codeword(N),g2(N,K) endif enddo return -end subroutine mrbencode +end subroutine mrbencode91 -subroutine nextpat(mi,k,iorder,iflag) +subroutine nextpat91(mi,k,iorder,iflag) integer*1 mi(k),ms(k) ! generate the next test error pattern ind=-1 @@ -293,9 +293,9 @@ subroutine nextpat(mi,k,iorder,iflag) endif enddo return -end subroutine nextpat +end subroutine nextpat91 -subroutine boxit(reset,e2,ntau,npindex,i1,i2) +subroutine boxit91(reset,e2,ntau,npindex,i1,i2) integer*1 e2(1:ntau) integer indexes(5000,2),fp(0:525000),np(5000) logical reset @@ -329,9 +329,9 @@ subroutine boxit(reset,e2,ntau,npindex,i1,i2) np(ip)=npindex endif return -end subroutine boxit +end subroutine boxit91 -subroutine fetchit(reset,e2,ntau,i1,i2) +subroutine fetchit91(reset,e2,ntau,i1,i2) integer indexes(5000,2),fp(0:525000),np(5000) integer lastpat integer*1 e2(ntau) @@ -367,5 +367,5 @@ subroutine fetchit(reset,e2,ntau,i1,i2) endif lastpat=ipat return -end subroutine fetchit +end subroutine fetchit91 diff --git a/lib/ft8/sync8.f90 b/lib/ft8/sync8.f90 index 30f6de172..b6e11ed1f 100644 --- a/lib/ft8/sync8.f90 +++ b/lib/ft8/sync8.f90 @@ -10,14 +10,15 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) real x(NFFT1) real sync2d(NH1,-JZ:JZ) real red(NH1) - real candidate0(3,200) - real candidate(3,200) + real candidate0(4,200) + real candidate(4,200) real dd(NMAX) integer jpeak(NH1) integer indx(NH1) integer ii(1) - integer icos7(0:6) - data icos7/2,5,6,0,4,1,3/ !Costas 7x7 tone pattern + integer icos7_1(0:6),icos7_2(0:6),icos7(0:6) + data icos7_1/2,5,6,0,4,1,3/ !Costas 7x7 tone pattern + data icos7_2/3,1,4,0,6,5,2/ !Costas 7x7 tone pattern equivalence (x,cx) ! Compute symbol spectra, stepping by NSTEP steps. @@ -49,6 +50,11 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) nfos=NFFT1/NSPS ! # frequency bin oversampling factor jstrt=0.5/tstep + candidate0=0. + k=0 +do itype=1,2 + if(itype.eq.1) icos7=icos7_1 + if(itype.eq.2) icos7=icos7_2 do i=ia,ib do j=-JZ,+JZ ta=0. @@ -58,16 +64,16 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) t0b=0. t0c=0. do n=0,6 - k=j+jstrt+nssy*n - if(k.ge.1.and.k.le.NHSYM) then - ta=ta + s(i+nfos*icos7(n),k) - t0a=t0a + sum(s(i:i+nfos*6:nfos,k)) + m=j+jstrt+nssy*n + if(m.ge.1.and.m.le.NHSYM) then + ta=ta + s(i+nfos*icos7(n),m) + t0a=t0a + sum(s(i:i+nfos*6:nfos,m)) endif - tb=tb + s(i+nfos*icos7(n),k+nssy*36) - t0b=t0b + sum(s(i:i+nfos*6:nfos,k+nssy*36)) - if(k+nssy*72.le.NHSYM) then - tc=tc + s(i+nfos*icos7(n),k+nssy*72) - t0c=t0c + sum(s(i:i+nfos*6:nfos,k+nssy*72)) + tb=tb + s(i+nfos*icos7(n),m+nssy*36) + t0b=t0b + sum(s(i:i+nfos*6:nfos,m+nssy*36)) + if(m+nssy*72.le.NHSYM) then + tc=tc + s(i+nfos*icos7(n),m+nssy*72) + t0c=t0c + sum(s(i:i+nfos*6:nfos,m+nssy*72)) endif enddo t=ta+tb+tc @@ -98,8 +104,6 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) base=red(ibase) red=red/base - candidate0=0. - k=0 do i=1,200 n=ia + indx(iz+1-i) - 1 if(red(n).lt.syncmin) exit @@ -107,7 +111,9 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) candidate0(1,k)=n*df candidate0(2,k)=(jpeak(n)-1)*tstep candidate0(3,k)=red(n) + candidate0(4,k)=itype enddo +enddo ncand=k ! Put nfqso at top of list, and save only the best of near-dupe freqs. @@ -121,9 +127,6 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) if(candidate0(3,i).lt.candidate0(3,j)) candidate0(3,i)=0. endif enddo -! write(*,3001) i,candidate0(1,i-1),candidate0(1,i),candidate0(3,i-1), & -! candidate0(3,i) -!3001 format(i2,4f8.1) endif enddo @@ -143,6 +146,8 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand,sbase) candidate(1,k)=abs(candidate0(1,j)) candidate(2,k)=candidate0(2,j) candidate(3,k)=candidate0(3,j) + candidate(4,k)=candidate0(4,j) +!write(*,*) i,candidate(1:4,k) k=k+1 endif enddo diff --git a/lib/ft8/sync8d.f90 b/lib/ft8/sync8d.f90 index d0d1c63b8..6fd86a50f 100644 --- a/lib/ft8/sync8d.f90 +++ b/lib/ft8/sync8d.f90 @@ -1,4 +1,4 @@ -subroutine sync8d(cd0,i0,ctwk,itwk,sync) +subroutine sync8d(cd0,i0,ctwk,itwk,itype,sync) ! Compute sync power for a complex, downsampled FT8 signal. @@ -9,8 +9,9 @@ subroutine sync8d(cd0,i0,ctwk,itwk,sync) complex ctwk(32) complex z1,z2,z3 logical first - integer icos7(0:6) - data icos7/2,5,6,0,4,1,3/ + integer icos7_1(0:6),icos7_2(0:6),icos7(0:6) + data icos7_1/2,5,6,0,4,1,3/ + data icos7_2/3,1,4,0,6,5,2/ data first/.true./ save first,twopi,fs2,dt2,taus,baud,csync @@ -34,6 +35,12 @@ subroutine sync8d(cd0,i0,ctwk,itwk,sync) first=.false. endif + if(itype.eq.1) then + icos7=icos7_1 + else + icos7=icos7_2 + endif + sync=0 do i=0,6 !Sum over 7 Costas frequencies and i1=i0+i*32 !three Costas arrays diff --git a/lib/ft8_decode.f90 b/lib/ft8_decode.f90 index 3f6291fd3..aeade9e55 100644 --- a/lib/ft8_decode.f90 +++ b/lib/ft8_decode.f90 @@ -44,7 +44,7 @@ contains procedure(ft8_decode_callback) :: callback real s(NH1,NHSYM) real sbase(NH1) - real candidate(3,200) + real candidate(4,200) real dd(15*12000) logical, intent(in) :: lft8apon,lapcqonly,nagain logical newdat,lsubtract,ldupe,bcontest @@ -102,13 +102,21 @@ contains sync=candidate(3,icand) f1=candidate(1,icand) xdt=candidate(2,icand) + iftype=candidate(4,icand) xbase=10.0**(0.1*(sbase(nint(f1/3.125))-40.0)) nsnr0=min(99,nint(10.0*log10(sync) - 25.5)) !### empirical ### call timer('ft8b ',0) - call ft8b(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon, & - lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, & - hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, & - nbadcrc,iappass,iera,msg37,xsnr) + if(iftype.eq.1) then + call ft8b_1(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon, & + lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, & + hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, & + nbadcrc,iappass,iera,msg37,xsnr) + else + call ft8b_2(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon, & + lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, & + hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, & + nbadcrc,iappass,iera,msg37,xsnr) + endif message=msg37(1:22) !### nsnr=nint(xsnr) xdt=xdt-0.5