mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-09-28 08:06:35 -04:00
Test code: starting to implement WSPR-15. Not for general use!
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7418 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
a92f9c3cc1
commit
b0e738b1f2
129
mainwindow.cpp
129
mainwindow.cpp
@ -818,7 +818,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
m_wait=0;
|
m_wait=0;
|
||||||
ui->txrb1->setChecked(true);
|
ui->txrb1->setChecked(true);
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR") and m_pctx>0) {
|
if(m_mode=="WSPR" and m_pctx>0) {
|
||||||
QPalette palette {ui->sbTxPercent->palette ()};
|
QPalette palette {ui->sbTxPercent->palette ()};
|
||||||
palette.setColor(QPalette::Base,Qt::yellow);
|
palette.setColor(QPalette::Base,Qt::yellow);
|
||||||
ui->sbTxPercent->setPalette(palette);
|
ui->sbTxPercent->setPalette(palette);
|
||||||
@ -875,15 +875,12 @@ void MainWindow::on_the_minute ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_config.watchdog () && !m_mode.startsWith ("WSPR"))
|
if (m_config.watchdog () && m_mode!="WSPR") {
|
||||||
{
|
|
||||||
if (m_idleMinutes < m_config.watchdog ()) ++m_idleMinutes;
|
if (m_idleMinutes < m_config.watchdog ()) ++m_idleMinutes;
|
||||||
update_watchdog_label ();
|
update_watchdog_label ();
|
||||||
}
|
} else {
|
||||||
else
|
tx_watchdog (false);
|
||||||
{
|
}
|
||||||
tx_watchdog (false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------- MainWindow destructor
|
//--------------------------------------------------- MainWindow destructor
|
||||||
@ -928,9 +925,9 @@ void MainWindow::writeSettings()
|
|||||||
m_settings->setValue("DTtol",m_DTtol);
|
m_settings->setValue("DTtol",m_DTtol);
|
||||||
m_settings->setValue("FtolIndex",m_FtolIndex);
|
m_settings->setValue("FtolIndex",m_FtolIndex);
|
||||||
m_settings->setValue("MinSync",m_minSync);
|
m_settings->setValue("MinSync",m_minSync);
|
||||||
m_settings->setValue ("AutoSeq", ui->cbAutoSeq->isChecked ());
|
m_settings->setValue("AutoSeq", ui->cbAutoSeq->isChecked ());
|
||||||
m_settings->setValue("ShMsgs",m_bShMsgs);
|
m_settings->setValue("ShMsgs",m_bShMsgs);
|
||||||
m_settings->setValue ("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency));
|
m_settings->setValue("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency));
|
||||||
m_settings->setValue("InGain",m_inGain);
|
m_settings->setValue("InGain",m_inGain);
|
||||||
m_settings->setValue("OutAttenuation", ui->outAttenuation->value ());
|
m_settings->setValue("OutAttenuation", ui->outAttenuation->value ());
|
||||||
m_settings->setValue("NoSuffix",m_noSuffix);
|
m_settings->setValue("NoSuffix",m_noSuffix);
|
||||||
@ -939,13 +936,14 @@ void MainWindow::writeSettings()
|
|||||||
m_settings->setValue("LockTxFreq",m_lockTxFreq);
|
m_settings->setValue("LockTxFreq",m_lockTxFreq);
|
||||||
m_settings->setValue("PctTx",m_pctx);
|
m_settings->setValue("PctTx",m_pctx);
|
||||||
m_settings->setValue("dBm",m_dBm);
|
m_settings->setValue("dBm",m_dBm);
|
||||||
m_settings->setValue ("WSPRPreferType1", ui->WSPR_prefer_type_1_check_box->isChecked ());
|
m_settings->setValue("WSPRPreferType1", ui->WSPR_prefer_type_1_check_box->isChecked ());
|
||||||
|
m_settings->setValue("WSPR15",ui->rbWSPR15->isChecked());
|
||||||
m_settings->setValue("UploadSpots",m_uploadSpots);
|
m_settings->setValue("UploadSpots",m_uploadSpots);
|
||||||
m_settings->setValue ("BandHopping", ui->band_hopping_group_box->isChecked ());
|
m_settings->setValue("BandHopping", ui->band_hopping_group_box->isChecked ());
|
||||||
m_settings->setValue("TRindex",m_TRindex);
|
m_settings->setValue("TRindex",m_TRindex);
|
||||||
m_settings->setValue("FastMode",m_bFastMode);
|
m_settings->setValue("FastMode",m_bFastMode);
|
||||||
m_settings->setValue("Fast9",m_bFast9);
|
m_settings->setValue("Fast9",m_bFast9);
|
||||||
m_settings->setValue ("CQTxfreq", ui->sbCQTxFreq->value ());
|
m_settings->setValue("CQTxfreq", ui->sbCQTxFreq->value ());
|
||||||
m_settings->setValue("pwrBandTxMemory",m_pwrBandTxMemory);
|
m_settings->setValue("pwrBandTxMemory",m_pwrBandTxMemory);
|
||||||
m_settings->setValue("pwrBandTuneMemory",m_pwrBandTuneMemory);
|
m_settings->setValue("pwrBandTuneMemory",m_pwrBandTuneMemory);
|
||||||
m_settings->endGroup();
|
m_settings->endGroup();
|
||||||
@ -1002,6 +1000,7 @@ void MainWindow::readSettings()
|
|||||||
m_pctx=m_settings->value("PctTx",20).toInt();
|
m_pctx=m_settings->value("PctTx",20).toInt();
|
||||||
m_dBm=m_settings->value("dBm",37).toInt();
|
m_dBm=m_settings->value("dBm",37).toInt();
|
||||||
ui->WSPR_prefer_type_1_check_box->setChecked (m_settings->value ("WSPRPreferType1", true).toBool ());
|
ui->WSPR_prefer_type_1_check_box->setChecked (m_settings->value ("WSPRPreferType1", true).toBool ());
|
||||||
|
ui->rbWSPR15->setChecked(m_settings->value("WSPR15",false).toBool());
|
||||||
m_uploadSpots=m_settings->value("UploadSpots",false).toBool();
|
m_uploadSpots=m_settings->value("UploadSpots",false).toBool();
|
||||||
if(!m_uploadSpots) ui->cbUploadWSPR_Spots->setStyleSheet("QCheckBox{background-color: yellow}");
|
if(!m_uploadSpots) ui->cbUploadWSPR_Spots->setStyleSheet("QCheckBox{background-color: yellow}");
|
||||||
ui->band_hopping_group_box->setChecked (m_settings->value ("BandHopping", false).toBool());
|
ui->band_hopping_group_box->setChecked (m_settings->value ("BandHopping", false).toBool());
|
||||||
@ -1049,8 +1048,9 @@ void MainWindow::fixStop()
|
|||||||
m_hsymStop=179;
|
m_hsymStop=179;
|
||||||
if(m_mode=="WSPR") {
|
if(m_mode=="WSPR") {
|
||||||
m_hsymStop=396;
|
m_hsymStop=396;
|
||||||
} else if(m_mode=="WSPR-15") {
|
if(ui->rbWSPR15->isChecked()) {
|
||||||
m_hsymStop=3090;
|
m_hsymStop=3090;
|
||||||
|
}
|
||||||
} else if(m_mode=="Echo") {
|
} else if(m_mode=="Echo") {
|
||||||
m_hsymStop=10;
|
m_hsymStop=10;
|
||||||
} else if (m_mode=="JT4"){
|
} else if (m_mode=="JT4"){
|
||||||
@ -1153,7 +1153,7 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
dec_data.params.nzhsym=m_hsymStop;
|
dec_data.params.nzhsym=m_hsymStop;
|
||||||
QDateTime now {QDateTime::currentDateTimeUtc ()};
|
QDateTime now {QDateTime::currentDateTimeUtc ()};
|
||||||
m_dateTime = now.toString ("yyyy-MMM-dd hh:mm");
|
m_dateTime = now.toString ("yyyy-MMM-dd hh:mm");
|
||||||
if(!m_mode.startsWith ("WSPR")) decode(); //Start decoder
|
if(m_mode!="WSPR") decode(); //Start decoder
|
||||||
|
|
||||||
if(!m_diskData) { //Always save; may delete later
|
if(!m_diskData) { //Always save; may delete later
|
||||||
auto const& period_start = now.addSecs (-(now.time ().minute () % (m_TRperiod / 60)) * 60);
|
auto const& period_start = now.addSecs (-(now.time ().minute () % (m_TRperiod / 60)) * 60);
|
||||||
@ -1164,22 +1164,28 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
m_saveWAVWatcher.setFuture (QtConcurrent::run (std::bind (&MainWindow::save_wave_file,
|
m_saveWAVWatcher.setFuture (QtConcurrent::run (std::bind (&MainWindow::save_wave_file,
|
||||||
this, m_fnameWE, &dec_data.d2[0], m_TRperiod, m_config.my_callsign(),
|
this, m_fnameWE, &dec_data.d2[0], m_TRperiod, m_config.my_callsign(),
|
||||||
m_config.my_grid(), m_mode, m_nSubMode, m_freqNominal, m_hisCall, m_hisGrid)));
|
m_config.my_grid(), m_mode, m_nSubMode, m_freqNominal, m_hisCall, m_hisGrid)));
|
||||||
if (m_mode.startsWith ("WSPR")) {
|
if (m_mode=="WSPR") {
|
||||||
QString c2name_string {m_fnameWE + ".c2"};
|
QString c2name_string {m_fnameWE + ".c2"};
|
||||||
int len1=c2name_string.length();
|
int len1=c2name_string.length();
|
||||||
char c2name[80];
|
char c2name[80];
|
||||||
strcpy(c2name,c2name_string.toLatin1 ().constData ());
|
strcpy(c2name,c2name_string.toLatin1 ().constData ());
|
||||||
int nsec=120;
|
int nsec=120;
|
||||||
int nbfo=1500;
|
double fBFO=1500;
|
||||||
double f0m1500=m_freqNominal/1000000.0 + nbfo - 1500;
|
if(ui->rbWSPR15->isChecked()) {
|
||||||
|
nsec=900;
|
||||||
|
fBFO=1612.5;
|
||||||
|
}
|
||||||
|
double f0m1500=m_freqNominal/1000000.0 + 0.000001*(fBFO - 1500.0);
|
||||||
int err = savec2_(c2name,&nsec,&f0m1500,len1);
|
int err = savec2_(c2name,&nsec,&f0m1500,len1);
|
||||||
if (err!=0) MessageBox::warning_message (this, tr ("Error saving c2 file"), c2name);
|
if (err!=0) MessageBox::warning_message (this, tr ("Error saving c2 file"), c2name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
QString t2,cmnd;
|
QString t2,cmnd;
|
||||||
double f0m1500=m_dialFreqRxWSPR/1000000.0; // + 0.000001*(m_BFO - 1500);
|
double fBFO=1500;
|
||||||
|
if(ui->rbWSPR15->isChecked()) fBFO=1612.5;
|
||||||
|
double f0m1500=m_dialFreqRxWSPR/1000000.0 + 0.000001*(fBFO - 1500);
|
||||||
t2.sprintf(" -f %.6f ",f0m1500);
|
t2.sprintf(" -f %.6f ",f0m1500);
|
||||||
|
|
||||||
if(m_diskData) {
|
if(m_diskData) {
|
||||||
@ -1193,9 +1199,14 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
}
|
}
|
||||||
QString t3=cmnd;
|
QString t3=cmnd;
|
||||||
int i1=cmnd.indexOf("/wsprd ");
|
int i1=cmnd.indexOf("/wsprd ");
|
||||||
cmnd=t3.mid(0,i1+7) + t3.mid(i1+7);
|
if(ui->rbWSPR15->isChecked()) {
|
||||||
|
cmnd=t3.mid(0,i1+7) + "-m " + t3.mid(i1+7);
|
||||||
|
} else {
|
||||||
|
cmnd=t3.mid(0,i1+7) + t3.mid(i1+7);
|
||||||
|
}
|
||||||
if (ui) ui->DecodeButton->setChecked (true);
|
if (ui) ui->DecodeButton->setChecked (true);
|
||||||
m_cmndP1=QDir::toNativeSeparators(cmnd);
|
m_cmndP1=QDir::toNativeSeparators(cmnd);
|
||||||
|
qDebug() << m_cmndP1;
|
||||||
p1Timer.start(1000);
|
p1Timer.start(1000);
|
||||||
m_decoderBusy = true;
|
m_decoderBusy = true;
|
||||||
statusUpdate ();
|
statusUpdate ();
|
||||||
@ -1514,7 +1525,7 @@ void MainWindow::on_autoButton_clicked (bool checked)
|
|||||||
m_nclearave=1;
|
m_nclearave=1;
|
||||||
echocom_.nsum=0;
|
echocom_.nsum=0;
|
||||||
}
|
}
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
QPalette palette {ui->sbTxPercent->palette ()};
|
QPalette palette {ui->sbTxPercent->palette ()};
|
||||||
if(m_auto or m_pctx==0) {
|
if(m_auto or m_pctx==0) {
|
||||||
palette.setColor(QPalette::Base,Qt::white);
|
palette.setColor(QPalette::Base,Qt::white);
|
||||||
@ -1621,7 +1632,7 @@ void MainWindow::bumpFqso(int n) //bumpFqso()
|
|||||||
{
|
{
|
||||||
ui->RxFreqSpinBox->setValue (i);
|
ui->RxFreqSpinBox->setValue (i);
|
||||||
}
|
}
|
||||||
if(ctrl and m_mode.startsWith ("WSPR")) {
|
if(ctrl and m_mode=="WSPR") {
|
||||||
ui->WSPRfreqSpinBox->setValue(i);
|
ui->WSPRfreqSpinBox->setValue(i);
|
||||||
} else {
|
} else {
|
||||||
if(ctrl && ui->TxFreqSpinBox->isEnabled ()) {
|
if(ctrl && ui->TxFreqSpinBox->isEnabled ()) {
|
||||||
@ -1783,7 +1794,7 @@ void MainWindow::setup_status_bar (bool vhf)
|
|||||||
last_tx_label.setText (QString {});
|
last_tx_label.setText (QString {});
|
||||||
if (m_mode.contains (QRegularExpression {R"(^(Echo|ISCAT))"})) {
|
if (m_mode.contains (QRegularExpression {R"(^(Echo|ISCAT))"})) {
|
||||||
if (band_hopping_label.isVisible ()) statusBar ()->removeWidget (&band_hopping_label);
|
if (band_hopping_label.isVisible ()) statusBar ()->removeWidget (&band_hopping_label);
|
||||||
} else if (m_mode.startsWith ("WSPR")) {
|
} else if (m_mode=="WSPR") {
|
||||||
mode_label.setStyleSheet ("QLabel{background-color: #ff66ff}");
|
mode_label.setStyleSheet ("QLabel{background-color: #ff66ff}");
|
||||||
if (!band_hopping_label.isVisible ()) {
|
if (!band_hopping_label.isVisible ()) {
|
||||||
statusBar ()->addWidget (&band_hopping_label);
|
statusBar ()->addWidget (&band_hopping_label);
|
||||||
@ -2126,7 +2137,7 @@ void MainWindow::on_DecodeButton_clicked (bool /* checked */) //Decode request
|
|||||||
if(m_mode=="MSK144") {
|
if(m_mode=="MSK144") {
|
||||||
ui->DecodeButton->setChecked(false);
|
ui->DecodeButton->setChecked(false);
|
||||||
} else {
|
} else {
|
||||||
if(!m_mode.startsWith ("WSPR") && !m_decoderBusy) {
|
if(m_mode!="WSPR" && !m_decoderBusy) {
|
||||||
dec_data.params.newdat=0;
|
dec_data.params.newdat=0;
|
||||||
dec_data.params.nagain=1;
|
dec_data.params.nagain=1;
|
||||||
m_blankLine=false; // don't insert the separator again
|
m_blankLine=false; // don't insert the separator again
|
||||||
@ -2551,7 +2562,7 @@ void MainWindow::killFile ()
|
|||||||
!(m_saveAll || (m_saveDecoded && m_bDecoded) || m_fnameWE == m_fileToSave)) {
|
!(m_saveAll || (m_saveDecoded && m_bDecoded) || m_fnameWE == m_fileToSave)) {
|
||||||
QFile f1 {m_fnameWE + ".wav"};
|
QFile f1 {m_fnameWE + ".wav"};
|
||||||
if(f1.exists()) f1.remove();
|
if(f1.exists()) f1.remove();
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
QFile f2 {m_fnameWE + ".c2"};
|
QFile f2 {m_fnameWE + ".c2"};
|
||||||
if(f2.exists()) f2.remove();
|
if(f2.exists()) f2.remove();
|
||||||
}
|
}
|
||||||
@ -2562,7 +2573,7 @@ void MainWindow::on_EraseButton_clicked() //Erase
|
|||||||
{
|
{
|
||||||
qint64 ms=QDateTime::currentMSecsSinceEpoch();
|
qint64 ms=QDateTime::currentMSecsSinceEpoch();
|
||||||
ui->decodedTextBrowser2->clear();
|
ui->decodedTextBrowser2->clear();
|
||||||
if(m_mode.startsWith ("WSPR") or m_mode=="Echo" or m_mode=="ISCAT") {
|
if(m_mode=="WSPR" or m_mode=="Echo" or m_mode=="ISCAT") {
|
||||||
ui->decodedTextBrowser->clear();
|
ui->decodedTextBrowser->clear();
|
||||||
} else {
|
} else {
|
||||||
m_QSOText.clear();
|
m_QSOText.clear();
|
||||||
@ -2602,7 +2613,13 @@ void MainWindow::guiUpdate()
|
|||||||
if(m_modeTx=="JT9") txDuration=1.0 + 85.0*m_nsps/12000.0; // JT9
|
if(m_modeTx=="JT9") txDuration=1.0 + 85.0*m_nsps/12000.0; // JT9
|
||||||
if(m_modeTx=="JT65") txDuration=1.0 + 126*4096/11025.0; // JT65
|
if(m_modeTx=="JT65") txDuration=1.0 + 126*4096/11025.0; // JT65
|
||||||
if(m_mode=="QRA64") txDuration=1.0 + 84*6912/12000.0; // QRA64
|
if(m_mode=="QRA64") txDuration=1.0 + 84*6912/12000.0; // QRA64
|
||||||
if(m_mode=="WSPR") txDuration=2.0 + 162*8192/12000.0; // WSPR
|
if(m_mode=="WSPR") {
|
||||||
|
txDuration=2.0 + 162*8192/12000.0; // WSPR-2
|
||||||
|
if(ui->rbWSPR15->isChecked()) {
|
||||||
|
m_TRperiod=900;
|
||||||
|
txDuration=2.0 + 162*8*8192/12000.0; //WSPR-15
|
||||||
|
}
|
||||||
|
}
|
||||||
if(m_mode=="ISCAT" or m_mode=="MSK144" or m_bFast9) {
|
if(m_mode=="ISCAT" or m_mode=="MSK144" or m_bFast9) {
|
||||||
txDuration=m_TRperiod-0.25; // ISCAT, JT9-fast, MSK144
|
txDuration=m_TRperiod-0.25; // ISCAT, JT9-fast, MSK144
|
||||||
}
|
}
|
||||||
@ -2612,7 +2629,7 @@ void MainWindow::guiUpdate()
|
|||||||
if((icw[0]>0) and (!m_bFast9)) tx2 += icw[0]*2560.0/48000.0; //Full length including CW ID
|
if((icw[0]>0) and (!m_bFast9)) tx2 += icw[0]*2560.0/48000.0; //Full length including CW ID
|
||||||
if(tx2>m_TRperiod) tx2=m_TRperiod;
|
if(tx2>m_TRperiod) tx2=m_TRperiod;
|
||||||
|
|
||||||
if(!m_txFirst and !m_mode.startsWith ("WSPR")) {
|
if(!m_txFirst and m_mode!="WSPR") {
|
||||||
tx1 += m_TRperiod;
|
tx1 += m_TRperiod;
|
||||||
tx2 += m_TRperiod;
|
tx2 += m_TRperiod;
|
||||||
}
|
}
|
||||||
@ -2633,24 +2650,24 @@ void MainWindow::guiUpdate()
|
|||||||
if(m_transmitting) m_bEchoTxed=true;
|
if(m_transmitting) m_bEchoTxed=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
if(m_nseq==0 and m_ntr==0) { //Decide whether to Tx or Rx
|
if(m_nseq==0 and m_ntr==0) { //Decide whether to Tx or Rx
|
||||||
m_tuneup=false; //This is not an ATU tuneup
|
m_tuneup=false; //This is not an ATU tuneup
|
||||||
if(m_pctx==0) m_WSPR_tx_next = false; //Don't transmit if m_pctx=0
|
if(m_pctx==0) m_WSPR_tx_next = false; //Don't transmit if m_pctx=0
|
||||||
bool btx = m_auto && m_WSPR_tx_next; // To Tx, we need m_auto and
|
bool btx = m_auto && m_WSPR_tx_next; // To Tx, we need m_auto and
|
||||||
// scheduled transmit
|
// scheduled transmit
|
||||||
if(m_auto and m_txNext) btx=true; //TxNext button overrides
|
if(m_auto and m_txNext) btx=true; //TxNext button overrides
|
||||||
if(m_auto and m_pctx==100) btx=true; //Always transmit
|
if(m_auto and m_pctx==100) btx=true; //Always transmit
|
||||||
|
|
||||||
if(btx) {
|
if(btx) {
|
||||||
m_ntr=-1; //This says we will have transmitted
|
m_ntr=-1; //This says we will have transmitted
|
||||||
m_txNext=false;
|
m_txNext=false;
|
||||||
ui->pbTxNext->setChecked(false);
|
ui->pbTxNext->setChecked(false);
|
||||||
m_bTxTime=true; //Start a WSPR Tx sequence
|
m_bTxTime=true; //Start a WSPR Tx sequence
|
||||||
} else {
|
} else {
|
||||||
// This will be a WSPR Rx sequence.
|
// This will be a WSPR Rx sequence.
|
||||||
m_ntr=1; //This says we will have received
|
m_ntr=1; //This says we will have received
|
||||||
m_bTxTime=false; //Start a WSPR Rx sequence
|
m_bTxTime=false; //Start a WSPR Rx sequence
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2670,7 +2687,7 @@ void MainWindow::guiUpdate()
|
|||||||
// Don't transmit another mode in the 30 m WSPR sub-band
|
// Don't transmit another mode in the 30 m WSPR sub-band
|
||||||
Frequency onAirFreq = m_freqNominal + ui->TxFreqSpinBox->value();
|
Frequency onAirFreq = m_freqNominal + ui->TxFreqSpinBox->value();
|
||||||
if ((onAirFreq > 10139900 and onAirFreq < 10140320) and
|
if ((onAirFreq > 10139900 and onAirFreq < 10140320) and
|
||||||
!m_mode.startsWith ("WSPR")) {
|
m_mode!="WSPR") {
|
||||||
m_bTxTime=false;
|
m_bTxTime=false;
|
||||||
// if (m_tune) stop_tuning ();
|
// if (m_tune) stop_tuning ();
|
||||||
if (m_auto) auto_tx_mode (false);
|
if (m_auto) auto_tx_mode (false);
|
||||||
@ -2689,7 +2706,7 @@ void MainWindow::guiUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_config.watchdog() && !m_mode.startsWith ("WSPR")
|
if (m_config.watchdog() && m_mode!="WSPR"
|
||||||
&& m_idleMinutes >= m_config.watchdog ()) {
|
&& m_idleMinutes >= m_config.watchdog ()) {
|
||||||
tx_watchdog (true); // disable transmit
|
tx_watchdog (true); // disable transmit
|
||||||
}
|
}
|
||||||
@ -2708,7 +2725,7 @@ void MainWindow::guiUpdate()
|
|||||||
if(!m_bTxTime and !m_tune) m_btxok=false; //Time to stop transmitting
|
if(!m_bTxTime and !m_tune) m_btxok=false; //Time to stop transmitting
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR") and
|
if(m_mode=="WSPR" and
|
||||||
((m_ntr==1 and m_rxDone) or (m_ntr==-1 and m_nseq>tx2))) {
|
((m_ntr==1 and m_rxDone) or (m_ntr==-1 and m_nseq>tx2))) {
|
||||||
if(m_monitoring) {
|
if(m_monitoring) {
|
||||||
m_rxDone=false;
|
m_rxDone=false;
|
||||||
@ -2729,7 +2746,7 @@ void MainWindow::guiUpdate()
|
|||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
QString sdBm,msg0,msg1,msg2;
|
QString sdBm,msg0,msg1,msg2;
|
||||||
sdBm.sprintf(" %d",m_dBm);
|
sdBm.sprintf(" %d",m_dBm);
|
||||||
m_tx=1-m_tx;
|
m_tx=1-m_tx;
|
||||||
@ -2786,7 +2803,7 @@ void MainWindow::guiUpdate()
|
|||||||
&m_currentMessageType, len1, len1);
|
&m_currentMessageType, len1, len1);
|
||||||
if(m_mode=="QRA64") genqra64_(message, &ichk, msgsent, const_cast<int *> (itone),
|
if(m_mode=="QRA64") genqra64_(message, &ichk, msgsent, const_cast<int *> (itone),
|
||||||
&m_currentMessageType, len1, len1);
|
&m_currentMessageType, len1, len1);
|
||||||
if(m_mode.startsWith ("WSPR")) genwspr_(message, msgsent, const_cast<int *> (itone),
|
if(m_mode=="WSPR") genwspr_(message, msgsent, const_cast<int *> (itone),
|
||||||
len1, len1);
|
len1, len1);
|
||||||
if(m_modeTx=="MSK144") {
|
if(m_modeTx=="MSK144") {
|
||||||
bool bcontest=m_config.contestMode();
|
bool bcontest=m_config.contestMode();
|
||||||
@ -2913,7 +2930,7 @@ void MainWindow::guiUpdate()
|
|||||||
if (g_iptt == 1 && m_iptt0 == 0)
|
if (g_iptt == 1 && m_iptt0 == 0)
|
||||||
{
|
{
|
||||||
auto const& current_message = QString::fromLatin1 (msgsent);
|
auto const& current_message = QString::fromLatin1 (msgsent);
|
||||||
if(m_config.watchdog () && !m_mode.startsWith ("WSPR")
|
if(m_config.watchdog () && m_mode!="WSPR"
|
||||||
&& current_message != m_msgSent0) {
|
&& current_message != m_msgSent0) {
|
||||||
tx_watchdog (false); // in case we are auto sequencing
|
tx_watchdog (false); // in case we are auto sequencing
|
||||||
m_msgSent0 = current_message;
|
m_msgSent0 = current_message;
|
||||||
@ -3059,7 +3076,7 @@ void MainWindow::startTx2()
|
|||||||
ui->signal_meter_widget->setValue(0);
|
ui->signal_meter_widget->setValue(0);
|
||||||
if(m_mode=="Echo" and !m_tune) m_bTransmittedEcho=true;
|
if(m_mode=="Echo" and !m_tune) m_bTransmittedEcho=true;
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR") and !m_tune) {
|
if(m_mode=="WSPR" and !m_tune) {
|
||||||
if (m_config.TX_messages ()) {
|
if (m_config.TX_messages ()) {
|
||||||
t = " Transmitting " + m_mode + " ----------------------- " +
|
t = " Transmitting " + m_mode + " ----------------------- " +
|
||||||
m_config.bands ()->find (m_freqNominal);
|
m_config.bands ()->find (m_freqNominal);
|
||||||
@ -3107,7 +3124,7 @@ void MainWindow::stopTx2()
|
|||||||
on_stopTxButton_clicked ();
|
on_stopTxButton_clicked ();
|
||||||
m_nTx73 = 0;
|
m_nTx73 = 0;
|
||||||
}
|
}
|
||||||
if(m_mode.startsWith ("WSPR") and m_ntr==-1 and !m_tuneup) {
|
if(m_mode=="WSPR" and m_ntr==-1 and !m_tuneup) {
|
||||||
m_wideGraph->setWSPRtransmitted();
|
m_wideGraph->setWSPRtransmitted();
|
||||||
WSPR_scheduling ();
|
WSPR_scheduling ();
|
||||||
m_ntr=0;
|
m_ntr=0;
|
||||||
@ -4131,7 +4148,7 @@ void MainWindow::on_actionJT9_JT65_triggered()
|
|||||||
|
|
||||||
void MainWindow::on_actionJT65_triggered()
|
void MainWindow::on_actionJT65_triggered()
|
||||||
{
|
{
|
||||||
if(m_mode=="JT4" or m_mode.startsWith ("WSPR")) {
|
if(m_mode=="JT4" or m_mode=="WSPR") {
|
||||||
// If coming from JT4 or WSPR mode, pretend temporarily that we're coming
|
// If coming from JT4 or WSPR mode, pretend temporarily that we're coming
|
||||||
// from JT9 and click the pbTxMode button
|
// from JT9 and click the pbTxMode button
|
||||||
m_modeTx="JT9";
|
m_modeTx="JT9";
|
||||||
@ -4566,7 +4583,7 @@ void MainWindow::band_changed (Frequency f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_bandEdited) {
|
if (m_bandEdited) {
|
||||||
if (!m_mode.startsWith ("WSPR")) { // band hopping preserves auto Tx
|
if (m_mode!="WSPR") { // WSPR band hopping preserves auto Tx
|
||||||
if (f + m_wideGraph->nStartFreq () > m_freqNominal + ui->TxFreqSpinBox->value ()
|
if (f + m_wideGraph->nStartFreq () > m_freqNominal + ui->TxFreqSpinBox->value ()
|
||||||
|| f + m_wideGraph->nStartFreq () + m_wideGraph->fSpan () <=
|
|| f + m_wideGraph->nStartFreq () + m_wideGraph->fSpan () <=
|
||||||
m_freqNominal + ui->TxFreqSpinBox->value ()) {
|
m_freqNominal + ui->TxFreqSpinBox->value ()) {
|
||||||
@ -4606,7 +4623,7 @@ void MainWindow::vhfWarning()
|
|||||||
|
|
||||||
void MainWindow::enable_DXCC_entity (bool on)
|
void MainWindow::enable_DXCC_entity (bool on)
|
||||||
{
|
{
|
||||||
if (on and !m_mode.startsWith ("WSPR") and m_mode!="Echo") {
|
if (on and m_mode!="WSPR" and m_mode!="Echo") {
|
||||||
m_logBook.init(); // re-read the log and cty.dat files
|
m_logBook.init(); // re-read the log and cty.dat files
|
||||||
ui->gridLayout->setColumnStretch(0,55); // adjust proportions of text displays
|
ui->gridLayout->setColumnStretch(0,55); // adjust proportions of text displays
|
||||||
ui->gridLayout->setColumnStretch(1,45);
|
ui->gridLayout->setColumnStretch(1,45);
|
||||||
@ -4870,7 +4887,7 @@ void MainWindow::setFreq4(int rxFreq, int txFreq)
|
|||||||
ui->RxFreqSpinBox->setValue(rxFreq);
|
ui->RxFreqSpinBox->setValue(rxFreq);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode.startsWith ("WSPR")) {
|
if(m_mode=="WSPR") {
|
||||||
ui->WSPRfreqSpinBox->setValue(txFreq);
|
ui->WSPRfreqSpinBox->setValue(txFreq);
|
||||||
} else {
|
} else {
|
||||||
if (ui->TxFreqSpinBox->isEnabled ()) {
|
if (ui->TxFreqSpinBox->isEnabled ()) {
|
||||||
@ -4928,7 +4945,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
|
|||||||
|| !(ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()))) {
|
|| !(ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()))) {
|
||||||
m_lastDialFreq = m_freqNominal;
|
m_lastDialFreq = m_freqNominal;
|
||||||
m_secBandChanged=QDateTime::currentMSecsSinceEpoch()/1000;
|
m_secBandChanged=QDateTime::currentMSecsSinceEpoch()/1000;
|
||||||
if(s.frequency () < 30000000u && !m_mode.startsWith ("WSPR")) {
|
if(s.frequency () < 30000000u && m_mode!="WSPR") {
|
||||||
// Write freq changes to ALL.TXT only below 30 MHz.
|
// Write freq changes to ALL.TXT only below 30 MHz.
|
||||||
QFile f2 {m_dataDir.absoluteFilePath ("ALL.TXT")};
|
QFile f2 {m_dataDir.absoluteFilePath ("ALL.TXT")};
|
||||||
if (f2.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
|
if (f2.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
|
||||||
@ -5088,11 +5105,19 @@ void MainWindow::transmit (double snr)
|
|||||||
|
|
||||||
int nToneSpacing=1;
|
int nToneSpacing=1;
|
||||||
if(m_config.x2ToneSpacing()) nToneSpacing=2;
|
if(m_config.x2ToneSpacing()) nToneSpacing=2;
|
||||||
Q_EMIT sendMessage (NUM_WSPR_SYMBOLS, 8192.0,
|
if(ui->rbWSPR15->isChecked()) {
|
||||||
|
Q_EMIT sendMessage (NUM_WSPR_SYMBOLS, 65536.0,
|
||||||
|
ui->TxFreqSpinBox->value() - 1.5*12000.0/65536.0,
|
||||||
|
m_toneSpacing*nToneSpacing/8.0, m_soundOutput,
|
||||||
|
m_config.audio_output_channel(),true, false, snr,
|
||||||
|
m_TRperiod);
|
||||||
|
} else {
|
||||||
|
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,
|
||||||
m_config.audio_output_channel(),true, false, snr,
|
m_config.audio_output_channel(),true, false, snr,
|
||||||
m_TRperiod);
|
m_TRperiod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(m_mode=="Echo") {
|
if(m_mode=="Echo") {
|
||||||
//??? should use "fastMode = true" here ???
|
//??? should use "fastMode = true" here ???
|
||||||
|
@ -2,6 +2,14 @@
|
|||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>MainWindow</class>
|
<class>MainWindow</class>
|
||||||
<widget class="QMainWindow" name="MainWindow">
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>890</width>
|
||||||
|
<height>560</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>WSJT-X by K1JT</string>
|
<string>WSJT-X by K1JT</string>
|
||||||
</property>
|
</property>
|
||||||
@ -1705,6 +1713,48 @@ list. The list can be maintained in Settings (F2).</string>
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>50</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Submode (min)</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QRadioButton" name="rbWSPR2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>17</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>31</width>
|
||||||
|
<height>17</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>2</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton" name="rbWSPR15">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>57</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>41</width>
|
||||||
|
<height>17</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>15</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -1803,6 +1853,19 @@ list. The list can be maintained in Settings (F2).</string>
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@ -2276,6 +2339,14 @@ QPushButton[state="ok"] {
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QMenuBar" name="menuBar">
|
<widget class="QMenuBar" name="menuBar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>890</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>File</string>
|
<string>File</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user