1
0
mirror of https://github.com/saitohirga/WSJT-X.git synced 2025-03-23 20:48:33 -04:00

QMAP now decodes both Q65-60C and Q65-30B in same 60-second Rx sequence.

This commit is contained in:
Joe Taylor 2023-12-06 15:15:48 -05:00
parent 93dba5e623
commit cb7395b504
3 changed files with 27 additions and 13 deletions

View File

@ -7,6 +7,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
real :: f !Freq of sync tone, 0 to 96000 Hz
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
integer :: iseq !0 for first half-minute, 1 for second half
end type candidate
parameter (NFFT=32768) !FFTs done in symspec()
@ -59,6 +60,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
cand(j)%xdt=xdt
cand(j)%snr=snr_sync
cand(j)%ntrperiod=ntrperiod
cand(j)%iseq=iseq
ia=max(1,min(i,i0-nguard))
ib=min(i0+nbw+nguard,32768)
savg(ia:ib)=0.
@ -68,7 +70,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
endif
ntrperiod=30
if(ntrperiod.eq.30) cycle
! if(ntrperiod.eq.30) cycle
call q65_sync(ss,i0,nts_q65,ntrperiod,iseq,sync_ok,snr_sync,xdt)
if(sync_ok) then
@ -78,6 +80,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
cand(j)%xdt=xdt
cand(j)%snr=snr_sync
cand(j)%ntrperiod=ntrperiod
cand(j)%iseq=iseq
ia=max(1,min(i,i0-nguard))
ib=min(i0+nbw+nguard,32768)
savg(ia:ib)=0.
@ -94,6 +97,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
cand(j)%xdt=xdt
cand(j)%snr=snr_sync
cand(j)%ntrperiod=ntrperiod
cand(j)%iseq=iseq
ia=max(1,min(i,i0-nguard))
ib=min(i0+nbw+nguard,32768)
savg(ia:ib)=0.

View File

@ -94,8 +94,8 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
!###
nfa=800
nfb=1200
write(*,4001) f0,f0+31.847,nfa,nfb,ntol,ntrperiod,iseq,mode_q65
4001 format('b',2f10.3,6i6)
! write(*,4001) f0,f0+31.847,nfa,nfb,ntol,ntrperiod,iseq,mode_q65
!4001 format('b',2f10.3,6i6)
if(iseq.eq.1) iwave(1:360000)=iwave(360001:720000)
!###
@ -117,8 +117,15 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
ndecodes=ndecodes+1
frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal
fsked=frx - 0.001*ndop00/2.0 - 0.001*offset
write(result(ndecodes),1120) nutc,frx,fsked,xdt0,nsnr0,trim(msg0)
1120 format(i4.4,f9.3,f7.1,f7.2,i5,2x,a)
if(ntrperiod.eq.60) then
write(result(ndecodes),1120) nutc,frx,fsked,xdt0,nsnr0,trim(msg0)
1120 format(i4.4,f9.3,f7.1,f7.2,i5,2x,a)
else
nhhmmss=100*nutc
if(iseq.eq.1) nhhmmss=100*nutc+30
write(result(ndecodes),1121) nhhmmss,frx,fsked,xdt0,nsnr0,trim(msg0)
1121 format(i6.6,f9.3,f7.1,f7.2,i5,2x,a)
endif
write(12,1130) datetime,trim(result(ndecodes)(5:))
1130 format(a11,1x,a)
result(ndecodes)=trim(result(ndecodes))//char(0)

View File

@ -11,6 +11,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
real :: f !Freq of sync tone, 0 to 96000 Hz
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
integer :: iseq !0 for first half-minute, 1 for second half
end type candidate
parameter (NFFT=32768) !Size of FFTs done in symspec()
@ -60,17 +61,19 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
do icand=1,ncand !Attempt to decode each candidate
f0=cand(icand)%f
ntrperiod=cand(icand)%ntrperiod
iseq=cand(icand)%iseq
!###
if(icand.gt.1) exit
f0=-31.847 + 117.602
ntrperiod=30
iseq=1
mode_q65=2
! if(icand.gt.2) exit
! f0=-31.847 + 117.602
! ntrperiod=30
! iseq=icand-1
!###
mode_q65=3 !###
if(ntrperiod.eq.30) mode_q65=2 !###
freq=f0+nkhz_center-48.0-1.27046
write(*,5001) icand,ntrperiod,iseq,f0,f0+nkhz_center-48.0, &
cand(icand)%xdt,cand(icand)%snr
5001 format('a',3i5,2f10.3,2f8.1)
! write(*,5001) icand,ntrperiod,iseq,mode_q65,f0,f0+nkhz_center-48.0, &
! cand(icand)%xdt,cand(icand)%snr
!5001 format('a',4i5,2f10.3,2f8.1)
ikhz=nint(freq)
idec=-1
call timer('q65b ',0)