mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 20:28:42 -05:00
Implement optional x4 tone spacing for FT8, JT9, WSPR. Also some code cleanup.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8447 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
c470611cc9
commit
ec644ae5f6
@ -446,6 +446,8 @@ private:
|
|||||||
Q_SLOT void on_pbNewCall_clicked();
|
Q_SLOT void on_pbNewCall_clicked();
|
||||||
Q_SLOT void on_cbFox_clicked (bool);
|
Q_SLOT void on_cbFox_clicked (bool);
|
||||||
Q_SLOT void on_cbHound_clicked (bool);
|
Q_SLOT void on_cbHound_clicked (bool);
|
||||||
|
Q_SLOT void on_cbx2ToneSpacing_clicked(bool);
|
||||||
|
Q_SLOT void on_cbx4ToneSpacing_clicked(bool);
|
||||||
|
|
||||||
// typenames used as arguments must match registered type names :(
|
// typenames used as arguments must match registered type names :(
|
||||||
Q_SIGNAL void start_transceiver (unsigned seqeunce_number) const;
|
Q_SIGNAL void start_transceiver (unsigned seqeunce_number) const;
|
||||||
@ -566,7 +568,7 @@ private:
|
|||||||
bool bFox_;
|
bool bFox_;
|
||||||
bool bHound_;
|
bool bHound_;
|
||||||
bool x2ToneSpacing_;
|
bool x2ToneSpacing_;
|
||||||
bool realTimeDecode_;
|
bool x4ToneSpacing_;
|
||||||
QString opCall_;
|
QString opCall_;
|
||||||
QString udp_server_name_;
|
QString udp_server_name_;
|
||||||
port_type udp_server_port_;
|
port_type udp_server_port_;
|
||||||
@ -667,7 +669,7 @@ bool Configuration::twoPass() const {return m_->twoPass_;}
|
|||||||
bool Configuration::bFox() const {return m_->bFox_;}
|
bool Configuration::bFox() const {return m_->bFox_;}
|
||||||
bool Configuration::bHound() const {return m_->bHound_;}
|
bool Configuration::bHound() const {return m_->bHound_;}
|
||||||
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
|
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
|
||||||
bool Configuration::realTimeDecode() const {return m_->realTimeDecode_;}
|
bool Configuration::x4ToneSpacing() const {return m_->x4ToneSpacing_;}
|
||||||
bool Configuration::split_mode () const {return m_->split_mode ();}
|
bool Configuration::split_mode () const {return m_->split_mode ();}
|
||||||
QString Configuration::opCall() const {return m_->opCall_;}
|
QString Configuration::opCall() const {return m_->opCall_;}
|
||||||
QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
|
QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
|
||||||
@ -1138,8 +1140,7 @@ void Configuration::impl::initialize_models ()
|
|||||||
ui_->cbFox->setChecked(bFox_);
|
ui_->cbFox->setChecked(bFox_);
|
||||||
ui_->cbHound->setChecked(bHound_);
|
ui_->cbHound->setChecked(bHound_);
|
||||||
ui_->cbx2ToneSpacing->setChecked(x2ToneSpacing_);
|
ui_->cbx2ToneSpacing->setChecked(x2ToneSpacing_);
|
||||||
ui_->cbRealTime->setChecked(realTimeDecode_);
|
ui_->cbx4ToneSpacing->setChecked(x4ToneSpacing_);
|
||||||
ui_->cbRealTime->setVisible(false); //Tempoary -- probably will remove this control
|
|
||||||
ui_->type_2_msg_gen_combo_box->setCurrentIndex (type_2_msg_gen_);
|
ui_->type_2_msg_gen_combo_box->setCurrentIndex (type_2_msg_gen_);
|
||||||
ui_->rig_combo_box->setCurrentText (rig_params_.rig_name);
|
ui_->rig_combo_box->setCurrentText (rig_params_.rig_name);
|
||||||
ui_->TX_mode_button_group->button (data_mode_)->setChecked (true);
|
ui_->TX_mode_button_group->button (data_mode_)->setChecked (true);
|
||||||
@ -1375,7 +1376,7 @@ void Configuration::impl::read_settings ()
|
|||||||
bFox_ = settings_->value("Fox",false).toBool ();
|
bFox_ = settings_->value("Fox",false).toBool ();
|
||||||
bHound_ = settings_->value("Hound",false).toBool ();
|
bHound_ = settings_->value("Hound",false).toBool ();
|
||||||
x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool ();
|
x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool ();
|
||||||
realTimeDecode_ = settings_->value("RealTimeDecode",false).toBool ();
|
x4ToneSpacing_ = settings_->value("x4ToneSpacing",false).toBool ();
|
||||||
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
|
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
|
||||||
rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> ();
|
rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> ();
|
||||||
opCall_ = settings_->value ("OpCall", "").toString ();
|
opCall_ = settings_->value ("OpCall", "").toString ();
|
||||||
@ -1480,7 +1481,7 @@ void Configuration::impl::write_settings ()
|
|||||||
settings_->setValue ("Fox", bFox_);
|
settings_->setValue ("Fox", bFox_);
|
||||||
settings_->setValue ("Hound", bHound_);
|
settings_->setValue ("Hound", bHound_);
|
||||||
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
|
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
|
||||||
settings_->setValue ("RealTimeDecode", realTimeDecode_);
|
settings_->setValue ("x4ToneSpacing", x4ToneSpacing_);
|
||||||
settings_->setValue ("OpCall", opCall_);
|
settings_->setValue ("OpCall", opCall_);
|
||||||
settings_->setValue ("UDPServer", udp_server_name_);
|
settings_->setValue ("UDPServer", udp_server_name_);
|
||||||
settings_->setValue ("UDPServerPort", udp_server_port_);
|
settings_->setValue ("UDPServerPort", udp_server_port_);
|
||||||
@ -1882,7 +1883,7 @@ void Configuration::impl::accept ()
|
|||||||
bFox_ = ui_->cbFox->isChecked ();
|
bFox_ = ui_->cbFox->isChecked ();
|
||||||
bHound_ = ui_->cbHound->isChecked ();
|
bHound_ = ui_->cbHound->isChecked ();
|
||||||
x2ToneSpacing_ = ui_->cbx2ToneSpacing->isChecked ();
|
x2ToneSpacing_ = ui_->cbx2ToneSpacing->isChecked ();
|
||||||
realTimeDecode_ = ui_->cbRealTime->isChecked ();
|
x4ToneSpacing_ = ui_->cbx4ToneSpacing->isChecked ();
|
||||||
calibration_.intercept = ui_->calibration_intercept_spin_box->value ();
|
calibration_.intercept = ui_->calibration_intercept_spin_box->value ();
|
||||||
calibration_.slope_ppm = ui_->calibration_slope_ppm_spin_box->value ();
|
calibration_.slope_ppm = ui_->calibration_slope_ppm_spin_box->value ();
|
||||||
pwrBandTxMemory_ = ui_->checkBoxPwrBandTxMemory->isChecked ();
|
pwrBandTxMemory_ = ui_->checkBoxPwrBandTxMemory->isChecked ();
|
||||||
@ -2360,18 +2361,22 @@ void Configuration::impl::on_calibration_slope_ppm_spin_box_valueChanged (double
|
|||||||
|
|
||||||
void Configuration::impl::on_cbFox_clicked (bool checked)
|
void Configuration::impl::on_cbFox_clicked (bool checked)
|
||||||
{
|
{
|
||||||
if (checked)
|
if (checked) ui_->cbHound->setChecked (false);
|
||||||
{
|
|
||||||
ui_->cbHound->setChecked (false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Configuration::impl::on_cbHound_clicked (bool checked)
|
void Configuration::impl::on_cbHound_clicked (bool checked)
|
||||||
{
|
{
|
||||||
if (checked)
|
if (checked) ui_->cbFox->setChecked (false);
|
||||||
{
|
}
|
||||||
ui_->cbFox->setChecked (false);
|
|
||||||
}
|
void Configuration::impl::on_cbx2ToneSpacing_clicked(bool b)
|
||||||
|
{
|
||||||
|
if(b) ui_->cbx4ToneSpacing->setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Configuration::impl::on_cbx4ToneSpacing_clicked(bool b)
|
||||||
|
{
|
||||||
|
if(b) ui_->cbx2ToneSpacing->setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Configuration::impl::have_rig ()
|
bool Configuration::impl::have_rig ()
|
||||||
|
@ -129,8 +129,8 @@ public:
|
|||||||
bool bFox() const;
|
bool bFox() const;
|
||||||
bool bHound() const;
|
bool bHound() const;
|
||||||
bool x2ToneSpacing() const;
|
bool x2ToneSpacing() const;
|
||||||
|
bool x4ToneSpacing() const;
|
||||||
bool contestMode() const;
|
bool contestMode() const;
|
||||||
bool realTimeDecode() const;
|
|
||||||
bool MyDx() const;
|
bool MyDx() const;
|
||||||
bool CQMyN() const;
|
bool CQMyN() const;
|
||||||
bool NDxG() const;
|
bool NDxG() const;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>534</width>
|
<width>534</width>
|
||||||
<height>507</height>
|
<height>530</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -2439,15 +2439,15 @@ Right click for insert and delete options.</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QCheckBox" name="cbRealTime">
|
<widget class="QCheckBox" name="cbx4ToneSpacing">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Decode on-the-fly rather than at end of Rx sequence.</p></body></html></string>
|
<string><html><head/><body><p>Decode on-the-fly rather than at end of Rx sequence.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>MSK144 Realtime decode</string>
|
<string>x 4 Tone Spacing</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -2683,7 +2683,7 @@ soundcard changes</string>
|
|||||||
<tabstop>sbBandwidth</tabstop>
|
<tabstop>sbBandwidth</tabstop>
|
||||||
<tabstop>sbTxDelay</tabstop>
|
<tabstop>sbTxDelay</tabstop>
|
||||||
<tabstop>cbx2ToneSpacing</tabstop>
|
<tabstop>cbx2ToneSpacing</tabstop>
|
||||||
<tabstop>cbRealTime</tabstop>
|
<tabstop>cbx4ToneSpacing</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
@ -2753,12 +2753,12 @@ soundcard changes</string>
|
|||||||
</connection>
|
</connection>
|
||||||
</connections>
|
</connections>
|
||||||
<buttongroups>
|
<buttongroups>
|
||||||
<buttongroup name="split_mode_button_group"/>
|
<buttongroup name="CAT_data_bits_button_group"/>
|
||||||
<buttongroup name="PTT_method_button_group"/>
|
<buttongroup name="PTT_method_button_group"/>
|
||||||
<buttongroup name="TX_audio_source_button_group"/>
|
<buttongroup name="TX_audio_source_button_group"/>
|
||||||
<buttongroup name="CAT_handshake_button_group"/>
|
<buttongroup name="split_mode_button_group"/>
|
||||||
<buttongroup name="CAT_data_bits_button_group"/>
|
|
||||||
<buttongroup name="CAT_stop_bits_button_group"/>
|
<buttongroup name="CAT_stop_bits_button_group"/>
|
||||||
|
<buttongroup name="CAT_handshake_button_group"/>
|
||||||
<buttongroup name="TX_mode_button_group"/>
|
<buttongroup name="TX_mode_button_group"/>
|
||||||
</buttongroups>
|
</buttongroups>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -1522,7 +1522,6 @@ void MainWindow::fastSink(qint64 frames)
|
|||||||
m_k0=k;
|
m_k0=k;
|
||||||
if(m_diskData and m_k0 >= dec_data.params.kin - 7 * 512) decodeNow=true;
|
if(m_diskData and m_k0 >= dec_data.params.kin - 7 * 512) decodeNow=true;
|
||||||
if(!m_diskData and m_tRemaining<0.35 and !m_bFastDecodeCalled) decodeNow=true;
|
if(!m_diskData and m_tRemaining<0.35 and !m_bFastDecodeCalled) decodeNow=true;
|
||||||
// if(m_mode=="MSK144" and m_config.realTimeDecode()) decodeNow=false;
|
|
||||||
if(m_mode=="MSK144") decodeNow=false;
|
if(m_mode=="MSK144") decodeNow=false;
|
||||||
|
|
||||||
if(decodeNow) {
|
if(decodeNow) {
|
||||||
@ -2682,7 +2681,6 @@ void MainWindow::decode() //decode()
|
|||||||
if(m_nPick > 0) {
|
if(m_nPick > 0) {
|
||||||
t0=m_t0Pick;
|
t0=m_t0Pick;
|
||||||
t1=m_t1Pick;
|
t1=m_t1Pick;
|
||||||
// if(t1 > m_kdone/12000.0 and !m_config.realTimeDecode()) t1=m_kdone/12000.0;
|
|
||||||
}
|
}
|
||||||
static short int d2b[360000];
|
static short int d2b[360000];
|
||||||
narg[0]=dec_data.params.nutc;
|
narg[0]=dec_data.params.nutc;
|
||||||
@ -2803,7 +2801,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
if(m_mode=="FT8" and !m_config.bHound() and t.contains(";")) {
|
if(m_mode=="FT8" and !m_config.bHound() and t.contains(";")) {
|
||||||
QString errorMsg;
|
QString errorMsg;
|
||||||
MessageBox::critical_message (this,
|
MessageBox::critical_message (this,
|
||||||
tr("Should you be in FT8 DXpedition mode?"), errorMsg);
|
tr("Should you be in \"FT8 DXpedition Hound\" mode?"), errorMsg);
|
||||||
}
|
}
|
||||||
// qint64 ms=QDateTime::currentMSecsSinceEpoch() - m_msec0;
|
// qint64 ms=QDateTime::currentMSecsSinceEpoch() - m_msec0;
|
||||||
bool bAvgMsg=false;
|
bool bAvgMsg=false;
|
||||||
@ -3601,7 +3599,6 @@ void MainWindow::guiUpdate()
|
|||||||
tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}");
|
tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}");
|
||||||
QString t;
|
QString t;
|
||||||
t="Receiving";
|
t="Receiving";
|
||||||
// if(m_mode=="MSK144" and m_config.realTimeDecode()) {
|
|
||||||
if(m_mode=="MSK144") {
|
if(m_mode=="MSK144") {
|
||||||
int npct=int(100.0*m_fCPUmskrtd/0.298667);
|
int npct=int(100.0*m_fCPUmskrtd/0.298667);
|
||||||
if(npct>90) tx_status_label.setStyleSheet("QLabel{background-color: #ff0000}");
|
if(npct>90) tx_status_label.setStyleSheet("QLabel{background-color: #ff0000}");
|
||||||
@ -6082,6 +6079,7 @@ void MainWindow::transmit (double snr)
|
|||||||
if (m_modeTx == "FT8") {
|
if (m_modeTx == "FT8") {
|
||||||
toneSpacing=12000.0/1920.0;
|
toneSpacing=12000.0/1920.0;
|
||||||
if(m_config.x2ToneSpacing()) toneSpacing=2*12000.0/1920.0;
|
if(m_config.x2ToneSpacing()) toneSpacing=2*12000.0/1920.0;
|
||||||
|
if(m_config.x4ToneSpacing()) toneSpacing=4*12000.0/1920.0;
|
||||||
if(m_config.bFox() and !m_tune) toneSpacing=-1;
|
if(m_config.bFox() and !m_tune) toneSpacing=-1;
|
||||||
Q_EMIT sendMessage (NUM_FT8_SYMBOLS,
|
Q_EMIT sendMessage (NUM_FT8_SYMBOLS,
|
||||||
1920.0, ui->TxFreqSpinBox->value () - m_XIT,
|
1920.0, ui->TxFreqSpinBox->value () - m_XIT,
|
||||||
@ -6107,6 +6105,7 @@ void MainWindow::transmit (double snr)
|
|||||||
double sps=m_nsps;
|
double sps=m_nsps;
|
||||||
m_toneSpacing=nsub*12000.0/6912.0;
|
m_toneSpacing=nsub*12000.0/6912.0;
|
||||||
if(m_config.x2ToneSpacing()) m_toneSpacing=2.0*m_toneSpacing;
|
if(m_config.x2ToneSpacing()) m_toneSpacing=2.0*m_toneSpacing;
|
||||||
|
if(m_config.x4ToneSpacing()) m_toneSpacing=4.0*m_toneSpacing;
|
||||||
bool fastmode=false;
|
bool fastmode=false;
|
||||||
if(m_bFast9 and (m_nSubMode>=4)) {
|
if(m_bFast9 and (m_nSubMode>=4)) {
|
||||||
fastmode=true;
|
fastmode=true;
|
||||||
@ -6153,6 +6152,7 @@ void MainWindow::transmit (double snr)
|
|||||||
if (m_mode=="WSPR") {
|
if (m_mode=="WSPR") {
|
||||||
int nToneSpacing=1;
|
int nToneSpacing=1;
|
||||||
if(m_config.x2ToneSpacing()) nToneSpacing=2;
|
if(m_config.x2ToneSpacing()) nToneSpacing=2;
|
||||||
|
if(m_config.x4ToneSpacing()) nToneSpacing=4;
|
||||||
Q_EMIT sendMessage (NUM_WSPR_SYMBOLS, 8192.0,
|
Q_EMIT sendMessage (NUM_WSPR_SYMBOLS, 8192.0,
|
||||||
ui->TxFreqSpinBox->value() - 1.5 * 12000 / 8192,
|
ui->TxFreqSpinBox->value() - 1.5 * 12000 / 8192,
|
||||||
m_toneSpacing*nToneSpacing, m_soundOutput,
|
m_toneSpacing*nToneSpacing, m_soundOutput,
|
||||||
@ -7425,8 +7425,8 @@ void MainWindow::foxTxSequencer()
|
|||||||
m_hisGrid=m_foxQSO[hc1].grid;
|
m_hisGrid=m_foxQSO[hc1].grid;
|
||||||
m_rptSent=m_foxQSO[hc1].sent;
|
m_rptSent=m_foxQSO[hc1].sent;
|
||||||
m_rptRcvd=m_foxQSO[hc1].rcvd;
|
m_rptRcvd=m_foxQSO[hc1].rcvd;
|
||||||
qDebug() << "Fox Logged :" << islot << m_hisCall << m_hisGrid << m_rptSent
|
// qDebug() << "Fox Logged :" << islot << m_hisCall << m_hisGrid << m_rptSent
|
||||||
<< m_rptRcvd << m_lastBand;
|
// << m_rptRcvd << m_lastBand;
|
||||||
QDateTime logTime {QDateTime::currentDateTimeUtc ()};
|
QDateTime logTime {QDateTime::currentDateTimeUtc ()};
|
||||||
QString logLine=logTime.toString("yyyy-MM-dd hh:mm") + " " + m_hisCall +
|
QString logLine=logTime.toString("yyyy-MM-dd hh:mm") + " " + m_hisCall +
|
||||||
" " + m_hisGrid + " " + m_rptSent + " " + m_rptRcvd + " " + m_lastBand;
|
" " + m_hisGrid + " " + m_rptSent + " " + m_rptRcvd + " " + m_lastBand;
|
||||||
@ -7439,27 +7439,19 @@ void MainWindow::foxTxSequencer()
|
|||||||
if(m_foxQSOqueue.contains(hc1)) m_foxQSOqueue.removeOne(hc1);
|
if(m_foxQSOqueue.contains(hc1)) m_foxQSOqueue.removeOne(hc1);
|
||||||
|
|
||||||
islot++;
|
islot++;
|
||||||
//Generate tx waveform
|
foxGenWaveform(islot-1,fm); //Generate tx waveform
|
||||||
foxGenWaveform(islot-1,fm);
|
|
||||||
if(islot >= m_Nslots) goto Transmit;
|
if(islot >= m_Nslots) goto Transmit;
|
||||||
}
|
}
|
||||||
|
|
||||||
//One or more Tx slots are still available, repeat call to a Hound in the QSOqueue
|
//One or more Tx slots are still available, repeat call to a Hound in the QSOqueue
|
||||||
while (!m_foxQSOqueue.isEmpty()) {
|
while (!m_foxQSOqueue.isEmpty()) {
|
||||||
//should limit repeat transmissions here
|
//should limit repeat transmissions here ?
|
||||||
hc1=m_foxQSOqueue.dequeue(); //Recover hound callsign from QSO queue
|
hc1=m_foxQSOqueue.dequeue(); //Recover hound callsign from QSO queue
|
||||||
m_foxQSOqueue.enqueue(hc1); //Put him back in, at the end
|
m_foxQSOqueue.enqueue(hc1); //Put him back in, at the end
|
||||||
fm = hc1 + " " + m_baseCall + " " + m_foxQSO[hc1].sent; //Tx msg
|
fm = hc1 + " " + m_baseCall + " " + m_foxQSO[hc1].sent; //Tx msg
|
||||||
/*
|
|
||||||
if(now-m_fullFoxCallTime > 300) {
|
|
||||||
fm = hc1 + " " + m_config.my_callsign(); //Tx msg
|
|
||||||
m_fullFoxCallTime=now;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if(islot>0 and fm==m_fm0) break; //Suppress duplicate Fox signals
|
if(islot>0 and fm==m_fm0) break; //Suppress duplicate Fox signals
|
||||||
islot++;
|
islot++;
|
||||||
//Generate tx waveform
|
foxGenWaveform(islot-1,fm); //Generate tx waveform
|
||||||
foxGenWaveform(islot-1,fm);
|
|
||||||
m_fm0=fm;
|
m_fm0=fm;
|
||||||
if(islot >= m_Nslots) goto Transmit;
|
if(islot >= m_Nslots) goto Transmit;
|
||||||
}
|
}
|
||||||
@ -7475,15 +7467,8 @@ void MainWindow::foxTxSequencer()
|
|||||||
m_foxQSO[hc1].t0=now; //QSO start time
|
m_foxQSO[hc1].t0=now; //QSO start time
|
||||||
rm_tb4(hc1); //Remove this hound from tb4
|
rm_tb4(hc1); //Remove this hound from tb4
|
||||||
fm = hc1 + " " + m_baseCall + " " + rpt; //Tx msg
|
fm = hc1 + " " + m_baseCall + " " + rpt; //Tx msg
|
||||||
/*
|
|
||||||
if(now-m_fullFoxCallTime > 300) {
|
|
||||||
fm = hc1 + " " + m_config.my_callsign(); //Tx msg
|
|
||||||
m_fullFoxCallTime=now;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
islot++;
|
islot++;
|
||||||
//Generate tx waveform
|
foxGenWaveform(islot-1,fm); //Generate tx waveform
|
||||||
foxGenWaveform(islot-1,fm);
|
|
||||||
if(islot >= m_Nslots) goto Transmit;
|
if(islot >= m_Nslots) goto Transmit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user