Resize arrays to enable processing up to full 60 seconds of data.

This commit is contained in:
Joe Taylor 2023-12-07 11:43:25 -05:00
parent d62cdbaf2b
commit bf861d9979
11 changed files with 14 additions and 16 deletions

View File

@ -7,7 +7,7 @@ extern "C" {
extern struct { //This is "common/datcom/..." in Fortran
float d4[2*5760000]; //Raw I/Q data from Linrad
float ss[373*NFFT]; //Half-symbol spectra at 0,45,90,135 deg pol
float ss[400*NFFT]; //Half-symbol spectra at 0,45,90,135 deg pol
float savg[NFFT]; //Avg spectra at 0,45,90,135 deg pol
double fcenter; //Center freq from Linrad (MHz)
int nutc; //UTC as integer, HHMM
@ -47,7 +47,7 @@ extern struct { //This is "common/datcom/..." in Fortran
extern struct { //This is "common/datcom/..." in Fortran
float d4[2*5760000]; //Raw I/Q data from Linrad
float ss[373*NFFT]; //Half-symbol spectra at 0,45,90,135 deg pol
float ss[400*NFFT]; //Half-symbol spectra at 0,45,90,135 deg pol
float savg[NFFT]; //Avg spectra at 0,45,90,135 deg pol
double fcenter; //Center freq from Linrad (MHz)
int nutc; //UTC as integer, HHMM

View File

@ -39,7 +39,6 @@ void getfile(QString fname, bool xpol, int dbDgrd)
datcom_.d4[j++]=(float)id[i+1];
}
}
qDebug() << "cc" << j << j/(2.0*96000.0);
fclose(fp);
datcom_.ndiskdat=1;

View File

@ -3,7 +3,7 @@ subroutine decode0(dd,ss,savg)
use timer_module, only: timer
parameter (NSMAX=60*96000)
real*4 dd(2,NSMAX),ss(373,NFFT),savg(NFFT)
real*4 dd(2,NSMAX),ss(400,NFFT),savg(NFFT)
real*8 fcenter
integer offset
integer hist(0:32768)

View File

@ -13,7 +13,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,ntol,f0_selected,cand,ncand)
parameter (NFFT=32768) !FFTs done in symspec()
parameter (MAX_CANDIDATES=50)
type(candidate) :: cand(MAX_CANDIDATES)
real ss(373,NFFT) !Symbol spectra
real ss(400,NFFT) !Symbol spectra
real savg0(NFFT),savg(NFFT) !Average spectra over whole Rx sequence
integer ipk1(1) !Peak index of local portion of spectrum
logical sync_ok !True if sync pattern is present

View File

@ -4,7 +4,7 @@ subroutine q65_sync(ss,i0,nts_q65,ntrperiod,iseq,sync_ok,snr,xdt)
parameter (NFFT=32768)
parameter (LAGMAX=33)
real ss(373,NFFT) !Symbol spectra
real ss(400,NFFT) !Symbol spectra
real ccf(0:LAGMAX) !The WSJT "blue curve", peak at DT
logical sync_ok
integer isync0(22),isync(22),ipk(1)

View File

@ -16,7 +16,7 @@ subroutine q65c(itimer)
character*6 mygrid,hisgrid
character*20 datetime
common/datcom2/dd(2,5760000),ss(373,NFFT),savg(NFFT),nparams0
common/datcom2/dd(2,5760000),ss(400,NFFT),savg(NFFT),nparams0
!### REMEMBER that /npar/ is not updated until nparams=nparams0 is executed. ###
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &

View File

@ -20,7 +20,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
parameter (NSMAX=60*96000)
complex cx(NSMAX/64) !Data at 1378.125 samples/s
real dd(2,NSMAX) !I/Q data from Linrad
real ss(373,NFFT) !Symbol spectra
real ss(400,NFFT) !Symbol spectra
real savg(NFFT) !Average spectrum
real*8 fcenter !Center RF frequency, MHz
character mycall*12,hiscall*12,hisgrid*6
@ -57,7 +57,6 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
call filbig(dd,NSMAX,f0,newdat,nfsample,cx,n5) !Do the full-length FFT
call timer('filbig ',1)
do icand=1,ncand !Attempt to decode each candidate
f0=cand(icand)%f
ntrperiod=cand(icand)%ntrperiod

View File

@ -11,7 +11,7 @@ subroutine recvpkt(nsam,nblock2,userx_no,k,buf4,buf8)
integer*2 jd(4),kd(2),nblock2
real*4 yd(2)
real*8 fcenter
common/datcom/dd(2,5760000),ss(373,NFFT),savg(NFFT),fcenter,nutc, &
common/datcom/dd(2,5760000),ss(400,NFFT),savg(NFFT),fcenter,nutc, &
junk(NJUNK)
equivalence (kd,d4)
equivalence (jd,d8,yd)

View File

@ -8,7 +8,7 @@ subroutine symspec(k,ndiskdat,nb,nbslider,nfsample, &
! pxdb power in x channel (0-60 dB)
! ssz5a polarized spectrum, for waterfall display
! nkhz integer kHz portion of center frequency, e.g., 125 for 144.125
! ihsym index number of this half-symbol (1-373)
! ihsym index number of this half-symbol (1-400)
! nzap number of samples zero'ed by noise blanker
include 'njunk.f90'
@ -16,7 +16,7 @@ subroutine symspec(k,ndiskdat,nb,nbslider,nfsample, &
parameter (NFFT=32768) !Length of FFTs
real*8 ts,hsym
real*8 fcenter
common/datcom/dd(2,5760000),ss(373,NFFT),savg(NFFT),fcenter,nutc, &
common/datcom/dd(2,5760000),ss(400,NFFT),savg(NFFT),fcenter,nutc, &
junk(NJUNK)
real*4 ssz5a(NFFT),w(NFFT)
complex cx(NFFT)
@ -105,7 +105,7 @@ subroutine symspec(k,ndiskdat,nb,nbslider,nfsample, &
ihsym=ihsym+1
cx=w*cx00 !Apply window for 2nd forward FFT
call four2a(cx,NFFT,1,1,1) !Second forward FFT (X)
n=min(373,ihsym)
n=min(400,ihsym)
do i=1,NFFT
sx=real(cx(i))**2 + aimag(cx(i))**2
ss(n,i)=sx ! Pol = 0

View File

@ -707,9 +707,9 @@ void MainWindow::diskDat() //diskDat()
m_diskData=true;
datcom_.newdat=1;
hsym=0.15*96000.0; //Samples per Q65-30x half-symbol or Q65-60x quarter-symbol
for(int i=0; i<380; i++) { // Do the half-symbol FFTs
for(int i=0; i<400; i++) { // Do the half-symbol FFTs
int k = i*hsym + 0.5;
if(k > 56*96000) break;
if(k > 60*96000) break;
dataSink(k);
qApp->processEvents(); // Allow the waterfall to update
}

View File

@ -15,7 +15,7 @@ extern "C"
struct
{
double d8[60*96000]; //This is "common/datcom/..." in fortran
float ss[373*NFFT];
float ss[400*NFFT];
float savg[NFFT];
double fcenter;
int nutc;