Working automatic time sync based on syncStats

This commit is contained in:
Jordan Sherer
2020-05-07 15:32:28 -04:00
parent b21f937481
commit 6bf4b41311
17 changed files with 86 additions and 97 deletions
+6 -6
View File
@@ -94,7 +94,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
params%nexp_decode,params%ndepth,logical(params%nagain), &
logical(params%lft8apon),logical(params%lapcqonly),params%napwid, &
mycall,mygrid,hiscall,hisgrid)
mycall,mygrid,hiscall,hisgrid,logical(params%syncStats))
write(*,*) '<DecodeDebug> mode I decode finished'
@@ -117,7 +117,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
params%nexp_decode,params%ndepth,logical(params%nagain), &
logical(params%lft8apon),logical(params%lapcqonly),params%napwid, &
mycall,mygrid,hiscall,hisgrid)
mycall,mygrid,hiscall,hisgrid,logical(params%syncStats))
write(*,*) '<DecodeDebug> mode E decode finished'
@@ -140,7 +140,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
params%nexp_decode,params%ndepth,logical(params%nagain), &
logical(params%lft8apon),logical(params%lapcqonly),params%napwid, &
mycall,mygrid,hiscall,hisgrid)
mycall,mygrid,hiscall,hisgrid,logical(params%syncStats))
write(*,*) '<DecodeDebug> mode C decode finished'
@@ -163,7 +163,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
params%nexp_decode,params%ndepth,logical(params%nagain), &
logical(params%lft8apon),logical(params%lapcqonly),params%napwid, &
mycall,mygrid,hiscall,hisgrid)
mycall,mygrid,hiscall,hisgrid,logical(params%syncStats))
write(*,*) '<DecodeDebug> mode B decode finished'
@@ -197,7 +197,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
params%nexp_decode,params%ndepth,logical(params%nagain), &
logical(params%lft8apon),logical(params%lapcqonly),params%napwid, &
mycall,mygrid,hiscall,hisgrid,logical(params%synconly))
mycall,mygrid,hiscall,hisgrid,logical(params%syncStats))
write(*,*) '<DecodeDebug> mode A decode finished'
@@ -207,7 +207,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
write(*,*) '<DecodeDebug> finished'
call flush(6)
ndecoded = my_js8a%decoded + my_js8b%decoded + my_js8c%decoded + my_js8e%decoded
ndecoded = my_js8a%decoded + my_js8b%decoded + my_js8c%decoded + my_js8e%decoded + my_js8i%decoded
!call sleep_msec(3000)
write(*,1010) ndecoded
1010 format('<DecodeFinished>',i4)
+1
View File
@@ -1,5 +1,6 @@
! When modifying this file, please ensure the modifications are made in ft8_params.f90 too.
parameter (NSUBMODE=0)
parameter (NCOSTAS=1) !Which JS8 Costas Arrays to use (1=original, 2=three symmetrical costas)
parameter (NSPS=1920, NTXDUR=15, NDOWNSPS=32, NDD=100, JZ=36) ! 50 Hz 6.250 baud 16 wpm -25.0dB (1.0Eb/N0) 12.64s
+1
View File
@@ -1,3 +1,4 @@
parameter (NSUBMODE=1)
parameter (NCOSTAS=2) !Which JS8 Costas Arrays to use (1=original, 2=three symmetrical costas)
parameter (NSPS=1200, NTXDUR=10, NDOWNSPS=20, NDD=100, JZ=144) ! 80 Hz 10 baud 24 wpm -23.0dB (1.0Eb/N0) 7.90s
+1
View File
@@ -1,3 +1,4 @@
parameter (NSUBMODE=2)
parameter (NCOSTAS=2) !Which JS8 Costas Arrays to use (1=original, 2=three symmetrical costas)
parameter (NSPS=600, NTXDUR=6, NDOWNSPS=12, NDD=120, JZ=172) ! 160 Hz 20 baud 40 wpm -20.0dB (1.0Eb/N0) 3.95s
+6 -7
View File
@@ -1,4 +1,4 @@
subroutine js8dec(dd0,icos,newdat,synconly,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
subroutine js8dec(dd0,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
napwid,lsubtract,nagain,iaptype,mycall12,mygrid6,hiscall12,bcontest, &
sync0,f1,xdt,xbase,apsym,nharderrors,dmin,nbadcrc,ipass,iera,msg37,xsnr)
@@ -14,7 +14,7 @@ subroutine js8dec(dd0,icos,newdat,synconly,nQSOProgress,nfqso,nftx,ndepth,lapon,
character*12 mycall12,hiscall12
character*6 mycall6,mygrid6,hiscall6,c1,c2
character*87 cbits
logical bcontest,synconly
logical bcontest,syncStats
real a(5)
real s1(0:7,ND),s2(0:7,NN),s1sort(8*ND)
real ps(0:7),psl(0:7)
@@ -224,8 +224,8 @@ subroutine js8dec(dd0,icos,newdat,synconly,nQSOProgress,nfqso,nftx,ndepth,lapon,
return
endif
if(synconly) then
write(*,*) '<DecodeDebug> candidate X ', 'f1', f1, 'sync', nsync, 'xdt', xdt
if(syncStats) then
write(*,*) '<DecodeDebug> candidate ', NSUBMODE, 'f1', f1, 'sync', nsync, 'xdt', xdt
flush(6)
endif
@@ -422,9 +422,8 @@ subroutine js8dec(dd0,icos,newdat,synconly,nQSOProgress,nfqso,nftx,ndepth,lapon,
i3bit=4*decoded(73) + 2*decoded(74) + decoded(75)
if(nbadcrc.eq.0) then
if(synconly) then
write(*,*) '<DecodeDebug> decode X ', 'f1', f1, 'sync', (sync*10), 'xdt', xdt2
if(syncStats) then
write(*,*) '<DecodeDebug> decode ', NSUBMODE, 'f1', f1, 'sync', (sync*10), 'xdt', xdt2
flush(6)
endif
+1
View File
@@ -1,3 +1,4 @@
parameter (NSUBMODE=4)
parameter (NCOSTAS=2) !Which JS8 Costas Arrays to use (1=original, 2=three symmetrical costas)
parameter (NSPS=3840, NTXDUR=28, NDOWNSPS=32, NDD=90, JZ=32) ! 25 Hz 3.125 baud 8 wpm -28.0dB (1.0Eb/N0) 25.28s
+1
View File
@@ -1,3 +1,4 @@
parameter (NSUBMODE=8)
parameter (NCOSTAS=2) !Which JS8 Costas Arrays to use (1=original, 2=three symmetrical costas)
parameter (NSPS=384, NTXDUR=4, NDOWNSPS=12, NDD=125, JZ=250) ! 250 Hz 31.25 baud 60 wpm -18.0dB (1.0Eb/N0) 2.52s
+3 -25
View File
@@ -25,7 +25,7 @@ contains
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, &
mycall12,mygrid6,hiscall12,hisgrid6,synconly)
mycall12,mygrid6,hiscall12,hisgrid6,syncStats)
! use wavhdr
use timer_module, only: timer
! type(hdr) h
@@ -38,7 +38,7 @@ contains
real candidate(3,NMAXCAND)
real dd(NMAX)
logical, intent(in) :: lft8apon,lapcqonly,nagain
logical newdat,lsubtract,ldupe,bcontest,synconly
logical newdat,lsubtract,ldupe,bcontest,syncStats
character*12 mycall12, hiscall12
character*6 mygrid6,hisgrid6
integer*2 iwave(NMAX)
@@ -93,32 +93,10 @@ contains
lsubtract=.false.
endif
if(synconly) then
if(NWRITELOG.eq.0) then
write(*,*) '<DecodeDebug> synconly'
flush(6)
endif
endif
call timer('syncjs8 ',0)
call syncjs8(dd,icos,ifa,ifb,syncmin,nfqso,s,candidate,ncand,sbase)
call timer('syncjs8 ',1)
!if(NWRITELOG.eq.0) then
! write(*,*) '<DecodeDebug>', ncand, "candidates"
! flush(6)
! do icand=1,ncand
! sync=candidate(3,icand)
! f1=candidate(1,icand)
! xdt=candidate(2,icand)
! xbase=10.0**(0.1*(sbase(nint(f1/(12000.0/NFFT1)))-40.0)) ! 3.125Hz
! write(*,*) '<DecodeDebug> candidate', icand, 'f1', f1, 'sync', sync, 'xdt', xdt, 'xbase', xbase
! flush(6)
! enddo
!endif
do icand=1,ncand
sync=candidate(3,icand)
f1=candidate(1,icand)
@@ -131,7 +109,7 @@ contains
endif
call timer('js8dec ',0)
call js8dec(dd,icos,newdat,synconly,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
call js8dec(dd,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, &
hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, &
nbadcrc,iappass,iera,msg37,xsnr)
+3 -3
View File
@@ -25,7 +25,7 @@ contains
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, &
mycall12,mygrid6,hiscall12,hisgrid6)
mycall12,mygrid6,hiscall12,hisgrid6,syncStats)
! use wavhdr
use timer_module, only: timer
! type(hdr) h
@@ -38,7 +38,7 @@ contains
real candidate(3,NMAXCAND)
real dd(NMAX)
logical, intent(in) :: lft8apon,lapcqonly,nagain
logical newdat,lsubtract,ldupe,bcontest
logical newdat,lsubtract,ldupe,bcontest,syncStats
character*12 mycall12, hiscall12
character*6 mygrid6,hisgrid6
integer*2 iwave(NMAX)
@@ -114,7 +114,7 @@ contains
endif
call timer('js8dec ',0)
call js8dec(dd,icos,newdat,.false.,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
call js8dec(dd,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, &
hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, &
nbadcrc,iappass,iera,msg37,xsnr)
+3 -3
View File
@@ -25,7 +25,7 @@ contains
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, &
mycall12,mygrid6,hiscall12,hisgrid6)
mycall12,mygrid6,hiscall12,hisgrid6,syncStats)
! use wavhdr
use timer_module, only: timer
! type(hdr) h
@@ -38,7 +38,7 @@ contains
real candidate(3,NMAXCAND)
real dd(NMAX)
logical, intent(in) :: lft8apon,lapcqonly,nagain
logical newdat,lsubtract,ldupe,bcontest
logical newdat,lsubtract,ldupe,bcontest,syncStats
character*12 mycall12, hiscall12
character*6 mygrid6,hisgrid6
integer*2 iwave(NMAX)
@@ -114,7 +114,7 @@ contains
endif
call timer('js8dec ',0)
call js8dec(dd,icos,newdat,.false.,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
call js8dec(dd,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, &
hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, &
nbadcrc,iappass,iera,msg37,xsnr)
+3 -3
View File
@@ -25,7 +25,7 @@ contains
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, &
mycall12,mygrid6,hiscall12,hisgrid6)
mycall12,mygrid6,hiscall12,hisgrid6,syncStats)
! use wavhdr
use timer_module, only: timer
! type(hdr) h
@@ -38,7 +38,7 @@ contains
real candidate(3,NMAXCAND)
real dd(NMAX)
logical, intent(in) :: lft8apon,lapcqonly,nagain
logical newdat,lsubtract,ldupe,bcontest
logical newdat,lsubtract,ldupe,bcontest,syncStats
character*12 mycall12, hiscall12
character*6 mygrid6,hisgrid6
integer*2 iwave(NMAX)
@@ -114,7 +114,7 @@ contains
endif
call timer('js8dec ',0)
call js8dec(dd,icos,newdat,.false.,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
call js8dec(dd,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, &
hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, &
nbadcrc,iappass,iera,msg37,xsnr)
+3 -3
View File
@@ -25,7 +25,7 @@ contains
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, &
mycall12,mygrid6,hiscall12,hisgrid6)
mycall12,mygrid6,hiscall12,hisgrid6,syncStats)
! use wavhdr
use timer_module, only: timer
! type(hdr) h
@@ -38,7 +38,7 @@ contains
real candidate(3,NMAXCAND)
real dd(NMAX)
logical, intent(in) :: lft8apon,lapcqonly,nagain
logical newdat,lsubtract,ldupe,bcontest
logical newdat,lsubtract,ldupe,bcontest,syncStats
character*12 mycall12, hiscall12
character*6 mygrid6,hisgrid6
integer*2 iwave(NMAX)
@@ -114,7 +114,7 @@ contains
endif
call timer('js8dec ',0)
call js8dec(dd,icos,newdat,.false.,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
call js8dec(dd,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lft8apon, &
lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, &
hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, &
nbadcrc,iappass,iera,msg37,xsnr)
+4 -4
View File
@@ -21,7 +21,7 @@ program jt9
!### ndepth was defined as 60001. Why???
integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700, &
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=1,nexp_decode=0
logical :: read_files = .true., tx9 = .false., display_help = .false., synconly = .false.
logical :: read_files = .true., tx9 = .false., display_help = .false., syncStats = .false.
type (option) :: long_options(22) = [ &
option ('help', .false., 'h', 'Display this help message', ''), &
option ('shmem',.true.,'s','Use shared memory for sample data','KEY'), &
@@ -50,7 +50,7 @@ program jt9
!option ('jt65', .false., '6', 'JT65 mode', ''), &
!option ('jt9', .false., '9', 'JT9 mode', ''), &
option ('js8', .false., '8', 'JS8 mode', ''), &
option ('synconly', .false., 'y', 'Sync only', ''), &
option ('syncStats', .false., 'y', 'Sync only', ''), &
!option ('jt4', .false., '4', 'JT4 mode', ''), &
!option ('qra64', .false., 'q', 'QRA64 mode', ''), &
option ('sub-mode', .true., 'b', 'Sub mode, default SUBMODE=A', 'A'), &
@@ -120,7 +120,7 @@ program jt9
case ('8')
mode = 8
case ('y')
synconly = .true.
syncStats = .true.
case ('T')
tx9 = .true.
case ('w')
@@ -257,7 +257,7 @@ program jt9
shared_data%params%ljt65apon=.true.
shared_data%params%napwid=75
shared_data%params%dttol=3.
shared_data%params%synconly=synconly
shared_data%params%syncStats=syncStats
! shared_data%params%minsync=0 !### TEST ONLY
! shared_data%params%nfqso=1500 !### TEST ONLY
+1 -1
View File
@@ -18,7 +18,7 @@
integer(c_int) :: nfsplit
integer(c_int) :: nfb
integer(c_int) :: ntol
logical(c_bool) :: synconly
logical(c_bool) :: syncStats
integer(c_int) :: kin
integer(c_int) :: kposA
integer(c_int) :: kposB