From 30ab29d9e3abff9849683e34ec275c9c032f37f3 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Sun, 27 Dec 2020 15:27:26 -0500 Subject: [PATCH] Work in progress, with lots of diagnostics. Do not use on the air! --- lib/q65.f90 | 1 + lib/q65_avg.f90 | 6 +++++- lib/q65_decode.f90 | 3 ++- lib/qra/q65/q65_loops.f90 | 28 ++++++++++++++++------------ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/q65.f90 b/lib/q65.f90 index 846a5cf87..50e7fbb16 100644 --- a/lib/q65.f90 +++ b/lib/q65.f90 @@ -5,6 +5,7 @@ module q65 integer iutc(MAXAVE) integer iseq(MAXAVE) integer listutc(10) + integer apmask(13),apsymbols(13) real f0save(MAXAVE) real xdtsave(MAXAVE) real snr1save(MAXAVE) diff --git a/lib/q65_avg.f90 b/lib/q65_avg.f90 index 97d473dfe..8a116b3bd 100644 --- a/lib/q65_avg.f90 +++ b/lib/q65_avg.f90 @@ -157,13 +157,17 @@ subroutine q65_avg(nutc,ntrperiod,mode_q65,LL,nfqso,ntol,lclearave, & endif enddo + APmask=0 + APsymbols=0 + read(41) LNZ,s3avg + do ibw=ibwa,ibwb b90=1.72**ibw call q65_intrinsics_ff(s3avg,nsubmode,b90/baud,nFadingModel,s3prob) call q65_dec(s3avg,s3prob,APmask,APsymbols,esnodb,dat4,irc) + print*,'G',ibw,irc,sum(s3avg) if(irc.ge.0) then id2=iaptype+2 - print*,'G',id2 exit endif enddo ! ibw (b90 loop) diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index e2e402059..303fa9df3 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -42,6 +42,8 @@ contains use timer_module, only: timer use packjt77 use, intrinsic :: iso_c_binding + use q65 + parameter (NMAX=300*12000) !Max TRperiod is 300 s class(q65_decoder), intent(inout) :: this procedure(q65_decode_callback) :: callback @@ -55,7 +57,6 @@ contains integer dat4(13) !Decoded message as 12 6-bit integers integer apsym0(58),aph10(10) integer apmask1(78),apsymbols1(78) - integer apmask(13),apsymbols(13) integer dgen(13) integer codewords(63,206) logical lclearave,lapcqonly,unpk77_success diff --git a/lib/qra/q65/q65_loops.f90 b/lib/qra/q65/q65_loops.f90 index bdcfeccc6..95cf573f5 100644 --- a/lib/qra/q65/q65_loops.f90 +++ b/lib/qra/q65/q65_loops.f90 @@ -17,7 +17,7 @@ subroutine q65_loops(c00,npts2,nsps,mode,mode_q65,nsubmode,nFadingModel, & integer cw4(63) integer dat4(13) !Decoded message (as 13 six-bit integers) integer nap(0:11) !AP return codes - data nap/0,2,3,2,3,4,2,3,6,4,6,6/,nsave/0/ + data nap/0,2,3,2,3,4,2,3,6,4,6,6/ data cw4/0, 0, 0, 0, 8, 4,60,35,17,48,33,25,34,43,43,43,35,15,46,30, & 54,24,26,26,57,57,42, 3,23,11,49,49,16, 2, 6, 6,55,21,39,51, & 51,51,42,42,50,25,31,35,57,30, 1,54,54,10,10,22,44,58,57,40, & @@ -82,6 +82,9 @@ subroutine q65_loops(c00,npts2,nsps,mode,mode_q65,nsubmode,nFadingModel, & call timer('q65_dec ',0) call q65_dec(s3,s3prob,APmask,APsymbols,esnodb,dat4,irc) call timer('q65_dec ',1) + print*,'H',ibw,irc,iaptype,sum(s3(1:LL*NN)) +! rewind 41 +! write(41) LL*NN,s3(1:LL*NN) if(irc.ge.0) id2=iaptype+2 !### Temporary ### @@ -107,17 +110,18 @@ subroutine q65_loops(c00,npts2,nsps,mode,mode_q65,nsubmode,nFadingModel, & enddo ! ibw (b90 loop) enddo ! idt (DT loop) enddo ! idf (f0 loop) - if(iaptype.eq.0) then - a=0. - a(1)=-f0 - call twkfreq(c00,c0,npts2,6000.0,a) - jpk=3000 !### Are these definitions OK? - if(nsps.ge.3600) jpk=6000 !### TR >= 60 s - call spec64(c0,nsps,mode,mode_q65,jpk,s3,LL,NN) - call pctile(s3,LL*NN,40,base) - s3=s3/base - where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim - endif + +! if(iaptype.eq.0) then +! a=0. +! a(1)=-f0 +! call twkfreq(c00,c0,npts2,6000.0,a) +! jpk=3000 !### Are these definitions OK? +! if(nsps.ge.3600) jpk=6000 !### TR >= 60 s +! call spec64(c0,nsps,mode,mode_q65,jpk,s3,LL,NN) +! call pctile(s3,LL*NN,40,base) +! s3=s3/base +! where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim +! endif 100 if(irc.ge.0) then snr2=esnodb - db(2500.0/baud)