mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-19 10:32:02 -05:00
Some cleanup of residual JT65-specific code.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/jtms3@2521 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
4fd7b18b47
commit
5c44d32cc1
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
QT += core gui network
|
QT += core gui network
|
||||||
CONFIG += qwt thread
|
CONFIG += qwt thread
|
||||||
CONFIG += console
|
#CONFIG += console
|
||||||
|
|
||||||
TARGET = jtms3
|
TARGET = jtms3
|
||||||
VERSION = 0.2
|
VERSION = 0.2
|
||||||
|
219
mainwindow.cpp
219
mainwindow.cpp
@ -8,8 +8,6 @@
|
|||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
#include <portaudio.h>
|
#include <portaudio.h>
|
||||||
|
|
||||||
#define NFFT 32768
|
|
||||||
|
|
||||||
short int iwave[30*48000]; //Wave file for Tx audio
|
short int iwave[30*48000]; //Wave file for Tx audio
|
||||||
int nwave; //Length of Tx waveform
|
int nwave; //Length of Tx waveform
|
||||||
bool btxok; //True if OK to transmit
|
bool btxok; //True if OK to transmit
|
||||||
@ -17,7 +15,6 @@ double outputLatency; //Latency in seconds
|
|||||||
qint16 id[30*48000];
|
qint16 id[30*48000];
|
||||||
|
|
||||||
WideGraph* g_pWideGraph = NULL;
|
WideGraph* g_pWideGraph = NULL;
|
||||||
QSharedMemory mem_m65("mem_m65");
|
|
||||||
|
|
||||||
QString rev="$Rev$";
|
QString rev="$Rev$";
|
||||||
QString Program_Title_Version=" JTMS3 v0.2, r" + rev.mid(6,4) +
|
QString Program_Title_Version=" JTMS3 v0.2, r" + rev.mid(6,4) +
|
||||||
@ -79,15 +76,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
SLOT(showStatusMessage(QString)));
|
SLOT(showStatusMessage(QString)));
|
||||||
createStatusBar();
|
createStatusBar();
|
||||||
|
|
||||||
connect(&proc_m65, SIGNAL(readyReadStandardOutput()),
|
|
||||||
this, SLOT(readFromStdout()));
|
|
||||||
|
|
||||||
connect(&proc_m65, SIGNAL(error(QProcess::ProcessError)),
|
|
||||||
this, SLOT(m65_error()));
|
|
||||||
|
|
||||||
connect(&proc_m65, SIGNAL(readyReadStandardError()),
|
|
||||||
this, SLOT(readFromStderr()));
|
|
||||||
|
|
||||||
QTimer *guiTimer = new QTimer(this);
|
QTimer *guiTimer = new QTimer(this);
|
||||||
connect(guiTimer, SIGNAL(timeout()), this, SLOT(guiUpdate()));
|
connect(guiTimer, SIGNAL(timeout()), this, SLOT(guiUpdate()));
|
||||||
guiTimer->start(100); //Don't change the 100 ms!
|
guiTimer->start(100); //Don't change the 100 ms!
|
||||||
@ -114,56 +102,20 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
m_saveAll=false;
|
m_saveAll=false;
|
||||||
m_onlyEME=false;
|
m_onlyEME=false;
|
||||||
m_sec0=-1;
|
m_sec0=-1;
|
||||||
m_hsym0=-1;
|
|
||||||
m_palette="CuteSDR";
|
m_palette="CuteSDR";
|
||||||
m_jtms3RxLog=1; //Write Date and Time to RxLog
|
m_jtms3RxLog=1; //Write Date and Time to RxLog
|
||||||
m_nutc0=9999;
|
m_nutc0=9999;
|
||||||
m_kb8rq=false;
|
|
||||||
m_NB=false;
|
m_NB=false;
|
||||||
m_mode="JT65B";
|
m_mode="JTMSK";
|
||||||
m_mode65=2;
|
|
||||||
m_fs96000=true;
|
|
||||||
m_udpPort=50004;
|
|
||||||
m_adjustIQ=0;
|
|
||||||
m_applyIQcal=0;
|
|
||||||
m_colors="000066ff0000ffff00969696646464";
|
m_colors="000066ff0000ffff00969696646464";
|
||||||
|
|
||||||
ui->xThermo->setFillBrush(Qt::green);
|
ui->xThermo->setFillBrush(Qt::green);
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
while(true) {
|
|
||||||
int iret=killbyname("m65.exe");
|
|
||||||
if(iret == 603) break;
|
|
||||||
if(iret != 0) msgBox("KillByName return code: " +
|
|
||||||
QString::number(iret));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
if(!mem_m65.attach()) {
|
|
||||||
if (!mem_m65.create(sizeof(mscom_))) {
|
|
||||||
msgBox("Unable to create shared memory segment.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
char *to = (char*)mem_m65.data();
|
|
||||||
int size=sizeof(mscom_);
|
|
||||||
if(mscom_.newdat==0) {
|
|
||||||
int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768;
|
|
||||||
to += noffset;
|
|
||||||
size -= noffset;
|
|
||||||
}
|
|
||||||
memset(to,0,size); //Zero all decoding params in shared memory
|
|
||||||
*/
|
|
||||||
PaError paerr=Pa_Initialize(); //Initialize Portaudio
|
PaError paerr=Pa_Initialize(); //Initialize Portaudio
|
||||||
if(paerr!=paNoError) {
|
if(paerr!=paNoError) {
|
||||||
msgBox("Unable to initialize PortAudio.");
|
msgBox("Unable to initialize PortAudio.");
|
||||||
}
|
}
|
||||||
readSettings(); //Restore user's setup params
|
readSettings(); //Restore user's setup params
|
||||||
QFile lockFile(m_appDir + "/.lock"); //Create .lock so m65 will wait
|
|
||||||
lockFile.open(QIODevice::ReadWrite);
|
|
||||||
QFile quitFile(m_appDir + "/.lock");
|
|
||||||
quitFile.remove();
|
|
||||||
// proc_m65.start(QDir::toNativeSeparators(m_appDir + "/m65 -s"));
|
|
||||||
|
|
||||||
m_pbdecoding_style1="QPushButton{background-color: cyan; \
|
m_pbdecoding_style1="QPushButton{background-color: cyan; \
|
||||||
border-style: outset; border-width: 1px; border-radius: 5px; \
|
border-style: outset; border-width: 1px; border-radius: 5px; \
|
||||||
border-color: black; min-width: 5em; padding: 3px;}";
|
border-color: black; min-width: 5em; padding: 3px;}";
|
||||||
@ -357,7 +309,7 @@ void MainWindow::readSettings()
|
|||||||
"PaletteAFMHot",false).toBool());
|
"PaletteAFMHot",false).toBool());
|
||||||
ui->actionBlue->setChecked(settings.value(
|
ui->actionBlue->setChecked(settings.value(
|
||||||
"PaletteBlue",false).toBool());
|
"PaletteBlue",false).toBool());
|
||||||
m_mode=settings.value("Mode","JT65B").toString();
|
m_mode=settings.value("Mode","JTMSK").toString();
|
||||||
ui->actionNone->setChecked(settings.value("SaveNone",true).toBool());
|
ui->actionNone->setChecked(settings.value("SaveNone",true).toBool());
|
||||||
ui->actionSave_all->setChecked(settings.value("SaveAll",false).toBool());
|
ui->actionSave_all->setChecked(settings.value("SaveAll",false).toBool());
|
||||||
m_saveAll=ui->actionSave_all->isChecked();
|
m_saveAll=ui->actionSave_all->isChecked();
|
||||||
@ -445,23 +397,6 @@ void MainWindow::dataSink(int k)
|
|||||||
g_pWideGraph->dataSink2(green,ig-1);
|
g_pWideGraph->dataSink2(green,ig-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
//Average over specified number of spectra
|
|
||||||
if (n==0) {
|
|
||||||
for (int i=0; i<NFFT; i++)
|
|
||||||
splot[i]=s[i];
|
|
||||||
} else {
|
|
||||||
for (int i=0; i<NFFT; i++)
|
|
||||||
splot[i] += s[i];
|
|
||||||
}
|
|
||||||
n++;
|
|
||||||
|
|
||||||
if (n>=m_waterfallAvg) {
|
|
||||||
for (int i=0; i<NFFT; i++) {
|
|
||||||
splot[i] /= n; //Normalize the average
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
// Time according to this computer
|
// Time according to this computer
|
||||||
qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
|
qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
|
||||||
int n300 = (ms/100) % 300;
|
int n300 = (ms/100) % 300;
|
||||||
@ -722,14 +657,6 @@ void MainWindow::OnExit()
|
|||||||
{
|
{
|
||||||
g_pWideGraph->saveSettings();
|
g_pWideGraph->saveSettings();
|
||||||
m_killAll=true;
|
m_killAll=true;
|
||||||
mem_m65.detach();
|
|
||||||
QFile quitFile(m_appDir + "/.quit");
|
|
||||||
quitFile.open(QIODevice::ReadWrite);
|
|
||||||
QFile lockFile(m_appDir + "/.lock");
|
|
||||||
lockFile.remove(); // Allow m65 to terminate
|
|
||||||
bool b=proc_m65.waitForFinished(1000);
|
|
||||||
if(!b) proc_m65.kill();
|
|
||||||
quitFile.remove();
|
|
||||||
qApp->exit(0); // Exit the event loop
|
qApp->exit(0); // Exit the event loop
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -972,147 +899,9 @@ void MainWindow::freezeDecode(int n) //freezeDecode()
|
|||||||
|
|
||||||
void MainWindow::decode() //decode()
|
void MainWindow::decode() //decode()
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
ui->DecodeButton->setStyleSheet(m_pbdecoding_style1);
|
|
||||||
if(mscom_.nagain==0 && (!m_diskData)) {
|
|
||||||
qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
|
|
||||||
int imin=ms/60000;
|
|
||||||
int ihr=imin/60;
|
|
||||||
imin=imin % 60;
|
|
||||||
mscom_.nutc=100*ihr + imin;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mscom_.idphi=m_dPhi;
|
|
||||||
mscom_.mousedf=g_pWideGraph->DF();
|
|
||||||
mscom_.mousefqso=g_pWideGraph->QSOfreq();
|
|
||||||
mscom_.ndepth=m_ndepth;
|
|
||||||
mscom_.ndiskdat=0;
|
|
||||||
if(m_diskData) mscom_.ndiskdat=1;
|
|
||||||
mscom_.neme=0;
|
|
||||||
if(ui->actionOnly_EME_calls->isChecked()) mscom_.neme=1;
|
|
||||||
|
|
||||||
int ispan=int(g_pWideGraph->fSpan());
|
|
||||||
if(ispan%2 == 1) ispan++;
|
|
||||||
int ifc=int(1000.0*(mscom_.fcenter - int(mscom_.fcenter))+0.5);
|
|
||||||
int nfa=g_pWideGraph->nStartFreq();
|
|
||||||
int nfb=nfa+ispan;
|
|
||||||
int nfshift=nfa + ispan/2 - ifc;
|
|
||||||
|
|
||||||
mscom_.nfa=nfa;
|
|
||||||
mscom_.nfb=nfb;
|
|
||||||
mscom_.nfcal=m_fCal;
|
|
||||||
mscom_.nfshift=nfshift;
|
|
||||||
mscom_.mcall3=0;
|
|
||||||
if(m_call3Modified) mscom_.mcall3=1;
|
|
||||||
mscom_.ntimeout=m_timeout;
|
|
||||||
mscom_.ntol=m_tol;
|
|
||||||
mscom_.nxant=0;
|
|
||||||
if(m_xpolx) mscom_.nxant=1;
|
|
||||||
if(mscom_.nutc < m_nutc0) m_jtms3RxLog |= 1; //Date and Time to all65.txt
|
|
||||||
m_nutc0=mscom_.nutc;
|
|
||||||
// mscom_.jtms3RxLog=m_jtms3RxLog;
|
|
||||||
mscom_.nfsample=96000;
|
|
||||||
if(!m_fs96000) mscom_.nfsample=95238;
|
|
||||||
mscom_.nxpol=0;
|
|
||||||
if(m_xpol) mscom_.nxpol=1;
|
|
||||||
mscom_.mode65=m_mode65;
|
|
||||||
|
|
||||||
QString mcall=(m_myCall+" ").mid(0,12);
|
|
||||||
QString mgrid=(m_myGrid+" ").mid(0,6);
|
|
||||||
QString hcall=(ui->dxCallEntry->text()+" ").mid(0,12);
|
|
||||||
QString hgrid=(ui->dxGridEntry->text()+" ").mid(0,6);
|
|
||||||
|
|
||||||
strncpy(mscom_.mycall, mcall.toAscii(), 12);
|
|
||||||
strncpy(mscom_.mygrid, mgrid.toAscii(), 6);
|
|
||||||
strncpy(mscom_.hiscall, hcall.toAscii(), 12);
|
|
||||||
strncpy(mscom_.hisgrid, hgrid.toAscii(), 6);
|
|
||||||
strncpy(mscom_.datetime, m_dateTime.toAscii(), 20);
|
|
||||||
|
|
||||||
//newdat=1 ==> this is new data, must do the big FFT
|
|
||||||
//nagain=1 ==> decode only at fQSO +/- Tol
|
|
||||||
|
|
||||||
char *to = (char*)mem_m65.data();
|
|
||||||
char *from = (char*) mscom_.d4;
|
|
||||||
int size=sizeof(mscom_);
|
|
||||||
if(mscom_.newdat==0) {
|
|
||||||
int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768;
|
|
||||||
to += noffset;
|
|
||||||
from += noffset;
|
|
||||||
size -= noffset;
|
|
||||||
}
|
|
||||||
memcpy(to, from, qMin(mem_m65.size(), size));
|
|
||||||
mscom_.nagain=0;
|
|
||||||
mscom_.ndiskdat=0;
|
|
||||||
m_call3Modified=false;
|
|
||||||
|
|
||||||
QFile lockFile(m_appDir + "/.lock"); // Allow m65 to start
|
|
||||||
lockFile.remove();
|
|
||||||
|
|
||||||
decodeBusy(true);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::m65_error() //m65_error
|
|
||||||
{
|
|
||||||
if(!m_killAll) {
|
|
||||||
msgBox("Error starting or running\n" + m_appDir + "/m65 -s");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::readFromStderr() //readFromStderr
|
|
||||||
{
|
|
||||||
QByteArray t=proc_m65.readAllStandardError();
|
|
||||||
msgBox(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::readFromStdout() //readFromStdout
|
|
||||||
{
|
|
||||||
while(proc_m65.canReadLine())
|
|
||||||
{
|
|
||||||
QByteArray t=proc_m65.readLine();
|
|
||||||
if(t.indexOf("<m65aFinished>") >= 0) {
|
|
||||||
if(m_widebandDecode) {
|
|
||||||
m_widebandDecode=false;
|
|
||||||
}
|
|
||||||
QFile lockFile(m_appDir + "/.lock");
|
|
||||||
lockFile.open(QIODevice::ReadWrite);
|
|
||||||
ui->DecodeButton->setStyleSheet("");
|
|
||||||
decodeBusy(false);
|
|
||||||
m_jtms3RxLog=0;
|
|
||||||
m_startAnother=m_loopall;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(t.indexOf("!") >= 0) {
|
|
||||||
int n=t.length();
|
|
||||||
if(n>=30) ui->decodedTextBrowser->append(t.mid(1,n-3));
|
|
||||||
if(n<30) ui->decodedTextBrowser->append(t.mid(1,n-3));
|
|
||||||
n=ui->decodedTextBrowser->verticalScrollBar()->maximum();
|
|
||||||
ui->decodedTextBrowser->verticalScrollBar()->setValue(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(t.indexOf("@") >= 0) {
|
|
||||||
// m_messagesText += t.mid(1);
|
|
||||||
m_widebandDecode=true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(t.indexOf("&") >= 0) {
|
|
||||||
QString q(t);
|
|
||||||
QString callsign=q.mid(5);
|
|
||||||
callsign=callsign.mid(0,callsign.indexOf(" "));
|
|
||||||
if(callsign.length()>2) {
|
|
||||||
if(m_worked[callsign]) {
|
|
||||||
q=q.mid(1,4) + " " + q.mid(5);
|
|
||||||
} else {
|
|
||||||
q=q.mid(1,4) + " *" + q.mid(5);
|
|
||||||
}
|
|
||||||
// m_bandmapText += q;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_EraseButton_clicked() //Erase
|
void MainWindow::on_EraseButton_clicked() //Erase
|
||||||
{
|
{
|
||||||
@ -1660,7 +1449,7 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
|||||||
QDateTime t = QDateTime::currentDateTimeUtc();
|
QDateTime t = QDateTime::currentDateTimeUtc();
|
||||||
QString logEntry=t.date().toString("yyyy-MMM-dd,") +
|
QString logEntry=t.date().toString("yyyy-MMM-dd,") +
|
||||||
t.time().toString("hh:mm,") + m_hisCall + "," + m_hisGrid + "," +
|
t.time().toString("hh:mm,") + m_hisCall + "," + m_hisGrid + "," +
|
||||||
QString::number(nMHz) + ",JT65B\n";
|
QString::number(nMHz) + ",JTMSK\n";
|
||||||
QFile f("wsjt.log");
|
QFile f("wsjt.log");
|
||||||
if(!f.open(QFile::Append)) {
|
if(!f.open(QFile::Append)) {
|
||||||
msgBox("Cannot open file \"wsjt.log\".");
|
msgBox("Cannot open file \"wsjt.log\".");
|
||||||
|
@ -34,9 +34,6 @@ public slots:
|
|||||||
void diskDat();
|
void diskDat();
|
||||||
void diskWriteFinished();
|
void diskWriteFinished();
|
||||||
void freezeDecode(int n);
|
void freezeDecode(int n);
|
||||||
void readFromStdout();
|
|
||||||
void readFromStderr();
|
|
||||||
void m65_error();
|
|
||||||
void guiUpdate();
|
void guiUpdate();
|
||||||
void doubleClickOnCall(QString hiscall, bool ctrl);
|
void doubleClickOnCall(QString hiscall, bool ctrl);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user