From acd04cc05028283845d19e885296ffd14c5668ec Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 19 Jun 2020 11:43:34 -0400 Subject: [PATCH 1/2] Correctly restore FST280 submode on program restart. --- widgets/mainwindow.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 78eeae69a..f6dce34af 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -4703,7 +4703,6 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie m_QSOProgress=ROGER_REPORT; } m_xRcvd=t[n-2] + " " + t[n-1]; -// qDebug() << "bb" << w2 << w34 << t0 << m_xRcvd; } else if(SpecOp::FIELD_DAY==m_config.special_op_id() and bFieldDay_msg) { if(t0=="R") { gen_msg=setTxMsg(4); @@ -5789,19 +5788,22 @@ void MainWindow::displayWidgets(qint64 n) void MainWindow::on_actionFST280_triggered() { + int nsub=m_nSubMode; on_actionJT65_triggered(); + ui->sbSubmode->setMaximum(3); + m_nSubMode=nsub; + ui->sbSubmode->setValue(m_nSubMode); m_mode="FST280"; m_modeTx="FST280"; ui->actionFST280->setChecked(true); WSPR_config(false); + bool bVHF=m_config.enable_VHF_features(); // 012345678901234567890123456789012 displayWidgets(nWidgets("111011000000111100010000000000000")); - bool bVHF=m_config.enable_VHF_features(); setup_status_bar (bVHF); m_TRperiod = ui->sbTR->value (); ui->sbTR->setMinimum(15); ui->sbTR->setMaximum(300); - ui->sbSubmode->setMaximum(3); on_sbTR_valueChanged(ui->sbTR->value()); statusChanged(); } @@ -9002,8 +9004,6 @@ void MainWindow::set_mode (QString const& mode) else if ("ISCAT" == mode) on_actionISCAT_triggered (); else if ("MSK144" == mode) on_actionMSK144_triggered (); else if ("WSPR" == mode) on_actionWSPR_triggered (); - else if ("FST280" == mode) on_actionFST280_triggered (); - else if ("FST280W" == mode) on_actionFST280W_triggered (); else if ("Echo" == mode) on_actionEcho_triggered (); } From b2ae563a7d2bbc20cb3a93529f897222f862b420 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 19 Jun 2020 11:57:49 -0400 Subject: [PATCH 2/2] For the user, define FST280 frequency as that of the lowest tone. --- lib/fst280/fst280sim.f90 | 9 +++++---- lib/fst280_decode.f90 | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/fst280/fst280sim.f90 b/lib/fst280/fst280sim.f90 index 9d95279f5..7c29d4298 100644 --- a/lib/fst280/fst280sim.f90 +++ b/lib/fst280/fst280sim.f90 @@ -28,7 +28,7 @@ program fst280sim call getarg(2,arg) read(arg,*) nsec !TR sequence length, seconds call getarg(3,arg) - read(arg,*) f0 !Frequency (only used for single-signal) + read(arg,*) f00 !Frequency (only used for single-signal) call getarg(4,arg) read(arg,*) xdt !Time offset from nominal (s) call getarg(5,arg) @@ -46,7 +46,6 @@ program fst280sim twopi=8.0*atan(1.0) fs=12000.0 !Sample rate (Hz) dt=1.0/fs !Sample interval (s) - baud=1.0/tt !Keying rate (baud) nsps=0 if(nsec.eq.15) nsps=800 if(nsec.eq.30) nsps=1680 @@ -57,6 +56,7 @@ program fst280sim print*,'Invalid TR sequence length.' go to 999 endif + baud=12000.0/nsps !Keying rate (baud) nmax=nsec*12000 nz=nsps*NN nz2=nsps*NN2 @@ -78,7 +78,7 @@ program fst280sim write(*,*) write(*,'(a9,a37)') 'Message: ',msgsent37 - write(*,1000) f0,xdt,hmod,txt,snrdb + write(*,1000) f00,xdt,hmod,txt,snrdb 1000 format('f0:',f9.3,' DT:',f6.2,' hmod:',i6,' TxT:',f6.1,' SNR:',f6.1) write(*,*) if(i3.eq.1) then @@ -97,6 +97,7 @@ program fst280sim fsample=12000.0 icmplx=1 + f0=f00+1.5*hmod*baud call gen_fst280wave(itone,NN,nsps,nmax,fsample,hmod,f0,icmplx,c0,wave) k=nint((xdt+1.0)/dt)-nsps c0=cshift(c0,-k) @@ -135,7 +136,7 @@ program fst280sim open(10,file=trim(fname),status='unknown',access='stream') write(10) h,iwave !Save to *.wav file close(10) - write(*,1110) ifile,xdt,f0,snrdb,fname + write(*,1110) ifile,xdt,f00,snrdb,fname 1110 format(i4,f7.2,f8.2,f7.1,2x,a17) enddo diff --git a/lib/fst280_decode.f90 b/lib/fst280_decode.f90 index e47e251e5..0c8fb6f22 100644 --- a/lib/fst280_decode.f90 +++ b/lib/fst280_decode.f90 @@ -89,7 +89,7 @@ contains dt=1.0/fs !Sample interval (s) dt2=1.0/fs2 tt=nsps*dt !Duration of "itone" symbols (s) - + baud=1.0/tt nfft1=2*int(nmax/2) nh1=nfft1/2 allocate( r_data(1:nfft1+2) ) @@ -261,7 +261,8 @@ contains nsnr=nint(xsnr) iaptype=0 qual=0. - call this%callback(nutc,smax1,nsnr,xdt,fc_synced,msg, & + fsig=fc_synced - 1.5*hmod*baud + call this%callback(nutc,smax1,nsnr,xdt,fsig,msg, & iaptype,qual) goto 2002 else