From 44729ebe00437c08e82c8c88121fb493af1012ee Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 2 Dec 2022 16:30:18 -0500 Subject: [PATCH] Work in progress on displaying wideband decodes from MAP65 in WSJT-X. --- widgets/mainwindow.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++ widgets/mainwindow.h | 10 +++++++ 2 files changed, 75 insertions(+) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 11d82d18a..94b678065 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -4781,6 +4781,14 @@ void MainWindow::guiUpdate() if(nsec != m_sec0) { // qDebug() << "AAA" << nsec << int(m_specOp) << ui->labDXped->text(); + if(m_mode=="Q65") { + QFileInfo fi(m_appDir+"/wb_q65.txt"); + QDateTime fileTime=fi.lastModified(); + QDateTime now = QDateTime::currentDateTimeUtc (); + int age=fileTime.msecsTo(now)/1000; + if(age==1) readWidebandDecodes(); + } + if(m_mode=="FST4") chk_FST4_freq_range(); m_currentBand=m_config.bands()->find(m_freqNominal); if( SpecOp::HOUND == m_specOp ) { @@ -9152,6 +9160,63 @@ void MainWindow::write_transmit_entry (QString const& file_name) } } +void MainWindow::readWidebandDecodes() +{ +// Update "m_wEMECall" by reading wb_dec.txt + int nhr=0; + int nmin=0; + QFile f(m_appDir+"/wb_q65.txt"); + f.open(QIODevice::ReadOnly); + if(f.isOpen()) { + QTextStream in(&f); + QString line,callsign; + for(int i=0; i<99999; i++) { + line=in.readLine(); + if(line.length()<=0) break; + nhr=line.mid(0,2).toInt(); + nmin=line.mid(2,2).toInt(); + double fsked=line.mid(4,9).toDouble(); + QString msg=line.mid(27,-1); + int i1=msg.indexOf(" "); + int i2=i1 +1 + msg.mid(i1+1,-1).indexOf(" "); + QString call=msg.mid(i1+1,i2-i1); + QString w3=msg.mid(i2+1,-1); + m_EMECall[call].fsked=fsked; + m_EMECall[call].t=60*nhr + nmin; + m_EMECall[call].worked=false; + if(w3.contains(grid_regexp)) m_EMECall[call].grid4=w3; + } + f.close(); + + /* + if(m_ActiveStationsWidget != NULL) m_ActiveStationsWidget->erase(); + + if(m_ActiveStationsWidget!=NULL) m_ActiveStationsWidget->displayRecentStations(t); + QString t1; + if(!bReady) t1 = t1.asprintf(" %3d %+2.2d %4d %1d %2d %4d",az,snr,freq,itx,age,points); + */ + + QMap::iterator i; + QString t=""; + QString t1; + for(i=m_EMECall.begin(); i!=m_EMECall.end(); i++) { + int age=60*nhr + nmin - (i->t); + if(age<0) age += 1440; + if(i->worked) { + t1=t1.asprintf("%5.1f %8s %4d\n",i->fsked,i.key().toLatin1().constData(),age); + } else { + t1=t1.asprintf("%5.1f * %8s %4d\n",i->fsked,i.key().toLatin1().constData(),age); + } + t+=t1; + } + qDebug() << "bb" << t; + if(m_ActiveStationsWidget != NULL) { + m_ActiveStationsWidget->erase(); + m_ActiveStationsWidget->displayRecentStations(t); + } + } +} + // -------------------------- Code for FT8 DXpedition Mode --------------------------- void MainWindow::hound_reply () diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index a2558fe81..821e5f496 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -373,6 +373,7 @@ private: void setColorHighlighting(); void chkFT4(); bool elide_tx1_not_allowed () const; + void readWidebandDecodes(); QProcessEnvironment const& m_env; NetworkAccessManager m_network_manager; @@ -701,6 +702,15 @@ private: }; QMap m_activeCall; //Key = callsign, value = grid4, az, points for ARRL_DIGI + struct EMECall + { + QString grid4; + double fsked; + qint32 t; + bool worked; + }; + QMap m_EMECall; + struct RecentCall { qint64 dialFreq;