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
This commit is contained in:
Joe Taylor 2017-12-18 19:07:10 +00:00
parent 28c9bde5a5
commit 8f7ca2851c
3 changed files with 38 additions and 29 deletions

View File

@ -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)

View File

@ -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

View File

@ -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;