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 extern struct { //This is "common/datcom/..." in Fortran
float d4[2*5760000]; //Raw I/Q data from Linrad 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 float savg[NFFT]; //Avg spectra at 0,45,90,135 deg pol
double fcenter; //Center freq from Linrad (MHz) double fcenter; //Center freq from Linrad (MHz)
int nutc; //UTC as integer, HHMM 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 extern struct { //This is "common/datcom/..." in Fortran
float d4[2*5760000]; //Raw I/Q data from Linrad 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 float savg[NFFT]; //Avg spectra at 0,45,90,135 deg pol
double fcenter; //Center freq from Linrad (MHz) double fcenter; //Center freq from Linrad (MHz)
int nutc; //UTC as integer, HHMM 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]; datcom_.d4[j++]=(float)id[i+1];
} }
} }
qDebug() << "cc" << j << j/(2.0*96000.0);
fclose(fp); fclose(fp);
datcom_.ndiskdat=1; datcom_.ndiskdat=1;

View File

@ -3,7 +3,7 @@ subroutine decode0(dd,ss,savg)
use timer_module, only: timer use timer_module, only: timer
parameter (NSMAX=60*96000) 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 real*8 fcenter
integer offset integer offset
integer hist(0:32768) 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 (NFFT=32768) !FFTs done in symspec()
parameter (MAX_CANDIDATES=50) parameter (MAX_CANDIDATES=50)
type(candidate) :: cand(MAX_CANDIDATES) 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 real savg0(NFFT),savg(NFFT) !Average spectra over whole Rx sequence
integer ipk1(1) !Peak index of local portion of spectrum integer ipk1(1) !Peak index of local portion of spectrum
logical sync_ok !True if sync pattern is present 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 (NFFT=32768)
parameter (LAGMAX=33) 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 real ccf(0:LAGMAX) !The WSJT "blue curve", peak at DT
logical sync_ok logical sync_ok
integer isync0(22),isync(22),ipk(1) integer isync0(22),isync(22),ipk(1)

View File

@ -16,7 +16,7 @@ subroutine q65c(itimer)
character*6 mygrid,hisgrid character*6 mygrid,hisgrid
character*20 datetime 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. ### !### REMEMBER that /npar/ is not updated until nparams=nparams0 is executed. ###
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, & 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) parameter (NSMAX=60*96000)
complex cx(NSMAX/64) !Data at 1378.125 samples/s complex cx(NSMAX/64) !Data at 1378.125 samples/s
real dd(2,NSMAX) !I/Q data from Linrad 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 savg(NFFT) !Average spectrum
real*8 fcenter !Center RF frequency, MHz real*8 fcenter !Center RF frequency, MHz
character mycall*12,hiscall*12,hisgrid*6 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 filbig(dd,NSMAX,f0,newdat,nfsample,cx,n5) !Do the full-length FFT
call timer('filbig ',1) call timer('filbig ',1)
do icand=1,ncand !Attempt to decode each candidate do icand=1,ncand !Attempt to decode each candidate
f0=cand(icand)%f f0=cand(icand)%f
ntrperiod=cand(icand)%ntrperiod 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 integer*2 jd(4),kd(2),nblock2
real*4 yd(2) real*4 yd(2)
real*8 fcenter 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) junk(NJUNK)
equivalence (kd,d4) equivalence (kd,d4)
equivalence (jd,d8,yd) 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) ! pxdb power in x channel (0-60 dB)
! ssz5a polarized spectrum, for waterfall display ! ssz5a polarized spectrum, for waterfall display
! nkhz integer kHz portion of center frequency, e.g., 125 for 144.125 ! 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 ! nzap number of samples zero'ed by noise blanker
include 'njunk.f90' include 'njunk.f90'
@ -16,7 +16,7 @@ subroutine symspec(k,ndiskdat,nb,nbslider,nfsample, &
parameter (NFFT=32768) !Length of FFTs parameter (NFFT=32768) !Length of FFTs
real*8 ts,hsym real*8 ts,hsym
real*8 fcenter 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) junk(NJUNK)
real*4 ssz5a(NFFT),w(NFFT) real*4 ssz5a(NFFT),w(NFFT)
complex cx(NFFT) complex cx(NFFT)
@ -105,7 +105,7 @@ subroutine symspec(k,ndiskdat,nb,nbslider,nfsample, &
ihsym=ihsym+1 ihsym=ihsym+1
cx=w*cx00 !Apply window for 2nd forward FFT cx=w*cx00 !Apply window for 2nd forward FFT
call four2a(cx,NFFT,1,1,1) !Second forward FFT (X) call four2a(cx,NFFT,1,1,1) !Second forward FFT (X)
n=min(373,ihsym) n=min(400,ihsym)
do i=1,NFFT do i=1,NFFT
sx=real(cx(i))**2 + aimag(cx(i))**2 sx=real(cx(i))**2 + aimag(cx(i))**2
ss(n,i)=sx ! Pol = 0 ss(n,i)=sx ! Pol = 0

View File

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

View File

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