mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 13:48:42 -05:00
First working code that uses wider detection bandwidths for submodes JT65B,C.
Still needs work! git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6507 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
e7f3a10fa2
commit
eb076718f2
@ -1,6 +1,6 @@
|
||||
subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
||||
naggressive,ndepth,mycall,hiscall,hisgrid,nexp_decode,sync2, &
|
||||
a,dt,nft,qual,nhist,decoded)
|
||||
a,dt,nft,qual,nhist,nsmo,decoded)
|
||||
|
||||
! Apply AFC corrections to a candidate JT65 signal, then decode it.
|
||||
|
||||
@ -12,6 +12,7 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
||||
complex cx1(NMAX/8) !Data at 1378.125 sps, offset by 355.3 Hz
|
||||
complex c5x(NMAX/32) !Data at 344.53125 Hz
|
||||
complex c5a(512)
|
||||
real s1(-255:256,126)
|
||||
real s2(66,126)
|
||||
real a(5)
|
||||
logical first
|
||||
@ -60,8 +61,8 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
||||
df=1378.125/nfft
|
||||
j=int(dtbest*1378.125)
|
||||
|
||||
c5a=cmplx(0.0,0.0)
|
||||
call timer('sh_ffts ',0)
|
||||
c5a=cmplx(0.0,0.0)
|
||||
do k=1,nsym
|
||||
do i=1,nfft
|
||||
j=j+1
|
||||
@ -72,23 +73,44 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
||||
endif
|
||||
enddo
|
||||
call four2a(c5a,nfft,1,1,1)
|
||||
do i=1,66
|
||||
do i=1,512
|
||||
jj=i
|
||||
if(mode65.eq.2) jj=2*i-1
|
||||
if(mode65.eq.4) then
|
||||
! jj=4*i-3
|
||||
ff=4*(i-1)*df - 355.297852
|
||||
jj=nint(ff/df)+1
|
||||
if(jj.lt.1) jj=jj+512
|
||||
endif
|
||||
s2(i,k)=real(c5a(jj))**2 + aimag(c5a(jj))**2
|
||||
if(i.gt.256) jj=i-512
|
||||
s1(jj,k)=real(c5a(i))**2 + aimag(c5a(i))**2
|
||||
enddo
|
||||
enddo
|
||||
call timer('sh_ffts ',1)
|
||||
|
||||
call timer('dec65b ',0)
|
||||
call decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
|
||||
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
||||
maxsmo=0
|
||||
if(mode65.eq.2) maxsmo=2
|
||||
if(mode65.eq.4) maxsmo=5
|
||||
do ismo=0,maxsmo
|
||||
if(ismo.gt.0) then
|
||||
do j=1,126
|
||||
call smo121(s1(-255,j),512)
|
||||
enddo
|
||||
endif
|
||||
|
||||
do i=1,66
|
||||
jj=i
|
||||
if(mode65.eq.2) jj=2*i-1
|
||||
if(mode65.eq.4) then
|
||||
ff=4*(i-1)*df - 355.297852
|
||||
jj=nint(ff/df)+1
|
||||
endif
|
||||
s2(i,1:126)=s1(jj,1:126)
|
||||
enddo
|
||||
|
||||
call decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
|
||||
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
||||
if(nft.eq.1) then
|
||||
!### Should also deal with nft=2 solutions, if no nft=1.
|
||||
nsmo=ismo
|
||||
exit
|
||||
endif
|
||||
enddo
|
||||
|
||||
call timer('dec65b ',1)
|
||||
|
||||
return
|
||||
|
@ -215,16 +215,23 @@ contains
|
||||
integer, intent(in) :: hard_min
|
||||
integer, intent(in) :: aggression
|
||||
|
||||
integer param(0:8)
|
||||
integer param(0:9)
|
||||
integer nsmo
|
||||
real rtt
|
||||
common/test000/param !### TEST ONLY ###
|
||||
|
||||
rtt=0.001*param(4)
|
||||
nsmo=param(9)
|
||||
|
||||
!$omp critical(decode_results)
|
||||
write(*,1010) utc,snr,dt,freq,decoded
|
||||
1010 format(i4.4,i4,f5.1,i5,1x,'#',1x,a22)
|
||||
write(13,1012) utc,nint(sync),snr,dt,float(freq),drift,decoded,ft
|
||||
1012 format(i4.4,i4,i5,f6.1,f8.0,i4,3x,a22,' JT65',i4)
|
||||
if(ft.eq.2 .or. nsmo.gt.0) then
|
||||
write(*,1010) utc,snr,dt,freq,decoded,ft,nsmo
|
||||
else
|
||||
write(*,1010) utc,snr,dt,freq,decoded
|
||||
1010 format(i4.4,i4,f5.1,i5,1x,'#',1x,a22,i4,i2)
|
||||
endif
|
||||
write(13,1012) utc,nint(sync),snr,dt,float(freq),drift,decoded,ft,nsmo
|
||||
1012 format(i4.4,i4,i5,f6.1,f8.0,i4,3x,a22,' JT65',i4,i2)
|
||||
call flush(6)
|
||||
! write(79,3001) utc,sync,snr,dt,freq,candidates, &
|
||||
! hard_min,total_min,rtt,tries,ft,min(qual,99),decoded
|
||||
|
@ -24,7 +24,7 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
|
||||
integer dat4(12)
|
||||
integer mrsym(63),mr2sym(63),mrprob(63),mr2prob(63)
|
||||
integer correct(63),tmp(63)
|
||||
integer param(0:8)
|
||||
integer param(0:9)
|
||||
logical ltext
|
||||
common/chansyms65/correct
|
||||
common/test000/param !### TEST ONLY ###
|
||||
@ -72,8 +72,6 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
|
||||
call interleave63(mr2sym,-1) !from second-most-reliable symbols
|
||||
call interleave63(mr2prob,-1)
|
||||
ntry=0
|
||||
iftest=0
|
||||
if(iftest.eq.2) go to 10
|
||||
|
||||
call timer('ftrsd ',0)
|
||||
param=0
|
||||
@ -93,9 +91,8 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
|
||||
r0=0.90
|
||||
endif
|
||||
if(ntotal.le.nd0 .and. rtt.le.r0) nft=1
|
||||
if(iftest.eq.1) nft=1 !### TEST ONLY ###
|
||||
|
||||
10 if(iftest.eq.2 .or. (nft.eq.0 .and. ndepth.ge.5)) then
|
||||
if(nft.eq.0 .and. ndepth.ge.5) then
|
||||
mode65=1
|
||||
flip=1.0
|
||||
qmin=1.0
|
||||
|
@ -81,7 +81,7 @@ contains
|
||||
common/decstats/ntry65a,ntry65b,n65a,n65b,num9,numfano
|
||||
common/steve/thresh0
|
||||
common/test000/ncandidates,nhard_min,nsoft_min,nera_best,nrtt1000, &
|
||||
ntotal_min,ntry,nq1000,npp1 !### TEST ONLY ###
|
||||
ntotal_min,ntry,nq1000,npp1,nsmo !### TEST ONLY ###
|
||||
|
||||
! 0 1 2 3 4 5 6 7 8 9 10 11
|
||||
data h0/41,42,43,43,44,45,46,47,48,48,49,49/
|
||||
@ -161,7 +161,7 @@ contains
|
||||
call timer('decod65a',0)
|
||||
call decode65a(dd,npts,first_time,nqd,freq,nflip,mode65,nvec, &
|
||||
naggressive,ndepth,mycall,hiscall,hisgrid,nexp_decode, &
|
||||
sync2,a,dtx,nft,qual,nhist,decoded)
|
||||
sync2,a,dtx,nft,qual,nhist,nsmo,decoded)
|
||||
call timer('decod65a',1)
|
||||
n=naggressive
|
||||
rtt=0.001*nrtt1000
|
||||
|
@ -19,8 +19,9 @@ program jt9
|
||||
character c
|
||||
character(len=500) optarg, infile
|
||||
character wisfile*80
|
||||
!### ndepth was defined as 60001. Why???
|
||||
integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700, &
|
||||
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=60001,nexp_decode=0
|
||||
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=1,nexp_decode=0
|
||||
logical :: read_files = .true., tx9 = .false., display_help = .false.
|
||||
type (option) :: long_options(23) = [ &
|
||||
option ('help', .false., 'h', 'Display this help message', ''), &
|
||||
|
Loading…
Reference in New Issue
Block a user