Add some descriptive documentation to the q65.f90 module.

This commit is contained in:
Joe Taylor 2021-01-18 10:18:38 -05:00
parent 6d220d46d2
commit baa029f4ba

View File

@ -23,6 +23,9 @@ subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec) emedelay,xdt,f0,snr1,width,dat4,snr2,idec)
! Top-level routine in q65 module ! Top-level routine in q65 module
! - Compute symbol spectra
! - Attempt sync and q3 decode using all 85 symbols
! - If that fails, try sync with 22 symbols and standard q[0124] decode
! Input: iavg 0 for single-period decode, 1 for average ! Input: iavg 0 for single-period decode, 1 for average
! iwave(0:nmax-1) Raw data ! iwave(0:nmax-1) Raw data
@ -41,8 +44,8 @@ subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
! idec Flag for decing results ! idec Flag for decing results
! -1 No decode ! -1 No decode
! 0 No AP ! 0 No AP
! 1 "CQ ? ?" ! 1 "CQ ? ?"
! 2 "Mycall ? ?" ! 2 "Mycall ? ?"
! 3 "MyCall HisCall ?" ! 3 "MyCall HisCall ?"
use packjt77 use packjt77
@ -214,6 +217,8 @@ end subroutine q65_dec0
subroutine q65_clravg subroutine q65_clravg
! Clear the averaging array to start a new average.
if(allocated(s1a)) s1a=0. if(allocated(s1a)) s1a=0.
navg=0 navg=0
@ -222,6 +227,8 @@ end subroutine q65_clravg
subroutine q65_symspec(iwave,nmax,iz,jz,s1) subroutine q65_symspec(iwave,nmax,iz,jz,s1)
! Compute symbol spectra with NSTEP time-steps per symbol.
integer*2 iwave(0:nmax-1) !Raw data integer*2 iwave(0:nmax-1) !Raw data
real s1(iz,jz) real s1(iz,jz)
complex, allocatable :: c0(:) !Complex spectrum of symbol complex, allocatable :: c0(:) !Complex spectrum of symbol
@ -253,6 +260,8 @@ end subroutine q65_symspec
subroutine q65_dec_q3(s1,iz,jz,s3,LL,ipk,jpk,snr2,dat4,idec,decoded) subroutine q65_dec_q3(s1,iz,jz,s3,LL,ipk,jpk,snr2,dat4,idec,decoded)
! Copy synchronized symbol spectra from s1 into s3, then attempt a q3 decode.
character*37 decoded character*37 decoded
integer dat4(13) integer dat4(13)
real s1(iz,jz) real s1(iz,jz)
@ -298,6 +307,8 @@ end subroutine q65_dec_q3
subroutine q65_dec_q012(s3,LL,snr2,dat4,idec,decoded) subroutine q65_dec_q012(s3,LL,snr2,dat4,idec,decoded)
! Do separate passes attempting q0, q1, q2 decodes.
character*37 decoded character*37 decoded
character*78 c78 character*78 c78
integer dat4(13) integer dat4(13)
@ -346,8 +357,10 @@ subroutine q65_dec_q012(s3,LL,snr2,dat4,idec,decoded)
100 return 100 return
end subroutine q65_dec_q012 end subroutine q65_dec_q012
subroutine q65_ccf_85(s1,iz,jz,nfqso,ia,ia2, & subroutine q65_ccf_85(s1,iz,jz,nfqso,ia,ia2,ipk,jpk,f0,xdt,imsg_best,ccf,ccf1)
ipk,jpk,f0,xdt,imsg_best,ccf,ccf1)
! Attempt synchronization using all 85 symbols, in advance of an
! attempt at q3 decoding. Return ccf1 for the "red sync curve".
real s1(iz,jz) real s1(iz,jz)
real ccf(-ia2:ia2,-53:214) real ccf(-ia2:ia2,-53:214)
@ -371,6 +384,7 @@ subroutine q65_ccf_85(s1,iz,jz,nfqso,ia,ia2, &
itone(j)=codewords(k,imsg) itone(j)=codewords(k,imsg)
endif endif
enddo enddo
! Compute 2D ccf using all 85 symbols in the list message ! Compute 2D ccf using all 85 symbols in the list message
ccf=0. ccf=0.
iia=200.0/df iia=200.0/df
@ -405,6 +419,9 @@ end subroutine q65_ccf_85
subroutine q65_ccf_22(s1,iz,jz,nfqso,ia,ia2,ipk,jpk,f0,xdt,ccf,ccf2) subroutine q65_ccf_22(s1,iz,jz,nfqso,ia,ia2,ipk,jpk,f0,xdt,ccf,ccf2)
! Attempt synchronization using only the 22 sync symbols. Return ccf2
! for the "orange sync curve".
real s1(iz,jz) real s1(iz,jz)
real ccf(-ia2:ia2,-53:214) real ccf(-ia2:ia2,-53:214)
real ccf2(-ia2:ia2) real ccf2(-ia2:ia2)
@ -437,6 +454,8 @@ end subroutine q65_ccf_22
subroutine q65_dec1(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded) subroutine q65_dec1(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded)
! Attmpt a full-AP list decode.
use packjt77 use packjt77
real s3(1,1) !Silence compiler warning that wants to see a 2D array real s3(1,1) !Silence compiler warning that wants to see a 2D array
real s3prob(0:63,63) !Symbol-value probabilities real s3prob(0:63,63) !Symbol-value probabilities
@ -462,6 +481,8 @@ end subroutine q65_dec1
subroutine q65_dec2(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded) subroutine q65_dec2(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded)
! Attempt a q0, q1, or q2 decode using spcified AP information.
use packjt77 use packjt77
real s3(iz0,jz0) !Silence compiler warning that wants to see a 2D array real s3(iz0,jz0) !Silence compiler warning that wants to see a 2D array
real s3prob(0:63,63) !Symbol-value probabilities real s3prob(0:63,63) !Symbol-value probabilities
@ -485,7 +506,7 @@ end subroutine q65_dec2
subroutine q65_s1_to_s3(s1,iz,jz,ipk,jpk,LL,mode_q65,sync,s3) subroutine q65_s1_to_s3(s1,iz,jz,ipk,jpk,LL,mode_q65,sync,s3)
! Copy from s1 or s1a into s3 ! Copy synchronized symbol energies from s1 (or s1a) into s3.
real s1(iz,jz) real s1(iz,jz)
real s3(-64:LL-65,63) real s3(-64:LL-65,63)