FST4W: Use K=66 for first OSD decode attempt and for updating fst4w_calls.txt. Use K=50 for 2nd attempt.

This commit is contained in:
Steven Franke 2020-12-14 16:25:37 -06:00
parent 939e35bd26
commit 2960adc557

View File

@ -69,7 +69,7 @@ contains
logical badsync,unpk77_success,single_decode logical badsync,unpk77_success,single_decode
logical first,nohiscall,lwspr logical first,nohiscall,lwspr
logical new_callsign,plotspec_exists,wcalls_exists,do_nocrc_decode logical new_callsign,plotspec_exists,wcalls_exists,do_k50_decode
logical decdata_exists logical decdata_exists
integer*2 iwave(30*60*12000) integer*2 iwave(30*60*12000)
@ -232,18 +232,19 @@ contains
allocate( cframe(0:160*nss-1) ) allocate( cframe(0:160*nss-1) )
jittermax=2 jittermax=2
do_k50_decode=.false.
if(ndepth.eq.3) then if(ndepth.eq.3) then
nblock=4 nblock=4
jittermax=2 jittermax=2
do_nocrc_decode=.true. do_k50_decode=.true.
elseif(ndepth.eq.2) then elseif(ndepth.eq.2) then
nblock=4 nblock=4
jittermax=2 jittermax=2
do_nocrc_decode=.false. do_k50_decode=.false.
elseif(ndepth.eq.1) then elseif(ndepth.eq.1) then
nblock=4 nblock=4
jittermax=0 jittermax=0
do_nocrc_decode=.false. do_k50_decode=.false.
endif endif
ndropmax=1 ndropmax=1
@ -480,10 +481,10 @@ contains
write(c77,'(77i1)') mod(message101(1:77)+rvec,2) write(c77,'(77i1)') mod(message101(1:77)+rvec,2)
call unpack77(c77,1,msg,unpk77_success) call unpack77(c77,1,msg,unpk77_success)
elseif(iwspr.eq.1) then elseif(iwspr.eq.1) then
! First try decoding with Keff=64 ! Try decoding with Keff=66
maxosd=2 maxosd=2
call timer('d240_74 ',0) call timer('d240_74 ',0)
Keff=64 Keff=66
norder=3 norder=3
call decode240_74(llr,Keff,maxosd,norder,apmask,message74,cw, & call decode240_74(llr,Keff,maxosd,norder,apmask,message74,cw, &
ntype,nharderrors,dmin) ntype,nharderrors,dmin)
@ -496,12 +497,13 @@ contains
write(c77,'(50i1)') message74(1:50) write(c77,'(50i1)') message74(1:50)
c77(51:77)='000000000000000000000110000' c77(51:77)='000000000000000000000110000'
call unpack77(c77,1,msg,unpk77_success) call unpack77(c77,1,msg,unpk77_success)
if(unpk77_success) then if(unpk77_success .and. do_k50_decode) then
! If decode was obtained with Keff=64, save call/grid in fst4w_calls.txt if not there already. ! If decode was obtained with Keff=66, save call/grid in fst4w_calls.txt if not there already.
i1=index(msg,' ') i1=index(msg,' ')
i2=i1+index(msg(i1+1:),' ') i2=i1+index(msg(i1+1:),' ')
wpart=trim(msg(1:i2)) wpart=trim(msg(1:i2))
! Only save callsigns/grids from type 1 messages
if(index(wpart,'/').eq.0 .and. index(wpart,'<').eq.0) then
ifound=0 ifound=0
do i=1,nwcalls do i=1,nwcalls
if(index(wcalls(i),wpart).ne.0) ifound=1 if(index(wcalls(i),wpart).ne.0) ifound=1
@ -518,11 +520,12 @@ contains
endif endif
endif endif
endif endif
endif
3465 continue 3465 continue
! If no decode then try Keff=50 ! If no decode then try Keff=50
iaptype=0 iaptype=0
if( .not. unpk77_success .and. do_nocrc_decode ) then if( .not. unpk77_success .and. do_k50_decode ) then
maxosd=1 maxosd=1
call timer('d240_74 ',0) call timer('d240_74 ',0)
Keff=50 Keff=50
@ -608,7 +611,7 @@ contains
800 enddo !candidate list 800 enddo !candidate list
enddo ! noise blanker loop enddo ! noise blanker loop
if(new_callsign) then ! re-write the fst4w_calls.txt file if(new_callsign .and. do_k50_decode) then ! re-write the fst4w_calls.txt file
open(42,file=trim(data_dir)//'/fst4w_calls.txt',status='unknown') open(42,file=trim(data_dir)//'/fst4w_calls.txt',status='unknown')
do i=1,nwcalls do i=1,nwcalls
write(42,'(a20)') trim(wcalls(i)) write(42,'(a20)') trim(wcalls(i))