Skip useless calls to QMAP's decode0(), depending on 30 s transmissions.

This commit is contained in:
Joe Taylor 2023-12-16 11:48:06 -05:00
parent f42a1bb357
commit 90f3c59ea0
5 changed files with 31 additions and 5 deletions

View File

@ -5,6 +5,7 @@ set (libq65_FSRCS
astro.f90
astro0.f90
astrosub.f90
chkstat.f90
dcoord.f90
decode0.f90
dot.f90

24
qmap/libqmap/chkstat.f90 Normal file
View File

@ -0,0 +1,24 @@
subroutine chkstat(dd,ihsym,bSkip)
real dd(2,5760000)
real power(60)
logical*1 bSkip
k=0
do i=1,60
sq=0.
do j=1,96000
k=k+1
sq=sq + dd(1,k)*dd(1,k) + dd(2,k)*dd(2,k)
enddo
power(i)=sq/(2.0*96000.0)
enddo
bSkip=.false.
n1=count(power(1:30).lt.15.0)
n2=count(power(31:60).lt.15.0)
if(ihsym.le.200 .and. n1.gt.15) bSkip=.true.
if(ihsym.gt.200 .and. n2.gt.15) bSkip=.true.
! print*,'A',ihsym,n1,n2,bSkip
return
end subroutine chkstat

View File

@ -12,7 +12,7 @@ subroutine q65c(itimer)
real*8 fcenter
integer nparams0(NJUNK+3),nparams(NJUNK+3)
logical first
logical*1 bAlso30
logical*1 bAlso30,bSkip
character*12 mycall,hiscall
character*6 mygrid,hisgrid
character*20 datetime
@ -41,6 +41,9 @@ subroutine q65c(itimer)
npatience=1
newdat=1 !Always on ??
call chkstat(dd,max_nhsym,bSkip)
if(bSkip) return
call timer('decode0 ',0)
call decode0(dd,ss,savg)
call timer('decode0 ',1)

View File

@ -346,7 +346,6 @@ void MainWindow::dataSink(int k)
if(!m_fs96000) nfsample=95238;
symspec_(&k, &ndiskdat, &nb, &m_NBslider, &nfsample,
&px, s, &nkhz, &ihsym, &nzap, &slimit, lstrong);
m_ihsym=ihsym;
int nsec=QDateTime::currentSecsSinceEpoch();
if(nsec==nsec0) {
@ -715,7 +714,6 @@ void MainWindow::diskDat() //diskDat()
hsym=0.15*96000.0; //Samples per Q65-30x half-symbol or Q65-60x quarter-symbol
for(int i=0; i<400; i++) { // Do the half-symbol FFTs
int k = i*hsym + 0.5;
m_ihsym=k;
if(k > 60*96000) break;
dataSink(k);
qApp->processEvents(); // Allow the waterfall to update
@ -892,11 +890,12 @@ void MainWindow::decode() //decode()
char *to = (char*) datcom2_.d4;
char *from = (char*) datcom_.d4;
memcpy(to, from, sizeof(datcom_));
datcom_.nagain=0;
datcom_.ndiskdat=0;
m_call3Modified=false;
if(!m_bAlso30 or (m_bAlso30 and (m_ihsym==200))) {
if(!m_bAlso30 or (m_bAlso30 and (datcom2_.nhsym==200))) {
decodes_.ndecodes=0; //Start the decode cycle with a clean slate
m_fetched=0;
}

View File

@ -120,7 +120,6 @@ private:
qint32 m_nDoubleClicked=0;
qint32 m_nline=0;
qint32 m_WSJTX_TRperiod=0;
qint32 m_ihsym;
double m_fAdd;
double m_xavg;