diff --git a/map65/commons.h b/map65/commons.h index c94050d55..99cf672fb 100644 --- a/map65/commons.h +++ b/map65/commons.h @@ -38,6 +38,8 @@ extern struct { //This is "common/datcom/..." in Fortran char hiscall[12]; char hisgrid[6]; char datetime[20]; + char datadir[200]; + char tempdir[200]; } datcom_; } diff --git a/map65/libm65/decode0.f90 b/map65/libm65/decode0.f90 index 242edac15..5ddebc5e1 100644 --- a/map65/libm65/decode0.f90 +++ b/map65/libm65/decode0.f90 @@ -8,16 +8,16 @@ subroutine decode0(dd,ss,savg,nstandalone) integer hist(0:32768) character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20 character mycall0*12,hiscall0*12,hisgrid0*6 + character*300 datadir,tempdir common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, & - nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime + nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime,datadir,tempdir common/tracer/ limtrace,lu data neme0/-99/,mcall3b/1/ save call timer('decode0 ',0) - if(newdat.ne.0) then nz=52*96000 hist=0 diff --git a/map65/libm65/m65.f90 b/map65/libm65/m65.f90 index dfce37194..c8efd3e94 100644 --- a/map65/libm65/m65.f90 +++ b/map65/libm65/m65.f90 @@ -13,12 +13,13 @@ program m65 common/tracer/limtrace,lu real*8 fc0,fcenter character*80 arg,infile + character*300 datadir,tempdir character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20 common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fc0,nutc0,junk(36) common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, & - nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime + nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime,datadir,tempdir nargs=iargc() if(nargs.ne.1 .and. nargs.lt.5) then diff --git a/map65/libm65/m65a.f90 b/map65/libm65/m65a.f90 index 21ea4019d..259f68001 100644 --- a/map65/libm65/m65a.f90 +++ b/map65/libm65/m65a.f90 @@ -63,18 +63,41 @@ subroutine m65c(dd,ss,savg,nparams0) integer*1 detach_m65 real*4 dd(4,5760000),ss(4,322,32768),savg(4,32768) real*8 fcenter - integer nparams0(40),nparams(40) + integer nparams0(189),nparams(189) character*12 mycall,hiscall character*6 mygrid,hisgrid character*20 datetime - common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & - ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & - mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, & - nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime + character*300 datadir,tempdir + character*1 c0 + common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & + ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & + mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, & + nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime,datadir,tempdir equivalence (nparams,fcenter) - + nparams=nparams0 !Copy parameters into common/npar/ npatience=1 + i0=index(mycall,c0) + if(i0.gt.0) mycall=mycall(1:i0-1) + + i0=index(mygrid,c0) + if(i0.gt.0) mygrid=mygrid(1:i0-1) + + i0=index(hiscall,c0) + if(i0.gt.0) hiscall=hiscall(1:i0-1) + + i0=index(hisgrid,c0) + if(i0.gt.0) hisgrid=hisgrid(1:i0-1) + + i0=index(datetime,c0) + if(i0.gt.0) datetime=datetime(1:i0-1) + + i0=index(datadir,c0) + if(i0.gt.0) datadir=datadir(1:i0-1) + + i0=index(tempdir,c0) + if(i0.gt.0) tempdir=tempdir(1:i0-1) + if(iand(nrxlog,1).ne.0) then write(21,1000) datetime(:17) 1000 format(/'UTC Date: 'a17/78('-')) diff --git a/map65/libm65/map65a.f90 b/map65/libm65/map65a.f90 index 442302d60..90cfbbe0f 100644 --- a/map65/libm65/map65a.f90 +++ b/map65/libm65/map65a.f90 @@ -38,15 +38,6 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & nwrite_q65=0 bq65=mode_q65.gt.0 - !### - write(71,3071) newdat,nutc,ntol,idphi,nfa,nfb, & - mousedf,mousefqso,nagain,ndecdone,ndiskdat,nfshift,ndphi, & - nfcal,nkeep,mcall3b,nsum,nsave,nxant,neme,ndepth, & - nhsym,nfsample,nxpol,nmode,mycall,mygrid,hiscall,hisgrid, & - sum(dd),sum(ss),sum(savg) -3071 format(16i5/9i6/a12,a6,2x,a12,a6/3e15.6) -!### - mcall3a=mcall3b mousefqso0=mousefqso xpol=(nxpol.ne.0) @@ -69,7 +60,6 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & nqdz=1 if(bq65 .and. (nutc0.ge.0 .or. (nstandalone.eq.1))) nqdz=2 ! if(bq65) nqdz=2 - write(69,*) nqdz,mousefqso if(nutc.ne.nutc0) nfile=nfile+1 nutc0=nutc diff --git a/map65/libm65/q65b.f90 b/map65/libm65/q65b.f90 index 39475d90c..9fbaf804a 100644 --- a/map65/libm65/q65b.f90 +++ b/map65/libm65/q65b.f90 @@ -25,9 +25,6 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & data first/.true./ save - write(72,*) nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & - mycall0,hiscall0,hisgrid,mode_q65 - if(first) then open(9,file='wsjtx_dir.txt',status='old') read(9,*) wsjtx_dir diff --git a/map65/mainwindow.cpp b/map65/mainwindow.cpp index 7dfe2bca3..4a042a49c 100644 --- a/map65/mainwindow.cpp +++ b/map65/mainwindow.cpp @@ -292,6 +292,10 @@ MainWindow::MainWindow(QWidget *parent) : if(ui->actionCuteSDR->isChecked()) on_actionCuteSDR_triggered(); if(ui->actionAFMHot->isChecked()) on_actionAFMHot_triggered(); if(ui->actionBlue->isChecked()) on_actionBlue_triggered(); + + m_dataDir = QStandardPaths::writableLocation (QStandardPaths::DataLocation); + m_tempDir = QStandardPaths::writableLocation (QStandardPaths::TempLocation) + "/map65"; + // End of MainWindow constructor } @@ -307,6 +311,7 @@ MainWindow::~MainWindow() soundOutThread.quitExecution=true; soundOutThread.wait(3000); } + PaError paerr=Pa_Terminate(); if(!m_decoderBusy) { QFile lockFile(m_appDir + "/.lock"); lockFile.remove(); @@ -950,7 +955,6 @@ void MainWindow::OnExit() { g_pWideGraph->saveSettings(); m_killAll=true; - mem_m65.detach(); QFile quitFile(m_appDir + "/.quit"); quitFile.open(QIODevice::ReadWrite); QFile lockFile(m_appDir + "/.lock"); @@ -958,6 +962,7 @@ void MainWindow::OnExit() bool b=proc_m65.waitForFinished(1000); if(!b) proc_m65.kill(); quitFile.remove(); + mem_m65.detach(); qApp->exit(0); // Exit the event loop } @@ -1313,7 +1318,8 @@ void MainWindow::decode() //decode() memcpy(datcom_.hiscall, hcall.toLatin1(), 12); memcpy(datcom_.hisgrid, hgrid.toLatin1(), 6); memcpy(datcom_.datetime, m_dateTime.toLatin1(), 20); - + memcpy(datcom_.datadir, m_dataDir.toLatin1(),m_dataDir.length()); + memcpy(datcom_.tempdir, m_tempDir.toLatin1(),m_tempDir.length()); //newdat=1 ==> this is new data, must do the big FFT //nagain=1 ==> decode only at fQSO +/- Tol @@ -1326,6 +1332,7 @@ void MainWindow::decode() //decode() from += noffset; size -= noffset; } + memcpy(to, from, qMin(mem_m65.size(), size)); datcom_.nagain=0; datcom_.ndiskdat=0; diff --git a/map65/mainwindow.h b/map65/mainwindow.h index 90a38811f..3847f2e7a 100644 --- a/map65/mainwindow.h +++ b/map65/mainwindow.h @@ -256,6 +256,8 @@ private: QString m_colors; QString m_editorCommand; QString m_modeTx; + QString m_dataDir; + QString m_tempDir; QHash m_worked;