From 8f7ca2851c0eb962bfcccf9abb2ae29d5e6db2de Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 18 Dec 2017 19:07:10 +0000 Subject: [PATCH] Fix a number of minor bugs in FT8 DXpedition mode. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8340 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/ft8/ft8b.f90 | 23 ++++++++++++----------- lib/ft8_decode.f90 | 7 ++++--- mainwindow.cpp | 37 ++++++++++++++++++++++--------------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/lib/ft8/ft8b.f90 b/lib/ft8/ft8b.f90 index 58ed583f5..d68f2ebfa 100644 --- a/lib/ft8/ft8b.f90 +++ b/lib/ft8/ft8b.f90 @@ -1,6 +1,6 @@ -subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, & - napwid,lsubtract,nagain,iaptype,mycall12,mygrid6,bcontest,sync0,f1,xdt,xbase, & - apsym,nharderrors,dmin,nbadcrc,ipass,iera,msg32,xsnr) +subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, & + napwid,lsubtract,nagain,iaptype,mycall12,mygrid6,hiscall12,bcontest, & + sync0,f1,xdt,xbase,apsym,nharderrors,dmin,nbadcrc,ipass,iera,msg32,xsnr) use crc use timer_module, only: timer @@ -8,8 +8,8 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, parameter(NRECENT=10,NP2=2812) character*32 msg32 character message*22,msgsent*22 - character*12 mycall12,recent_calls(NRECENT) - character*6 mycall6,mygrid6,c1,c2 + character*12 mycall12,hiscall12,recent_calls(NRECENT) + character*6 mycall6,mygrid6,hiscall6,c1,c2 character*87 cbits logical bcontest real a(5) @@ -25,9 +25,9 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, integer itone(NN) integer indxs1(8*ND) integer icos7(0:6),ip(1) - integer nappasses(0:5) ! the number of decoding passes to use for each QSO state + integer nappasses(0:5) !Number of decoding passes to use for each QSO state integer naptypes(0:5,4) ! (nQSOProgress, decoding pass) maximum of 4 passes for now - integer*1, target:: i1mycall(6) + integer*1, target:: i1hiscall(6) complex cd0(3200) complex ctwk(32) complex csymb(32) @@ -398,11 +398,11 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, if(xsnr .lt. -24.0) xsnr=-24.0 if(i3bit.eq.1) then - mycall6=mycall12(1:6) + hiscall6=hiscall12(1:6) do i=1,6 - i1mycall(i)=ichar(mycall6(i:i)) + i1hiscall(i)=ichar(hiscall6(i:i)) enddo - icrc10=crc10(c_loc(i1mycall),6) + icrc10=crc10(c_loc(i1hiscall),6) write(cbits,1001) decoded 1001 format(87i1) read(cbits,1002) ncrc10,nrpt @@ -412,7 +412,8 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, i2=index(message(i1+1:),' ') + i1 c1=message(1:i1)//' ' c2=message(i1+1:i2)//' ' - if(ncrc10.eq.icrc10) msg32=c1//' RR73; '//c2//' <'//trim(mycall6)//'> ' + if(ncrc10.eq.icrc10) msg32=c1//' RR73; '//c2//' <'// & + trim(hiscall6)//'> ' if(ncrc10.ne.icrc10) msg32=c1//' RR73; '//c2//' <...> ' write(msg32(30:32),1010) irpt 1010 format(i3.2) diff --git a/lib/ft8_decode.f90 b/lib/ft8_decode.f90 index 83452fe68..f53d1a9b2 100644 --- a/lib/ft8_decode.f90 +++ b/lib/ft8_decode.f90 @@ -105,9 +105,10 @@ contains xbase=10.0**(0.1*(sbase(nint(f1/3.125))-40.0)) nsnr0=min(99,nint(10.0*log10(sync) - 25.5)) !### empirical ### call timer('ft8b ',0) - call ft8b(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon,lapcqonly, & - napwid,lsubtract,nagain,iaptype,mycall12,mygrid6,bcontest,sync,f1,xdt, & - xbase,apsym,nharderrors,dmin,nbadcrc,iappass,iera,msg32,xsnr) + call ft8b(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon, & + lapcqonly,napwid,lsubtract,nagain,iaptype,mycall12,mygrid6, & + hiscall12,bcontest,sync,f1,xdt,xbase,apsym,nharderrors,dmin, & + nbadcrc,iappass,iera,msg32,xsnr) message=msg32(1:22) !### nsnr=nint(xsnr) xdt=xdt-0.5 diff --git a/mainwindow.cpp b/mainwindow.cpp index 98f684bf3..cac88d4fd 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2933,19 +2933,21 @@ void MainWindow::readFromStdout() //readFromStdout } } else { QStringList w=decodedtext.string().mid(24).split(" ",QString::SkipEmptyParts); - QString foxCall=w.at(1); - if(w.at(0)==m_config.my_callsign()) { - if(w.at(2)=="RR73") { - auto_tx_mode(false); - on_logQSOButton_clicked(); - } else { - int fRx=decodedtext.string().mid(15,5).toInt(); - m_rptRcvd=w.at(2); - m_rptSent=decodedtext.string().mid(7,3); - //### Select TX3, and set TxFreq = fRx + 350 Hz, and Force Auto ON. ### - ui->txrb3->setChecked(true); - ui->TxFreqSpinBox->setValue(fRx+350); - if(!m_auto) auto_tx_mode(true); + if(w.size()==3) { + QString foxCall=w.at(1); + if(w.at(0)==m_config.my_callsign()) { + if(w.at(2)=="RR73") { + auto_tx_mode(false); + on_logQSOButton_clicked(); + } else { + int fRx=decodedtext.string().mid(15,5).toInt(); + m_rptRcvd=w.at(2); + m_rptSent=decodedtext.string().mid(7,3); + //### Select TX3, and set TxFreq = fRx + 350 Hz, and Force Auto ON. ### + ui->txrb3->setChecked(true); + ui->TxFreqSpinBox->setValue(fRx+350); + if(!m_auto) auto_tx_mode(true); + } } } } @@ -3858,6 +3860,7 @@ void MainWindow::on_txb1_clicked() void MainWindow::on_txb1_doubleClicked() { + if(m_mode=="FT8" and m_config.bHound()) return; // skip Tx1, only allowed if not a type 1 compound callsign auto const& my_callsign = m_config.my_callsign (); auto is_compound = my_callsign != m_baseCall; @@ -3998,7 +4001,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie if (message.isTX()) { if (!m_config.enable_VHF_features()) { if(!shift) ui->RxFreqSpinBox->setValue(frequency); //Set Rx freq - if((ctrl or shift) and !m_holdTxFreq) ui->TxFreqSpinBox->setValue(frequency); //Set Tx freq + if((ctrl or shift) and !m_holdTxFreq) { + ui->TxFreqSpinBox->setValue(frequency); //Set Tx freq + } } return; } @@ -4086,7 +4091,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie && firstcall != m_config.my_callsign () && firstcall != m_baseCall && firstcall != "DE") || "CQ" == firstcall || "QRZ" == firstcall || ctrl || shift) { - if (!m_holdTxFreq or shift or ctrl) ui->TxFreqSpinBox->setValue(frequency); + if (!m_holdTxFreq and (shift or ctrl)) { + ui->TxFreqSpinBox->setValue(frequency); + } if(m_mode != "JT4" && m_mode != "JT65" && !m_mode.startsWith ("JT9") && m_mode != "QRA64" && m_mode!="FT8") { return;