mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-24 02:12:37 -04:00
QMAP now decodes both Q65-60C and Q65-30B in same 60-second Rx sequence.
This commit is contained in:
parent
93dba5e623
commit
cb7395b504
@ -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 :: f !Freq of sync tone, 0 to 96000 Hz
|
||||||
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
|
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
|
||||||
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
|
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
|
||||||
|
integer :: iseq !0 for first half-minute, 1 for second half
|
||||||
end type candidate
|
end type candidate
|
||||||
|
|
||||||
parameter (NFFT=32768) !FFTs done in symspec()
|
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)%xdt=xdt
|
||||||
cand(j)%snr=snr_sync
|
cand(j)%snr=snr_sync
|
||||||
cand(j)%ntrperiod=ntrperiod
|
cand(j)%ntrperiod=ntrperiod
|
||||||
|
cand(j)%iseq=iseq
|
||||||
ia=max(1,min(i,i0-nguard))
|
ia=max(1,min(i,i0-nguard))
|
||||||
ib=min(i0+nbw+nguard,32768)
|
ib=min(i0+nbw+nguard,32768)
|
||||||
savg(ia:ib)=0.
|
savg(ia:ib)=0.
|
||||||
@ -68,7 +70,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ntrperiod=30
|
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)
|
call q65_sync(ss,i0,nts_q65,ntrperiod,iseq,sync_ok,snr_sync,xdt)
|
||||||
if(sync_ok) then
|
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)%xdt=xdt
|
||||||
cand(j)%snr=snr_sync
|
cand(j)%snr=snr_sync
|
||||||
cand(j)%ntrperiod=ntrperiod
|
cand(j)%ntrperiod=ntrperiod
|
||||||
|
cand(j)%iseq=iseq
|
||||||
ia=max(1,min(i,i0-nguard))
|
ia=max(1,min(i,i0-nguard))
|
||||||
ib=min(i0+nbw+nguard,32768)
|
ib=min(i0+nbw+nguard,32768)
|
||||||
savg(ia:ib)=0.
|
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)%xdt=xdt
|
||||||
cand(j)%snr=snr_sync
|
cand(j)%snr=snr_sync
|
||||||
cand(j)%ntrperiod=ntrperiod
|
cand(j)%ntrperiod=ntrperiod
|
||||||
|
cand(j)%iseq=iseq
|
||||||
ia=max(1,min(i,i0-nguard))
|
ia=max(1,min(i,i0-nguard))
|
||||||
ib=min(i0+nbw+nguard,32768)
|
ib=min(i0+nbw+nguard,32768)
|
||||||
savg(ia:ib)=0.
|
savg(ia:ib)=0.
|
||||||
|
@ -94,8 +94,8 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
|
|||||||
!###
|
!###
|
||||||
nfa=800
|
nfa=800
|
||||||
nfb=1200
|
nfb=1200
|
||||||
write(*,4001) f0,f0+31.847,nfa,nfb,ntol,ntrperiod,iseq,mode_q65
|
! write(*,4001) f0,f0+31.847,nfa,nfb,ntol,ntrperiod,iseq,mode_q65
|
||||||
4001 format('b',2f10.3,6i6)
|
!4001 format('b',2f10.3,6i6)
|
||||||
if(iseq.eq.1) iwave(1:360000)=iwave(360001:720000)
|
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
|
ndecodes=ndecodes+1
|
||||||
frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal
|
frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal
|
||||||
fsked=frx - 0.001*ndop00/2.0 - 0.001*offset
|
fsked=frx - 0.001*ndop00/2.0 - 0.001*offset
|
||||||
|
if(ntrperiod.eq.60) then
|
||||||
write(result(ndecodes),1120) nutc,frx,fsked,xdt0,nsnr0,trim(msg0)
|
write(result(ndecodes),1120) nutc,frx,fsked,xdt0,nsnr0,trim(msg0)
|
||||||
1120 format(i4.4,f9.3,f7.1,f7.2,i5,2x,a)
|
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:))
|
write(12,1130) datetime,trim(result(ndecodes)(5:))
|
||||||
1130 format(a11,1x,a)
|
1130 format(a11,1x,a)
|
||||||
result(ndecodes)=trim(result(ndecodes))//char(0)
|
result(ndecodes)=trim(result(ndecodes))//char(0)
|
||||||
|
@ -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 :: f !Freq of sync tone, 0 to 96000 Hz
|
||||||
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
|
real :: xdt !DT of matching sync pattern, -1.0 to +4.0 s
|
||||||
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
|
integer :: ntrperiod !60 for Q65-60x, 30 for Q65-30x
|
||||||
|
integer :: iseq !0 for first half-minute, 1 for second half
|
||||||
end type candidate
|
end type candidate
|
||||||
|
|
||||||
parameter (NFFT=32768) !Size of FFTs done in symspec()
|
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
|
do icand=1,ncand !Attempt to decode each candidate
|
||||||
f0=cand(icand)%f
|
f0=cand(icand)%f
|
||||||
ntrperiod=cand(icand)%ntrperiod
|
ntrperiod=cand(icand)%ntrperiod
|
||||||
|
iseq=cand(icand)%iseq
|
||||||
!###
|
!###
|
||||||
if(icand.gt.1) exit
|
! if(icand.gt.2) exit
|
||||||
f0=-31.847 + 117.602
|
! f0=-31.847 + 117.602
|
||||||
ntrperiod=30
|
! ntrperiod=30
|
||||||
iseq=1
|
! iseq=icand-1
|
||||||
mode_q65=2
|
|
||||||
!###
|
!###
|
||||||
|
mode_q65=3 !###
|
||||||
|
if(ntrperiod.eq.30) mode_q65=2 !###
|
||||||
freq=f0+nkhz_center-48.0-1.27046
|
freq=f0+nkhz_center-48.0-1.27046
|
||||||
write(*,5001) icand,ntrperiod,iseq,f0,f0+nkhz_center-48.0, &
|
! write(*,5001) icand,ntrperiod,iseq,mode_q65,f0,f0+nkhz_center-48.0, &
|
||||||
cand(icand)%xdt,cand(icand)%snr
|
! cand(icand)%xdt,cand(icand)%snr
|
||||||
5001 format('a',3i5,2f10.3,2f8.1)
|
!5001 format('a',4i5,2f10.3,2f8.1)
|
||||||
ikhz=nint(freq)
|
ikhz=nint(freq)
|
||||||
idec=-1
|
idec=-1
|
||||||
call timer('q65b ',0)
|
call timer('q65b ',0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user