mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-22 12:08:43 -04:00
merge
This commit is contained in:
commit
764c64a829
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
|
||||
|
||||
include (set_build_type)
|
||||
# RC 0 or omitted is a development build, GA is a General Availability release build
|
||||
set_build_type (RC 6)
|
||||
set_build_type (RC 7)
|
||||
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
||||
|
||||
#
|
||||
|
@ -21,6 +21,7 @@ FT8 11101000010011100001000010011000100000
|
||||
FT8/VHF 11101000010011100001000010011000100000
|
||||
FT8/Fox 11101000010011100001000000000010000000
|
||||
FT8/Hound 11101000010011100001000000000011000000
|
||||
FT8/SupHou 11111000010011100001000000000011000000
|
||||
-------------------------------------------------
|
||||
1 2 3
|
||||
01234567890123456789012345678901234567
|
||||
|
@ -53,6 +53,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
||||
character(len=12) :: mycall, hiscall
|
||||
character(len=6) :: mygrid, hisgrid
|
||||
character*60 line
|
||||
character*256 cmnd,cmndmsg
|
||||
character*6 crxfreq,cftol
|
||||
data ndec8/0/,ntr0/-1/
|
||||
save
|
||||
type(counting_jt4_decoder) :: my_jt4
|
||||
@ -146,7 +148,12 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
||||
access='stream')
|
||||
write(47) params%yymmdd,params%nutc,id2(1:20),id2(1:180000)
|
||||
close(47)
|
||||
call execute_command_line(trim(exe_dir)//'/sfrx OTP '//'"'//trim(temp_dir)//'/fort.47"')
|
||||
write(crxfreq,'(i6)') params%nfqso
|
||||
write(cftol,'(i5)') params%ntol
|
||||
cmnd=trim(exe_dir)//'/sfrx'//crxfreq//cftol// 'OTP "' // &
|
||||
trim(temp_dir)//'/fort.47"'
|
||||
call execute_command_line(trim(cmnd),exitstat=nexitstat, &
|
||||
cmdstat=ncmdstat,cmdmsg=cmndmsg)
|
||||
else
|
||||
call timer('decft8 ',0)
|
||||
newdat=params%newdat
|
||||
|
@ -26,8 +26,8 @@ program ft4code
|
||||
'LDPC(174,91) encoding,'
|
||||
print*,'bit and symbol ordering, and other details of the FT4 protocol.'
|
||||
print*
|
||||
print*,'Usage: ft4code [-c grid] "message" # Results for specified message'
|
||||
print*,' ft4code -t # Examples of all message types'
|
||||
print*,'Usage: ft4code "message" # Results for specified message'
|
||||
print*,' ft4code -t # Examples of all message types'
|
||||
go to 999
|
||||
endif
|
||||
|
||||
|
@ -23,9 +23,9 @@ program ft8code
|
||||
'LDPC(174,91) encoding,'
|
||||
print*,'bit and symbol ordering, and other details of the FT8 protocol.'
|
||||
print*
|
||||
print*,'Usage: ft8code [-c grid] "message" # Results for specified message'
|
||||
print*,' ft8code -T # Examples of all message types'
|
||||
print*,' ft8code -t # Short format examples'
|
||||
print*,'Usage: ft8code "message" # Results for specified message'
|
||||
print*,' ft8code -T # Examples of all message types'
|
||||
print*,' ft8code -t # Short format examples'
|
||||
go to 999
|
||||
endif
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1372,6 +1372,9 @@ void MainWindow::readSettings()
|
||||
ui->sbTR->setValue (m_settings->value ("TRPeriod", 15).toInt());
|
||||
QTimer::singleShot (50, [=] {blocked = false;});
|
||||
}
|
||||
if (m_mode=="FT8") {
|
||||
ui->sbFtol->setValue (m_settings->value("Ftol_SF", 50).toInt());
|
||||
}
|
||||
if (m_mode=="Q65") {
|
||||
m_nSubMode=m_settings->value("SubMode_Q65",0).toInt();
|
||||
ui->sbSubmode->setValue(m_nSubMode_Q65);
|
||||
@ -2162,6 +2165,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
|
||||
set_mode(m_mode);
|
||||
configActiveStations();
|
||||
}
|
||||
if(m_mode=="FT8") on_actionFT8_triggered(); //in case we need to reset some things for Fox/Hound
|
||||
}
|
||||
|
||||
void MainWindow::on_monitorButton_clicked (bool checked)
|
||||
@ -7373,6 +7377,7 @@ void MainWindow::on_actionFT8_triggered()
|
||||
VHF_features_enabled(bVHF);
|
||||
ui->cbAutoSeq->setChecked(true);
|
||||
m_TRperiod=15.0;
|
||||
ui->sbFtol->setValue (m_settings->value ("Ftol_SF", 50).toInt()); // restore last used Ftol parameter
|
||||
m_fastGraph->hide();
|
||||
m_wideGraph->show();
|
||||
ui->rh_decodes_headings_label->setText(" UTC dB DT Freq " + tr ("Message"));
|
||||
@ -7405,8 +7410,10 @@ void MainWindow::on_actionFT8_triggered()
|
||||
ui->cbHoldTxFreq->setChecked(true);
|
||||
ui->cbAutoSeq->setEnabled(false);
|
||||
ui->tabWidget->setCurrentIndex(1);
|
||||
m_wideGraph->setSuperFox(false);
|
||||
if(m_config.superFox()) {
|
||||
ui->TxFreqSpinBox->setValue(750); //SuperFox transmits at 750 Hz
|
||||
m_wideGraph->setSuperFox(true);
|
||||
} else {
|
||||
ui->TxFreqSpinBox->setValue(500);
|
||||
}
|
||||
@ -7428,15 +7435,21 @@ void MainWindow::on_actionFT8_triggered()
|
||||
ui->cbAutoSeq->setEnabled(false);
|
||||
ui->tabWidget->setCurrentIndex(0);
|
||||
ui->cbHoldTxFreq->setChecked(true);
|
||||
// 01234567890123456789012345678901234567
|
||||
displayWidgets(nWidgets("11101000010011000001000000000011000000"));
|
||||
ui->cbRxAll->setText(tr("Rx All Freqs"));
|
||||
m_wideGraph->setSuperHound(false);
|
||||
if(m_config.superFox()) {
|
||||
// 01234567890123456789012345678901234567
|
||||
displayWidgets(nWidgets("11111000010011000001000000000011000000"));
|
||||
ui->labDXped->setText(tr ("Super Hound"));
|
||||
ui->cbRxAll->setEnabled(false);
|
||||
m_wideGraph->setRxFreq(ui->RxFreqSpinBox->value());
|
||||
m_wideGraph->setTol(ui->sbFtol->value());
|
||||
m_wideGraph->setSuperHound(true);
|
||||
} else {
|
||||
// 01234567890123456789012345678901234567
|
||||
displayWidgets(nWidgets("11101000010011000001000000000011000000"));
|
||||
ui->labDXped->setText(tr ("Hound"));
|
||||
ui->cbRxAll->setEnabled(true);
|
||||
m_wideGraph->setSuperHound(false);
|
||||
}
|
||||
ui->txrb1->setChecked(true);
|
||||
ui->txrb2->setEnabled(false);
|
||||
@ -7453,6 +7466,7 @@ void MainWindow::on_actionFT8_triggered()
|
||||
}
|
||||
if(m_specOp != SpecOp::HOUND) {
|
||||
ui->houndButton->setChecked(false);
|
||||
m_wideGraph->setSuperHound(false);
|
||||
}
|
||||
|
||||
m_specOp=m_config.special_op_id();
|
||||
@ -8925,6 +8939,7 @@ void MainWindow::on_sbFtol_valueChanged(int value)
|
||||
statusUpdate ();
|
||||
// save last used parameters
|
||||
QTimer::singleShot (200, [=] {
|
||||
if (m_mode=="FT8") m_settings->setValue ("Ftol_SF", ui->sbFtol->value());
|
||||
if (m_mode=="Q65") m_settings->setValue ("Ftol_Q65", ui->sbFtol->value());
|
||||
if (m_mode=="MSK144") m_settings->setValue ("Ftol_MSK144", ui->sbFtol->value());
|
||||
if (m_mode=="JT65") m_settings->setValue ("Ftol_JT65", ui->sbFtol->value ());
|
||||
@ -10208,7 +10223,11 @@ QString MainWindow::sortHoundCalls(QString t, int isort, int max_dB)
|
||||
else
|
||||
i=isort; // part of the line that we want
|
||||
t1=map[a].split(" ",SkipEmptyParts).at(i);
|
||||
n=1000*(t1.toInt()+100) + j; // pack (snr or dist or age) and index j into n
|
||||
int isort_value = t1.toInt();
|
||||
if (isort==5) { // sort by age ascending
|
||||
isort_value = (100 < isort_value ? 100 : 100-isort_value);
|
||||
}
|
||||
n=1000*(isort_value+100) + j; // pack (snr or dist or age) and index j into n
|
||||
list.insert(j,n); // add n to list at [j]
|
||||
}
|
||||
if (isort == 6) { // sort by continent
|
||||
@ -10295,7 +10314,7 @@ void MainWindow::selectHound(QString line, bool bTopQueue)
|
||||
* The line may be selected by double-clicking; alternatively, hitting
|
||||
* <Enter> is equivalent to double-clicking on the top-most line.
|
||||
*/
|
||||
if(line.length()==0) return;
|
||||
if(line.simplified().isEmpty()) return;
|
||||
if(line.length() < 6) return;
|
||||
QString houndCall=line.split(" ",SkipEmptyParts).at(0);
|
||||
|
||||
@ -10479,7 +10498,7 @@ void MainWindow::foxTxSequencer()
|
||||
QString t,rpt;
|
||||
qint32 islot=0;
|
||||
qint32 n1,n2,n3;
|
||||
|
||||
int nMaxRemainingSlots=0;
|
||||
m_tFoxTx++; //Increment Fox Tx cycle counter
|
||||
|
||||
//Is it time for a stand-alone CQ?
|
||||
@ -10531,13 +10550,15 @@ void MainWindow::foxTxSequencer()
|
||||
|
||||
list1Done:
|
||||
//Compile list2: Up to Nslots Hound calls to be sent a report.
|
||||
// For Superfox, up to 5 RR73, but only 4 callsigns with reports. m_NSlots should be 5 for SF.
|
||||
nMaxRemainingSlots = (m_config.superFox()) ? m_Nslots - 1 : m_Nslots;
|
||||
for(int i=0; i<m_foxQSOinProgress.count(); i++) {
|
||||
//First do those for QSOs in progress
|
||||
hc=m_foxQSOinProgress.at(i);
|
||||
if((m_foxQSO[hc].tFoxRrpt < 0) and (m_foxQSO[hc].ncall < m_maxStrikes)) {
|
||||
//Sent him a report and have not received R+rpt: call him again
|
||||
list2 << hc; //Add to list2
|
||||
if(list2.size()==m_Nslots) goto list2Done;
|
||||
if(list2.size()==nMaxRemainingSlots) goto list2Done;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10558,7 +10579,7 @@ list1Done:
|
||||
m_foxQSO[hc].tFoxTxRR73 = -1; //Have not sent RR73
|
||||
refreshHoundQueueDisplay();
|
||||
|
||||
if(list2.size()==m_Nslots) {
|
||||
if(list2.size()==nMaxRemainingSlots) {
|
||||
break;
|
||||
}
|
||||
|
||||
@ -10570,7 +10591,6 @@ list2Done:
|
||||
n2=list2.size();
|
||||
n3=qMax(n1,n2);
|
||||
if(n3>m_Nslots) n3=m_Nslots;
|
||||
|
||||
for(int i=0; i<n3; i++) {
|
||||
hc1="";
|
||||
fm="";
|
||||
|
@ -483,7 +483,9 @@ void CPlotter::DrawOverlay() //DrawOverlay()
|
||||
|
||||
float bw=9.0*12000.0/m_nsps; //JT9
|
||||
if(m_mode=="FT4") bw=3*12000.0/576.0; //FT4 ### (3x, or 4x???) ###
|
||||
if(m_mode=="FT8") bw=7*12000.0/1920.0; //FT8
|
||||
if(m_mode=="FT8") {
|
||||
bw=7*12000.0/1920.0; //FT8
|
||||
}
|
||||
if(m_mode.startsWith("FST4")) {
|
||||
int h=int(pow(2.0,m_nSubMode));
|
||||
int nsps=800;
|
||||
@ -585,7 +587,7 @@ void CPlotter::DrawOverlay() //DrawOverlay()
|
||||
painter0.drawLine(x2,25,x2-5,20);
|
||||
}
|
||||
|
||||
if(m_mode=="Q65" or (m_mode=="JT65" and m_bVHF)) {
|
||||
if(m_mode=="Q65" or (m_mode=="JT65" and m_bVHF) or (m_mode=="FT8" and m_bSuperHound) ) {
|
||||
painter0.setPen(penGreen);
|
||||
x1=XfromFreq(m_rxFreq-m_tol);
|
||||
x2=XfromFreq(m_rxFreq+m_tol);
|
||||
@ -604,10 +606,11 @@ void CPlotter::DrawOverlay() //DrawOverlay()
|
||||
}
|
||||
painter0.setPen(penGreen);
|
||||
x6=XfromFreq(m_rxFreq+bw); //Highest tone
|
||||
if(m_mode=="FT8" and m_bSuperHound) x6=XfromFreq(m_rxFreq+1500.0);
|
||||
painter0.drawLine(x6,20,x6,26);
|
||||
|
||||
} else {
|
||||
// Draw the green "goal post"
|
||||
// Draw the green goal post
|
||||
painter0.setPen(penGreen);
|
||||
x1=XfromFreq(m_rxFreq);
|
||||
x2=XfromFreq(m_rxFreq+bw);
|
||||
@ -627,12 +630,13 @@ void CPlotter::DrawOverlay() //DrawOverlay()
|
||||
painter0.setPen(penRed);
|
||||
x1=XfromFreq(m_txFreq);
|
||||
x2=XfromFreq(m_txFreq+bw);
|
||||
if(m_bSuperFox) x2=XfromFreq(m_txFreq+1500.0);
|
||||
if(m_mode=="WSPR") {
|
||||
bw=4*12000.0/8192.0; //WSPR
|
||||
x1=XfromFreq(m_txFreq-0.5*bw);
|
||||
x2=XfromFreq(m_txFreq+0.5*bw);
|
||||
}
|
||||
// Draw the red "goal post"
|
||||
// Draw the red goal post
|
||||
painter0.drawLine(x1,yTxTop,x1,yTxTop+yh);
|
||||
painter0.drawLine(x1,yTxTop,x2,yTxTop);
|
||||
painter0.drawLine(x2,yTxTop,x2,yTxTop+yh);
|
||||
@ -885,6 +889,18 @@ void CPlotter::setFlatten(bool b1, bool b2)
|
||||
if(b2) m_Flatten=2;
|
||||
}
|
||||
|
||||
void CPlotter::setSuperFox(bool b)
|
||||
{
|
||||
m_bSuperFox=b;
|
||||
if(m_bSuperFox) m_bSuperHound=false;
|
||||
}
|
||||
|
||||
void CPlotter::setSuperHound(bool b)
|
||||
{
|
||||
m_bSuperHound=b;
|
||||
if(m_bSuperHound) m_bSuperFox=false;
|
||||
}
|
||||
|
||||
void CPlotter::setTol(int n) //setTol()
|
||||
{
|
||||
m_tol=n;
|
||||
|
@ -77,6 +77,8 @@ public:
|
||||
void setColours(QVector<QColor> const& cl);
|
||||
void setFlatten(bool b1, bool b2);
|
||||
void setTol(int n);
|
||||
void setSuperFox(bool b);
|
||||
void setSuperHound(bool b);
|
||||
void setRxBand(QString band);
|
||||
void setReference(bool b) {m_bReference = b;}
|
||||
bool Reference() const {return m_bReference;}
|
||||
@ -125,6 +127,8 @@ private:
|
||||
bool m_bSingleDecode;
|
||||
bool m_bFirst=true;
|
||||
bool m_bResized;
|
||||
bool m_bSuperFox=false;
|
||||
bool m_bSuperHound=false;
|
||||
|
||||
float m_fSpan;
|
||||
float m_pdB=0.0;
|
||||
|
@ -498,6 +498,16 @@ void WideGraph::on_zero2dSlider_valueChanged(int value) //Zero2
|
||||
}
|
||||
}
|
||||
|
||||
void WideGraph::setSuperFox(bool b)
|
||||
{
|
||||
ui->widePlot->setSuperFox(b);
|
||||
}
|
||||
|
||||
void WideGraph::setSuperHound(bool b)
|
||||
{
|
||||
ui->widePlot->setSuperHound(b);
|
||||
}
|
||||
|
||||
void WideGraph::setTol(int n) //setTol
|
||||
{
|
||||
ui->widePlot->setTol(n);
|
||||
|
@ -42,6 +42,8 @@ public:
|
||||
bool flatten();
|
||||
bool useRef();
|
||||
void setTol(int n);
|
||||
void setSuperFox(bool b);
|
||||
void setSuperHound(bool b);
|
||||
int smoothYellow();
|
||||
void setRxBand (QString const& band);
|
||||
void setWSPRtransmitted();
|
||||
|
Loading…
Reference in New Issue
Block a user