WSJT-X/lib/hspec.f90
Steven Franke f210e47cd5 MSK144:
1. Clean up mskrtd to remove unused variables.
2. Re-instate Rx frequency spinbox in MSK144 mode to allow decoding of off-frequency signals with small FTol. Make changes needed to pass Rx Freq in to fortran routines. 
3. Enable realtime decoder for testing. Auto sequence does not yet work when realtime decoding is enabled. There are probably other bugs as well.




git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7109 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-09-25 00:16:29 +00:00

78 lines
1.7 KiB
Fortran

subroutine hspec(id2,k,nutc0,ntrperiod,nrxfreq,ntol,bmsk144,ingain,green,s,jh,line1)
! Input:
! k pointer to the most recent new data
! Output:
! green() power
! s() spectrum for horizontal spectrogram
! jh index of most recent data in green(), s()
parameter (JZ=703)
character*80 line1
integer*2 id2(0:120*12000-1)
logical*1 bmsk144
real green(0:JZ-1)
real s(0:63,0:JZ-1)
real x(512)
complex cx(0:256)
data rms/999.0/,k0/99999999/
equivalence (x,cx)
save ja,rms0
gain=10.0**(0.1*ingain)
nfft=512
nstep=nfft
nblks=7
if(ntrperiod.lt.30) then
nstep=256
nblks=14
endif
if(k.gt.30*12000) go to 900
if(k.lt.nfft) then
jh=0
go to 900 !Wait for enough samples to start
endif
if(k.lt.k0) then !Start a new data block
ja=-nstep
jh=-1
rms0=0.0
endif
do iblk=1,nblks
if(jh.lt.JZ-1) jh=jh+1
ja=ja+nstep
jb=ja+nfft-1
x=id2(ja:jb)
sq=dot_product(x,x)
rms=sqrt(gain*sq/nfft)
green(jh)=0.
if(rms.gt.0.0) green(jh)=20.0*log10(rms)
call four2a(x,nfft,1,-1,0) !Real-to-complex FFT
df=12000.0/nfft
fac=(1.0/nfft)**2
do i=1,64
j=2*i
sx=real(cx(j))**2 + aimag(cx(j))**2 + real(cx(j-1))**2 + &
aimag(cx(j-1))**2
s(i-1,jh)=fac*gain*sx
enddo
! call smo121(s(0,jh),64) !### Good idea, or not? ###
if(ja+2*nfft.gt.k) exit
enddo
k0=k
!###
if(bmsk144) then
if(k.ge.7168) then
tsec=(k-7168)/12000.0
call mskrtd(id2(k-7168+1:k),nutc0,tsec,ntol,nrxfreq,line1)
endif
endif
!###
900 return
end subroutine hspec