mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-10-31 23:57:10 -04:00
Progress toward integrating JTMSK short messages. Not finished, and won't work!
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6417 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
acc29afdc9
commit
326fe4715d
@ -358,7 +358,8 @@ set (wsjt_FSRCS
|
|||||||
lib/jt65_decode.f90
|
lib/jt65_decode.f90
|
||||||
lib/jt9_decode.f90
|
lib/jt9_decode.f90
|
||||||
lib/jt9fano.f90
|
lib/jt9fano.f90
|
||||||
lib/jtmsk.f90
|
lib/jtmsk_decode.f90
|
||||||
|
lib/jtmsk_short.f90
|
||||||
lib/libration.f90
|
lib/libration.f90
|
||||||
lib/lpf1.f90
|
lib/lpf1.f90
|
||||||
lib/mixlpf.f90
|
lib/mixlpf.f90
|
||||||
|
@ -28,7 +28,7 @@ subroutine fast_decode(id2,narg,line)
|
|||||||
call fast9(id2,narg,line)
|
call fast9(id2,narg,line)
|
||||||
go to 900
|
go to 900
|
||||||
else if(nmode.eq.103) then
|
else if(nmode.eq.103) then
|
||||||
call jtmsk(id2,narg,line)
|
call jtmsk_decode(id2,narg,line)
|
||||||
go to 900
|
go to 900
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine jtmsk(id2,narg,line)
|
subroutine jtmsk_decode(id2,narg,line)
|
||||||
|
|
||||||
! Decoder for JTMSK
|
! Decoder for JTMSK
|
||||||
|
|
||||||
@ -12,14 +12,12 @@ subroutine jtmsk(id2,narg,line)
|
|||||||
real d(0:NMAX) !Raw r*4 data
|
real d(0:NMAX) !Raw r*4 data
|
||||||
real ty(703)
|
real ty(703)
|
||||||
real yellow(703)
|
real yellow(703)
|
||||||
! real spk2(20)
|
|
||||||
! real fpk2(20)
|
|
||||||
! integer jpk2(20)
|
|
||||||
complex c(NFFTMAX) !Complex (analytic) data
|
complex c(NFFTMAX) !Complex (analytic) data
|
||||||
complex cdat(24000) !Short segments, up to 2 s
|
complex cdat(24000) !Short segments, up to 2 s
|
||||||
complex cdat2(24000)
|
complex cdat2(24000)
|
||||||
integer narg(0:11) !Arguments passed from calling pgm
|
integer narg(0:11) !Arguments passed from calling pgm
|
||||||
character*22 msg,msg0 !Decoded message
|
character*22 msg,msg0 !Decoded message
|
||||||
|
character*22 msg1 !### Test ###
|
||||||
character*80 line(100) !Decodes passed back to caller
|
character*80 line(100) !Decodes passed back to caller
|
||||||
|
|
||||||
limtrace=-1
|
limtrace=-1
|
||||||
@ -56,6 +54,29 @@ subroutine jtmsk(id2,narg,line)
|
|||||||
call analytic(d,npts,nfft,c) !Convert to analytic signal
|
call analytic(d,npts,nfft,c) !Convert to analytic signal
|
||||||
call timer('analytic',1)
|
call timer('analytic',1)
|
||||||
|
|
||||||
|
msg1="<K1ABC W9XYZ> R26"
|
||||||
|
msg=' '
|
||||||
|
call jtmsk_short(c,npts,msg1,msg)
|
||||||
|
|
||||||
|
!### Needs work!
|
||||||
|
print*,'b ',msg
|
||||||
|
nsnr=1
|
||||||
|
if(msg.ne.' ') then
|
||||||
|
if(msg.ne.msg0) then
|
||||||
|
nline=nline+1
|
||||||
|
nsnr0=-99
|
||||||
|
endif
|
||||||
|
if(nsnr.gt.nsnr0) then
|
||||||
|
! call rectify_msk(cdat2(jpk:jpk+NSPM-1),msg,freq2)
|
||||||
|
write(line(nline),1020) nutc,nsnr,t0,nint(freq2),msg
|
||||||
|
nsnr0=nsnr
|
||||||
|
go to 900
|
||||||
|
endif
|
||||||
|
msg0=msg
|
||||||
|
if(nline.ge.maxlines) go to 900
|
||||||
|
endif
|
||||||
|
!###
|
||||||
|
|
||||||
nbefore=NSPM
|
nbefore=NSPM
|
||||||
nafter=4*NSPM
|
nafter=4*NSPM
|
||||||
! Process ping list (sorted by S/N) from top down.
|
! Process ping list (sorted by S/N) from top down.
|
||||||
@ -69,8 +90,6 @@ subroutine jtmsk(id2,narg,line)
|
|||||||
ja=ia/NSPM + 1
|
ja=ia/NSPM + 1
|
||||||
jb=ib/NSPM
|
jb=ib/NSPM
|
||||||
t0=ia/12000.0
|
t0=ia/12000.0
|
||||||
! call msksync(cdat,iz,jpk2,fpk2,spk2)
|
|
||||||
! call softmsk(cdat,iz,jpk2,fpk2,spk2)
|
|
||||||
|
|
||||||
do itry=1,21
|
do itry=1,21
|
||||||
idf1=(itry/2) * 50
|
idf1=(itry/2) * 50
|
||||||
@ -85,8 +104,6 @@ subroutine jtmsk(id2,narg,line)
|
|||||||
call syncmsk(cdat,iz,jpk,ipk,idf,rmax,snr,metric,msg)
|
call syncmsk(cdat,iz,jpk,ipk,idf,rmax,snr,metric,msg)
|
||||||
call timer('syncmsk ',1)
|
call timer('syncmsk ',1)
|
||||||
freq=fpk+idf
|
freq=fpk+idf
|
||||||
! write(72,4001) jpk,idf,nint(freq),rmax,snr,msg
|
|
||||||
!4001 format(3i6,2f9.2,2x,a22)
|
|
||||||
if(metric.eq.-9999) cycle !No output if no significant sync
|
if(metric.eq.-9999) cycle !No output if no significant sync
|
||||||
t0=(ia+jpk)/12000.0
|
t0=(ia+jpk)/12000.0
|
||||||
nsnr=nint(yellow(n)-2.0)
|
nsnr=nint(yellow(n)-2.0)
|
||||||
@ -109,6 +126,7 @@ subroutine jtmsk(id2,narg,line)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
900 if(line(1)(1:6).eq.' ') line(1)(1:1)=char(0)
|
900 if(line(1)(1:6).eq.' ') line(1)(1:1)=char(0)
|
||||||
|
print*,'z ',line(1)
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine jtmsk
|
end subroutine jtmsk_decode
|
@ -1,4 +1,4 @@
|
|||||||
subroutine jtmsk_short(cdat,npts,msg)
|
subroutine jtmsk_short(cdat,npts,msg,decoded)
|
||||||
|
|
||||||
parameter (NMAX=15*12000,NSAVE=100)
|
parameter (NMAX=15*12000,NSAVE=100)
|
||||||
character*22 msg,decoded,msgsent
|
character*22 msg,decoded,msgsent
|
||||||
@ -11,16 +11,14 @@ subroutine jtmsk_short(cdat,npts,msg)
|
|||||||
real r1(0:NMAX-1)
|
real r1(0:NMAX-1)
|
||||||
real r2(0:4096)
|
real r2(0:4096)
|
||||||
real r1save(NSAVE)
|
real r1save(NSAVE)
|
||||||
integer*8 count0,count1,clkfreq
|
! integer*8 count0,count1,clkfreq
|
||||||
integer itone(234) !Message bits
|
integer itone(234) !Message bits
|
||||||
integer jgood(NSAVE)
|
integer jgood(NSAVE)
|
||||||
integer indx(NSAVE)
|
integer indx(NSAVE)
|
||||||
logical first
|
logical first
|
||||||
data rpt /'26 ','27 ','28 ','R26','R27','R28','RRR','73 '/
|
data rpt /'26 ','27 ','28 ','R26','R27','R28','RRR','73 '/
|
||||||
data first/.true./
|
data first/.true./
|
||||||
save first,cw
|
save first,cw,cb11
|
||||||
|
|
||||||
! msg='<W2DEF K3GHI> 73 '
|
|
||||||
|
|
||||||
if(first) then
|
if(first) then
|
||||||
dt=1.d0/12000.d0
|
dt=1.d0/12000.d0
|
||||||
@ -49,18 +47,19 @@ subroutine jtmsk_short(cdat,npts,msg)
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
cb11=cw(0:65,0)
|
||||||
first=.false.
|
first=.false.
|
||||||
endif
|
endif
|
||||||
|
|
||||||
r1thresh=0.40
|
! r1thresh=0.40
|
||||||
|
r1thresh=0.80
|
||||||
r2thresh=0.50
|
r2thresh=0.50
|
||||||
rmax=0.9
|
rmax=0.9
|
||||||
ngood=0
|
ngood=0
|
||||||
nbad=0
|
nbad=0
|
||||||
maxdecodes=999
|
maxdecodes=999
|
||||||
|
|
||||||
cb11=cw(0:65,0)
|
! call system_clock(count0,clkfreq)
|
||||||
call system_clock(count0,clkfreq)
|
|
||||||
|
|
||||||
r1max=0.
|
r1max=0.
|
||||||
do j=0,npts-210 !Find the B11 sync vectors
|
do j=0,npts-210 !Find the B11 sync vectors
|
||||||
@ -94,9 +93,11 @@ subroutine jtmsk_short(cdat,npts,msg)
|
|||||||
do kk=1,kmax
|
do kk=1,kmax
|
||||||
k=indx(kmax+1-kk)
|
k=indx(kmax+1-kk)
|
||||||
j=jgood(k)
|
j=jgood(k)
|
||||||
|
if(j.lt.144 .or. j.gt.npts-210) cycle
|
||||||
u1=0.
|
u1=0.
|
||||||
u2=0.
|
u2=0.
|
||||||
r2max=0.
|
r2max=0.
|
||||||
|
ibest=-1
|
||||||
do imsg=0,4096
|
do imsg=0,4096
|
||||||
ssa=0.
|
ssa=0.
|
||||||
ssb=0.
|
ssb=0.
|
||||||
@ -127,19 +128,20 @@ subroutine jtmsk_short(cdat,npts,msg)
|
|||||||
n=1
|
n=1
|
||||||
decoded=msg(1:14)//rpt(irpt)
|
decoded=msg(1:14)//rpt(irpt)
|
||||||
endif
|
endif
|
||||||
if(n.eq.0) nbad=nbad+1
|
print*,'a ', decoded
|
||||||
if(n.eq.1) ngood=ngood+1
|
go to 900
|
||||||
if(n.eq.0 .and. r2max.gt.r2bad) r2bad=r2max
|
|
||||||
write(52,3020) k,t,ibest,r1(j),r2max,u2/u1,r1or2,n,decoded
|
! if(n.eq.0) nbad=nbad+1
|
||||||
3020 format(i3,f9.4,i5,4f7.2,i2,1x,a22)
|
! if(n.eq.1) ngood=ngood+1
|
||||||
if(ngood+nbad.ge.maxdecodes) exit
|
! if(n.eq.0 .and. r2max.gt.r2bad) r2bad=r2max
|
||||||
|
! write(52,3020) k,t,ibest,r1(j),r2max,u2/u1,r1or2,n,decoded
|
||||||
|
!3020 format(i3,f9.4,i5,4f7.2,i2,1x,a22)
|
||||||
|
! if(ngood+nbad.ge.maxdecodes) exit
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
call system_clock(count1,clkfreq)
|
! print "('Worst false decode:',f6.3)",r2bad
|
||||||
t=float(count1-count0)/float(clkfreq)
|
! print "('Good:',i3,' Bad:',i3)",ngood,nbad
|
||||||
print "('Decode: ',f6.3)",t
|
|
||||||
print "('Worst false decode:',f6.3)",r2bad
|
900 return
|
||||||
print "('Good:',i3,' Bad:',i3)",ngood,nbad
|
|
||||||
return
|
|
||||||
end subroutine jtmsk_short
|
end subroutine jtmsk_short
|
||||||
|
@ -50,9 +50,9 @@ program testmsk
|
|||||||
narg(10)=nrxfreq
|
narg(10)=nrxfreq
|
||||||
narg(11)=ntol
|
narg(11)=ntol
|
||||||
|
|
||||||
call timer('jtmsk ',0)
|
call timer('jtmsk_de',0)
|
||||||
call jtmsk(id2,narg,line)
|
call jtmsk_decode(id2,narg,line)
|
||||||
call timer('jtmsk ',1)
|
call timer('jtmsk_de',1)
|
||||||
do i=1,narg(8)
|
do i=1,narg(8)
|
||||||
if(line(i)(1:1).eq.char(0)) exit
|
if(line(i)(1:1).eq.char(0)) exit
|
||||||
ndecodes=ndecodes+1
|
ndecodes=ndecodes+1
|
||||||
|
Loading…
Reference in New Issue
Block a user