From 204d63929dab32961364fc876d347611ff79db77 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 29 Sep 2020 12:32:47 +0100 Subject: [PATCH] Repair a regression with odd/2nd period FT4 decode timestamps Generalized slow mode decode timestamp generation to a common routine. --- widgets/mainwindow.cpp | 31 ++++++++----------------------- widgets/mainwindow.h | 1 - 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 682fb9ad1..7262f2e12 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3019,34 +3019,19 @@ void MainWindow::decode() //decode() if( m_diskData ) { dec_data.params.lapcqonly=false; } - m_msec0=QDateTime::currentMSecsSinceEpoch(); if(!m_dataAvailable or m_TRperiod==0.0) return; ui->DecodeButton->setChecked (true); - if(!dec_data.params.nagain && m_diskData && (m_TRperiod >= 60.0)) { + if(!dec_data.params.nagain && m_diskData && m_TRperiod >= 60.) { dec_data.params.nutc=dec_data.params.nutc/100; } if(dec_data.params.nagain==0 && dec_data.params.newdat==1 && (!m_diskData)) { - qint64 nperiods=now.toMSecsSinceEpoch()/(1000.0*m_TRperiod); - m_dateTimeSeqStart=QDateTime::fromMSecsSinceEpoch(qint64(1000.0*nperiods*m_TRperiod)).toUTC(); - qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; - int imin=ms/60000; - int ihr=imin/60; - imin=imin % 60; - if(m_TRperiod>=60) imin=imin - (imin % (int(m_TRperiod)/60)); - dec_data.params.nutc=100*ihr + imin; - if(m_TRperiod < 60) { - qint64 ms=1000.0*(2.0-m_TRperiod); - if(m_mode=="FST4") ms=1000.0*(6.0-m_TRperiod); - //Adjust for FT8 early decode: - if(m_mode=="FT8" and m_ihsym==m_earlyDecode and !m_diskData) ms+=(m_hsymStop-m_earlyDecode)*288; - if(m_mode=="FT8" and m_ihsym==m_earlyDecode2 and !m_diskData) ms+=(m_hsymStop-m_earlyDecode2)*288; - QDateTime t=QDateTime::currentDateTimeUtc().addMSecs(ms); - ihr=t.toString("hh").toInt(); - imin=t.toString("mm").toInt(); - int isec=t.toString("ss").toInt(); - isec=isec - fmod(double(isec),m_TRperiod); - dec_data.params.nutc=10000*ihr + 100*imin + isec; - } + auto t_start = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc (), m_TRperiod * 1.e3); + auto t = t_start.time (); + dec_data.params.nutc = t.hour () * 100 + t.minute (); + if (m_TRperiod < 60.) + { + dec_data.params.nutc = dec_data.params.nutc * 100 + t.second (); + } } if(m_nPick==1 and !m_diskData) { diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 071ffd90d..8c19c8302 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -401,7 +401,6 @@ private: qint64 m_msErase; qint64 m_secBandChanged; qint64 m_freqMoon; - qint64 m_msec0; qint64 m_fullFoxCallTime; Frequency m_freqNominal;