mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-24 02:12:37 -04:00
List decoding now supports 57 list messages.
This commit is contained in:
parent
afc4f2fb54
commit
8285fd28a8
@ -501,6 +501,7 @@ set (wsjt_FSRCS
|
|||||||
lib/qra_loops.f90
|
lib/qra_loops.f90
|
||||||
lib/qra/q65/q65_ap.f90
|
lib/qra/q65/q65_ap.f90
|
||||||
lib/qra/q65/q65_loops.f90
|
lib/qra/q65/q65_loops.f90
|
||||||
|
lib/qra/q65/q65_set_list.f90
|
||||||
lib/refspectrum.f90
|
lib/refspectrum.f90
|
||||||
lib/savec2.f90
|
lib/savec2.f90
|
||||||
lib/sec0.f90
|
lib/sec0.f90
|
||||||
|
@ -90,16 +90,17 @@ contains
|
|||||||
this%callback => callback
|
this%callback => callback
|
||||||
if(nutc.eq.-999) print*,lapdx,nfa,nfb,nfqso !Silence warning
|
if(nutc.eq.-999) print*,lapdx,nfa,nfb,nfqso !Silence warning
|
||||||
nFadingModel=1
|
nFadingModel=1
|
||||||
|
call q65_set_list(mycall,hiscall,hisgrid,codewords,ncw)
|
||||||
dgen=0
|
dgen=0
|
||||||
call q65_enc(dgen,codewords) !Initialize Q65
|
call q65_enc(dgen,codewords) !Initialize Q65
|
||||||
! nQSOprogress=3 !###
|
! nQSOprogress=3 !###
|
||||||
dat4=0
|
dat4=0
|
||||||
call timer('sync_q65',0)
|
call timer('sync_q65',0)
|
||||||
call q65_sync(iwave,ntrperiod*12000,mode65,nQSOprogress,nsps,nfqso, &
|
call q65_sync(iwave,ntrperiod*12000,mode65,codewords,ncw,nsps, &
|
||||||
ntol,xdt,f0,snr1,dat4,snr2,irc)
|
nfqso,ntol,xdt,f0,snr1,dat4,snr2,irc)
|
||||||
call timer('sync_q65',1)
|
call timer('sync_q65',1)
|
||||||
write(55,3055) nutc,xdt,f0,snr1,snr2,irc
|
! write(55,3055) nutc,xdt,f0,snr1,snr2,irc
|
||||||
3055 format(i4.4,4f9.2,i5)
|
!3055 format(i4.4,4f9.2,i5)
|
||||||
if(irc.ge.0) then
|
if(irc.ge.0) then
|
||||||
xdt1=xdt
|
xdt1=xdt
|
||||||
f1=f0
|
f1=f0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine q65_sync(iwave,nmax,mode_q65,nQSOprogress,nsps,nfqso,ntol, &
|
subroutine q65_sync(iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, &
|
||||||
xdt,f0,snr1,dat4,snr2,irc)
|
xdt,f0,snr1,dat4,snr2,irc)
|
||||||
|
|
||||||
! Detect and align with the Q65 sync vector, returning time and frequency
|
! Detect and align with the Q65 sync vector, returning time and frequency
|
||||||
@ -15,7 +15,6 @@ subroutine q65_sync(iwave,nmax,mode_q65,nQSOprogress,nsps,nfqso,ntol, &
|
|||||||
|
|
||||||
parameter (NSTEP=8) !Step size nsps/NSTEP
|
parameter (NSTEP=8) !Step size nsps/NSTEP
|
||||||
parameter (LN=2176*63) !LN=LL*NN; LL=64*(mode_q65+2), NN=63
|
parameter (LN=2176*63) !LN=LL*NN; LL=64*(mode_q65+2), NN=63
|
||||||
character*37 msg,msgsent
|
|
||||||
integer*2 iwave(0:nmax-1) !Raw data
|
integer*2 iwave(0:nmax-1) !Raw data
|
||||||
integer isync(22) !Indices of sync symbols
|
integer isync(22) !Indices of sync symbols
|
||||||
integer itone(85)
|
integer itone(85)
|
||||||
@ -98,27 +97,28 @@ subroutine q65_sync(iwave,nmax,mode_q65,nQSOprogress,nsps,nfqso,ntol, &
|
|||||||
lag2=4.0/dtstep + 0.9999 !Include EME delays
|
lag2=4.0/dtstep + 0.9999 !Include EME delays
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if(ncw.lt.1) go to 100
|
||||||
|
|
||||||
!######################################################################
|
!######################################################################
|
||||||
! Try list decoding via "Deep Likelihood".
|
! Try list decoding via "Deep Likelihood".
|
||||||
|
|
||||||
ipk=0
|
ipk=0
|
||||||
jpk=0
|
jpk=0
|
||||||
ccf_best=0.
|
ccf_best=0.
|
||||||
do imsg=1,4
|
do imsg=1,ncw
|
||||||
ccf=0.
|
i=1
|
||||||
msg='K1ABC W9XYZ RRR'
|
k=0
|
||||||
if(imsg.eq.2) msg='K1ABC W9XYZ RR73'
|
do j=1,85
|
||||||
if(imsg.eq.3) msg='K1ABC W9XYZ 73'
|
if(j.eq.isync(i)) then
|
||||||
if(imsg.eq.4) msg='CQ K9AN EN50'
|
i=i+1
|
||||||
call genq65(msg,0,msgsent,itone,i3,n3)
|
itone(j)=-1
|
||||||
j=0
|
else
|
||||||
do k=1,85
|
k=k+1
|
||||||
if(sync(k)>0.) cycle
|
itone(j)=codewords(k,imsg)
|
||||||
j=j+1
|
endif
|
||||||
codewords(j,imsg)=itone(k) - 1
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! Compute 2D ccf using all 85 symbols in the list message
|
! Compute 2D ccf using all 85 symbols in the list message
|
||||||
|
ccf=0.
|
||||||
do lag=lag1,lag2
|
do lag=lag1,lag2
|
||||||
do k=1,85
|
do k=1,85
|
||||||
j=j0 + NSTEP*(k-1) + 1 + lag
|
j=j0 + NSTEP*(k-1) + 1 + lag
|
||||||
@ -162,7 +162,7 @@ subroutine q65_sync(iwave,nmax,mode_q65,nQSOprogress,nsps,nfqso,ntol, &
|
|||||||
do ibw=0,10
|
do ibw=0,10
|
||||||
b90=1.72**ibw
|
b90=1.72**ibw
|
||||||
call q65_intrinsics_ff(s3,nsubmode,b90/baud,nFadingModel,s3prob)
|
call q65_intrinsics_ff(s3,nsubmode,b90/baud,nFadingModel,s3prob)
|
||||||
call q65_dec_fullaplist(s3,s3prob,codewords,4,esnodb,dat4,plog,irc)
|
call q65_dec_fullaplist(s3,s3prob,codewords,ncw,esnodb,dat4,plog,irc)
|
||||||
if(irc.ge.0) then
|
if(irc.ge.0) then
|
||||||
snr2=esnodb - db(2500.0/baud)
|
snr2=esnodb - db(2500.0/baud)
|
||||||
go to 900
|
go to 900
|
||||||
@ -171,7 +171,7 @@ subroutine q65_sync(iwave,nmax,mode_q65,nQSOprogress,nsps,nfqso,ntol, &
|
|||||||
|
|
||||||
!######################################################################
|
!######################################################################
|
||||||
! Establish xdt, f0, and snr1 using sync symbols (and perhaps some AP symbols)
|
! Establish xdt, f0, and snr1 using sync symbols (and perhaps some AP symbols)
|
||||||
ccf=0.
|
100 ccf=0.
|
||||||
irc=-2
|
irc=-2
|
||||||
dat4=0
|
dat4=0
|
||||||
ia=ntol/df
|
ia=ntol/df
|
||||||
|
Loading…
x
Reference in New Issue
Block a user