Dynamic update of on DX echo Doppler shift correction

Tnx Bob, KA1GT, and Charlie, G3WDG.
This commit is contained in:
Bill Somerville 2020-09-02 21:25:58 +01:00
parent a623ed0baf
commit c5349f8da9
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F
2 changed files with 41 additions and 46 deletions

View File

@ -42,7 +42,7 @@ Astro::Astro(QSettings * settings, Configuration const * configuration, QWidget
, m_DopplerMethod {0} , m_DopplerMethod {0}
, m_dop {0} , m_dop {0}
, m_dop00 {0} , m_dop00 {0}
, m_dx_two_way_dop {0} //, m_dx_two_way_dop {0}
{ {
ui_->setupUi (this); ui_->setupUi (this);
setWindowTitle (QApplication::applicationName () + " - " + tr ("Astronomical Data")); setWindowTitle (QApplication::applicationName () + " - " + tr ("Astronomical Data"));
@ -77,8 +77,8 @@ void Astro::read_settings ()
case 1: ui_->rbFullTrack->setChecked (true); break; case 1: ui_->rbFullTrack->setChecked (true); break;
case 2: ui_->rbConstFreqOnMoon->setChecked (true); break; case 2: ui_->rbConstFreqOnMoon->setChecked (true); break;
case 3: ui_->rbOwnEcho->setChecked (true); break; case 3: ui_->rbOwnEcho->setChecked (true); break;
case 4: ui_->rbOnDxEcho->setChecked (true); break; case 4: ui_->rbOnDxEcho->setChecked (true); break;
case 5: ui_->rbCallDx->setChecked (true); break; case 5: ui_->rbCallDx->setChecked (true); break;
} }
move (settings_->value ("window/pos", pos ()).toPoint ()); move (settings_->value ("window/pos", pos ()).toPoint ());
} }
@ -168,38 +168,35 @@ auto Astro::astroUpdate(QDateTime const& t, QString const& mygrid, QString const
switch (m_DopplerMethod) switch (m_DopplerMethod)
{ {
case 1: // All Doppler correction done here; DX station stays at nominal dial frequency. case 1: // All Doppler correction done here; DX station stays at nominal dial frequency.
correction.rx = m_dop; correction.rx = m_dop;
break; break;
case 4: // All Doppler correction done here; DX station stays at nominal dial frequency. (Trial for OnDxEcho) case 4: // All Doppler correction done here; DX station stays at nominal dial frequency. (Trial for OnDxEcho)
correction.rx = m_dop; correction.rx = m_dop;
break; break;
//case 5: // All Doppler correction done here; DX station stays at nominal dial frequency. //case 5: // All Doppler correction done here; DX station stays at nominal dial frequency.
case 3: // Both stations do full correction on Rx and none on Tx case 3: // Both stations do full correction on Rx and none on Tx
//correction.rx = dx_is_self ? m_dop00 : m_dop; //correction.rx = dx_is_self ? m_dop00 : m_dop;
correction.rx = m_dop00; // Now always sets RX to *own* echo freq correction.rx = m_dop00; // Now always sets RX to *own* echo freq
break; break;
case 2: case 2:
// Doppler correction to constant frequency on Moon // Doppler correction to constant frequency on Moon
correction.rx = m_dop00 / 2; correction.rx = m_dop00 / 2;
break; break;
} }
switch (m_DopplerMethod) switch (m_DopplerMethod)
{ {
case 1: correction.tx = -correction.rx; case 1: correction.tx = -correction.rx;
break; break;
case 2: correction.tx = -correction.rx; case 2: correction.tx = -correction.rx;
break; break;
case 3: correction.tx = 0; case 3: correction.tx = 0;
break; break;
case 4: // correction.tx = m_dop - m_dop00; case 4: // correction.tx = m_dop - m_dop00;
correction.tx = (2 * (m_dop - (m_dop00/2))) - m_dop;
correction.tx = m_dx_two_way_dop - m_dop; //qDebug () << "correction.tx:" << correction.tx;
qDebug () << "correction.tx:" << correction.tx; break;
break; case 5: correction.tx = - m_dop00;
case 5: correction.tx = - m_dop00; break;
break;
} }
//if (3 != m_DopplerMethod || 4 != m_DopplerMethod) correction.tx = -correction.rx; //if (3 != m_DopplerMethod || 4 != m_DopplerMethod) correction.tx = -correction.rx;
@ -242,22 +239,20 @@ auto Astro::astroUpdate(QDateTime const& t, QString const& mygrid, QString const
case 2: case 2:
// Doppler correction to constant frequency on Moon // Doppler correction to constant frequency on Moon
offset = m_dop00 / 2; offset = m_dop00 / 2;
break; break;
case 4: case 4:
// Doppler correction for OnDxEcho // Doppler correction for OnDxEcho
offset = m_dop - m_dx_two_way_dop; offset = m_dop - (2 * (m_dop - (m_dop00/2)));
break;
//case 5: correction.tx = - m_dop00;
case 5: offset = m_dop00;// version for _7
break; break;
//case 5: correction.tx = - m_dop00;
case 5: offset = m_dop00;// version for _7
break;
} }
correction.tx = -offset; correction.tx = -offset;
qDebug () << "correction.tx (no tx qsy):" << correction.tx; //qDebug () << "correction.tx (no tx qsy):" << correction.tx;
} }
} }
return correction; return correction;
@ -281,14 +276,14 @@ void Astro::on_rbFullTrack_clicked()
Q_EMIT tracking_update (); Q_EMIT tracking_update ();
} }
void Astro::on_rbOnDxEcho_clicked(bool checked) void Astro::on_rbOnDxEcho_clicked() //on_rbOnDxEcho_clicked(bool checked)
{ {
m_DopplerMethod = 4; m_DopplerMethod = 4;
check_split (); check_split ();
if (checked) { //if (checked) {
m_dx_two_way_dop = 2 * (m_dop - (m_dop00/2)); // m_dx_two_way_dop = 2 * (m_dop - (m_dop00/2));
qDebug () << "Starting Doppler:" << m_dx_two_way_dop; // qDebug () << "Starting Doppler:" << m_dx_two_way_dop;
} //}
Q_EMIT tracking_update (); Q_EMIT tracking_update ();
} }

View File

@ -59,7 +59,7 @@ private slots:
void on_rbFullTrack_clicked(); void on_rbFullTrack_clicked();
void on_rbOwnEcho_clicked(); void on_rbOwnEcho_clicked();
void on_rbNoDoppler_clicked(); void on_rbNoDoppler_clicked();
void on_rbOnDxEcho_clicked(bool); void on_rbOnDxEcho_clicked();
void on_rbCallDx_clicked(); void on_rbCallDx_clicked();
void on_cbDopplerTracking_toggled(bool); void on_cbDopplerTracking_toggled(bool);
@ -75,7 +75,7 @@ private:
qint32 m_DopplerMethod; qint32 m_DopplerMethod;
int m_dop; int m_dop;
int m_dop00; int m_dop00;
int m_dx_two_way_dop; //int m_dx_two_way_dop;
}; };
inline inline