Rather than stepping through I added a few qDebugs.it's hard to follow
return paths from signals and figure out what's going on.
Bill..you were correct..order is being preserved.but these darn computers do
what you ask them to do J
I think I've found the problem.
Inside guiUpdate it is calling WSPR_scheduling at 53 seconds with m_ntr = -1
if(m_ntr) {
WSPR_scheduling ();
m_ntr=0; //This WSPR Rx sequence is
complete
}
Then, WSPR_scheduling is called again in stopTx2()
So the 1st one tries to change the freq before ptt=false is done and
scheduling gets called twice.
With this small change it seems to behave properly.
if(m_ntr) {
qDebug() << "m_ntr WSPR_scheduling m_ntr=" << m_ntr;
if (m_ntr==1) { // only if we're in rx mode
WSPR_scheduling ();
}
m_ntr=0; //This WSPR Rx sequence is
complete
}
The effect of this appears that after the transmit period you will receive
on the same band. Doesn't sound like a bad idea to me but I'm not a WSPR
expert.
73
Mike W9MDB
From: Bill Somerville [mailto:g4...@classdesign.com]
Sent: Thursday, July 09, 2015 3:30 PM
To: wsjt-devel@lists.sourceforge.net
Subject: Re: [wsjt-devel] r5700
On 09/07/2015 19:08, Michael Black wrote:
Hi Mike,
Try this.in mainwindow.cpp replace stopTx2() with the following. It defers
the frequency change for 2 seconds which is probably too long but succeeds
in moving ptt=0 in front of the frequency change.
If you follow the code from MainWindow::WSPR_scheduling() through
MainWindow::on_bandComboBox_activated() -> MainWindow::band_changed() you
will see the line:
Q_EMIT m_config.transceiver_frequency (f);
this just like the line:
Q_EMIT m_config.transceiver_ptt (false); //Lower PTT
is queuing a Qt signal which eventually crosses the thread boundary to the
transceiver control thread. These signals are processed strictly in the
order they are queued. So your assumption that the above lines are processed
in the wrong order is incorrect.
73
Mike W9MDB
73
Bill
G4WJS.
void MainWindow::stopTx2a()
{
WSPR_scheduling ();
}
void MainWindow::stopTx2()
{
Q_EMIT m_config.transceiver_ptt (false); //Lower PTT
if (m_mode.mid(0,4)!="WSPR" and m_mode!="Echo" and m_config.watchdog() and
m_repeatMsg>=m_watchdogLimit-1) {
on_stopTxButton_clicked();
msgBox("Runaway Tx watchdog");
m_repeatMsg=0;
}
// we let ptt signal process first by doing the timer here
qDebug() << "stopTx2a";
if(m_mode.mid(0,4)=="WSPR" and m_ntr==-1 and !m_tuneup) {
m_wideGraph->setWSPRtransmitted();
// WSPR_scheduling (); // let the timer do this
QTimer::singleShot(2000,this,SLOT(stopTx2a()));
m_ntr=0;
}
}
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel