Wire up Fast/Normal/Deep decoding options for MSK144.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7114 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Steven Franke 2016-09-28 22:13:07 +00:00
parent 57a5ad188d
commit 4b9b6d8596
3 changed files with 19 additions and 9 deletions

View File

@ -71,7 +71,7 @@ subroutine hspec(id2,k,nutc0,ntrpdepth,nrxfreq,ntol,bmsk144,ingain, &
if(bmsk144) then
if(k.ge.7168) then
tsec=(k-7168)/12000.0
call mskrtd(id2(k-7168+1:k),nutc0,tsec,ntol,nrxfreq,line1)
call mskrtd(id2(k-7168+1:k),nutc0,tsec,ntol,nrxfreq,ndepth,line1)
endif
endif
!###

View File

@ -18,7 +18,8 @@ program msk144d2
character*12 mycall,hiscall
character(len=500) optarg
type (option) :: long_options(7) = [ &
type (option) :: long_options(8) = [ &
option ('ndepth',.true.,'c','ndepth',''), &
option ('dxcall',.true.,'d','hiscall',''), &
option ('evemode',.true.,'e','',''), &
option ('frequency',.true.,'f','rxfreq',''), &
@ -28,6 +29,7 @@ program msk144d2
option ('short',.false.,'s','enable Sh','') &
]
t0=0.0
ndepth=3
ntol=100
nrxfreq=1500
mycall=''
@ -35,11 +37,13 @@ program msk144d2
bShMsgs=.false.
do
call getopt('d:ef:hm:n:s',long_options,c,optarg,narglen,nstat,noffset,nremain,.true.)
call getopt('c:d:ef:hm:n:s',long_options,c,optarg,narglen,nstat,noffset,nremain,.true.)
if( nstat .ne. 0 ) then
exit
end if
select case (c)
case ('c')
read (optarg(:narglen), *) ndepth
case ('d')
read (optarg(:narglen), *) hiscall
case ('e')
@ -89,7 +93,7 @@ program msk144d2
do i=1,npts,7*512
ichunk=id2(i:i+7*1024-1)
tsec=(i-1)/12000.0
call mskrtd(ichunk,nutc,tsec,ntol,nrxfreq,line)
call mskrtd(ichunk,nutc,tsec,ntol,nrxfreq,ndepth,line)
if( index(line,"^") .ne. 0 .or. index(line,"&") .ne. 0 ) then
write(*,*) line
endif

View File

@ -1,4 +1,4 @@
subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,line)
subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,ndepth,line)
! Real-time decoder for MSK144.
! Analysis block size = NZ = 7168 samples, t_block = 0.597333 s
@ -82,7 +82,7 @@ subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,line)
endif
enddo
pavg=sum(pow)/8.0
! Short ping decoder uses squared-signal spectrum to determine where to
! center a 3-frame analysis window and attempts to decode each of the
! 3 frames along with 2- and 3-frame averages.
@ -94,9 +94,15 @@ subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,line)
goto 999
endif
! If short ping decoder doesn't find a decode, then 4-, 5-, and 7-frame averages
! spanning the first 7 frames of the block.
do iavg=1,NPATTERNS
! If short ping decoder doesn't find a decode,
! Fast - try 4-frame averages only
! Normal - try 4- and 5-frame averages
! Deep - try 4-, 5- and 7-frame averages.
npat=NPATTERNS
if( ndepth .eq. 1 ) npat=2
if( ndepth .eq. 2 ) npat=3
do iavg=1,npat
iavmask=iavpatterns(1:8,iavg)
navg=sum(iavmask)
deltaf=7.0/real(navg) ! search increment for frequency sync