mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
Start a framework for FT8 decoder.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7727 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
bb21ca949c
commit
3ba80279ec
@ -299,6 +299,7 @@ set (wsjt_FSRCS
|
|||||||
lib/jt4_decode.f90
|
lib/jt4_decode.f90
|
||||||
lib/jt65_decode.f90
|
lib/jt65_decode.f90
|
||||||
lib/jt65_mod.f90
|
lib/jt65_mod.f90
|
||||||
|
lib/ft8_decode.f90
|
||||||
lib/jt9_decode.f90
|
lib/jt9_decode.f90
|
||||||
lib/options.f90
|
lib/options.f90
|
||||||
lib/packjt.f90
|
lib/packjt.f90
|
||||||
|
@ -6,6 +6,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
use jt4_decode
|
use jt4_decode
|
||||||
use jt65_decode
|
use jt65_decode
|
||||||
use jt9_decode
|
use jt9_decode
|
||||||
|
use ft8_decode
|
||||||
|
|
||||||
include 'jt9com.f90'
|
include 'jt9com.f90'
|
||||||
include 'timer_common.inc'
|
include 'timer_common.inc'
|
||||||
@ -22,6 +23,10 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
integer :: decoded
|
integer :: decoded
|
||||||
end type counting_jt9_decoder
|
end type counting_jt9_decoder
|
||||||
|
|
||||||
|
type, extends(ft8_decoder) :: counting_ft8_decoder
|
||||||
|
integer :: decoded
|
||||||
|
end type counting_ft8_decoder
|
||||||
|
|
||||||
real ss(184,NSMAX)
|
real ss(184,NSMAX)
|
||||||
logical baddata,newdat65,newdat9,single_decode,bVHF,bad0
|
logical baddata,newdat65,newdat9,single_decode,bVHF,bad0
|
||||||
integer*2 id2(NTMAX*12000)
|
integer*2 id2(NTMAX*12000)
|
||||||
@ -31,11 +36,13 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
type(counting_jt4_decoder) :: my_jt4
|
type(counting_jt4_decoder) :: my_jt4
|
||||||
type(counting_jt65_decoder) :: my_jt65
|
type(counting_jt65_decoder) :: my_jt65
|
||||||
type(counting_jt9_decoder) :: my_jt9
|
type(counting_jt9_decoder) :: my_jt9
|
||||||
|
type(counting_ft8_decoder) :: my_ft8
|
||||||
|
|
||||||
! initialize decode counts
|
! initialize decode counts
|
||||||
my_jt4%decoded = 0
|
my_jt4%decoded = 0
|
||||||
my_jt65%decoded = 0
|
my_jt65%decoded = 0
|
||||||
my_jt9%decoded = 0
|
my_jt9%decoded = 0
|
||||||
|
my_ft8%decoded = 0
|
||||||
|
|
||||||
single_decode=iand(params%nexp_decode,32).ne.0
|
single_decode=iand(params%nexp_decode,32).ne.0
|
||||||
bVHF=iand(params%nexp_decode,64).ne.0
|
bVHF=iand(params%nexp_decode,64).ne.0
|
||||||
@ -43,6 +50,18 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
if(mod(params%nranera,2).eq.1) ntrials=3*10**(params%nranera/2)
|
if(mod(params%nranera,2).eq.1) ntrials=3*10**(params%nranera/2)
|
||||||
if(params%nranera.eq.0) ntrials=0
|
if(params%nranera.eq.0) ntrials=0
|
||||||
|
|
||||||
|
if(params%nmode.eq.8) then
|
||||||
|
! We're in FT8 mode
|
||||||
|
call timer('decft8 ',0)
|
||||||
|
call my_ft8%decode(ft8_decoded,ss,id2,params%nfqso, &
|
||||||
|
newdat9,params%npts8,params%nfa,params%nfsplit,params%nfb, &
|
||||||
|
params%ntol,params%nzhsym,logical(params%nagain),params%ndepth, &
|
||||||
|
params%nmode,params%nsubmode,params%nexp_decode)
|
||||||
|
call timer('decft8 ',1)
|
||||||
|
go to 800
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
rms=sqrt(dot_product(float(id2(300000:310000)), &
|
rms=sqrt(dot_product(float(id2(300000:310000)), &
|
||||||
float(id2(300000:310000)))/10000.0)
|
float(id2(300000:310000)))/10000.0)
|
||||||
if(rms.lt.2.0) go to 800
|
if(rms.lt.2.0) go to 800
|
||||||
@ -370,4 +389,29 @@ contains
|
|||||||
end select
|
end select
|
||||||
end subroutine jt9_decoded
|
end subroutine jt9_decoded
|
||||||
|
|
||||||
|
subroutine ft8_decoded (this, sync, snr, dt, freq, drift, decoded)
|
||||||
|
use ft8_decode
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
class(ft8_decoder), intent(inout) :: this
|
||||||
|
real, intent(in) :: sync
|
||||||
|
integer, intent(in) :: snr
|
||||||
|
real, intent(in) :: dt
|
||||||
|
real, intent(in) :: freq
|
||||||
|
integer, intent(in) :: drift
|
||||||
|
character(len=22), intent(in) :: decoded
|
||||||
|
|
||||||
|
!$omp critical(decode_results)
|
||||||
|
write(*,1000) params%nutc,snr,dt,nint(freq),decoded
|
||||||
|
1000 format(i4.4,i4,f5.1,i5,1x,'@ ',1x,a22)
|
||||||
|
write(13,1002) params%nutc,nint(sync),snr,dt,freq,drift,decoded
|
||||||
|
1002 format(i4.4,i4,i5,f6.1,f8.0,i4,3x,a22,' FT8')
|
||||||
|
call flush(6)
|
||||||
|
!$omp end critical(decode_results)
|
||||||
|
select type(this)
|
||||||
|
type is (counting_ft8_decoder)
|
||||||
|
this%decoded = this%decoded + 1
|
||||||
|
end select
|
||||||
|
end subroutine ft8_decoded
|
||||||
|
|
||||||
end subroutine multimode_decoder
|
end subroutine multimode_decoder
|
||||||
|
@ -2413,6 +2413,7 @@ void MainWindow::decode() //decode()
|
|||||||
dec_data.params.nmode=4;
|
dec_data.params.nmode=4;
|
||||||
dec_data.params.ntxmode=4;
|
dec_data.params.ntxmode=4;
|
||||||
}
|
}
|
||||||
|
if(m_mode=="FT8") dec_data.params.nmode=8;
|
||||||
dec_data.params.ntrperiod=m_TRperiod;
|
dec_data.params.ntrperiod=m_TRperiod;
|
||||||
dec_data.params.nsubmode=m_nSubMode;
|
dec_data.params.nsubmode=m_nSubMode;
|
||||||
if(m_mode=="QRA64") dec_data.params.nsubmode=100 + m_nSubMode;
|
if(m_mode=="QRA64") dec_data.params.nsubmode=100 + m_nSubMode;
|
||||||
|
Loading…
Reference in New Issue
Block a user