diff --git a/lib/ft8/ft8b.f90 b/lib/ft8/ft8b.f90 index 88fcf2288..adca77285 100644 --- a/lib/ft8/ft8b.f90 +++ b/lib/ft8/ft8b.f90 @@ -422,9 +422,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,nzhsym,lapon, & write(c77,'(77i1)') message77 read(c77(72:74),'(b3)') n3 read(c77(75:77),'(b3)') i3 - if(i3.gt.4 .or. (i3.eq.0.and.n3.gt.5)) then - cycle - endif + if(i3.gt.5 .or. (i3.eq.0.and.n3.gt.6)) cycle call unpack77(c77,1,msg37,unpk77_success) if(.not.unpk77_success) then cycle diff --git a/lib/ft8/ft8sim.f90 b/lib/ft8/ft8sim.f90 index 4cca67e48..42931635b 100644 --- a/lib/ft8/ft8sim.f90 +++ b/lib/ft8/ft8sim.f90 @@ -27,6 +27,7 @@ program ft8sim_gfsk print*,'Examples: ft8sim "K1ABC W9XYZ EN37" 1500.0 0.0 0.1 1.0 10 -18' print*,' ft8sim "WA9XYZ/R KA1ABC/R FN42" 1500.0 0.0 0.1 1.0 10 -18' print*,' ft8sim "K1ABC RR73; W9XYZ -11" 300 0 0 0 25 1 -10' + print*,' ft8sim " R 570007 JO22DB" 1500 0 0 0 1 -10' go to 999 endif call getarg(1,msg37) !Message to be transmitted @@ -71,7 +72,7 @@ program ft8sim_gfsk call gen_ft8wave(itone,NN,NSPS,bt,fs,f0,cwave,xjunk,1,NWAVE) !Generate complex cwave write(*,*) - write(*,'(a23,a37,3x,a7,i1,a1,i1)') 'New Style FT8 Message: ',msgsent37,'i3.n3: ',i3,'.',n3 + write(*,'(a23,a37,3x,a7,i1,a1,i1)') 'Decoded message: ',msgsent37,'i3.n3: ',i3,'.',n3 write(*,1000) f0,xdt,txt,snrdb,bw 1000 format('f0:',f9.3,' DT:',f6.2,' TxT:',f6.1,' SNR:',f6.1, & ' BW:',f4.1) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 174796123..38451caa6 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3361,19 +3361,16 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler || message_words.contains (Radio::base_callsign (ui->dxCallEntry->text ())) || message_words.contains ("DE"))) || !message.isStandardMessage ()); // free text 73/RR73 - QString w2=message_words.at(2); - QString w34; + + QStringList w=message.string().mid(24).remove("<").remove(">").split(" ",QString::SkipEmptyParts); + QString w2=w.at(2); int nrpt=0; - if(message_words.size()>3) { - w34=message_words.at(3); + if(w.size()>3) { nrpt=w2.toInt(); - if(w2=="R") { - nrpt=w34.toInt(); - w34=message_words.at(4); - } + if(w2=="R") nrpt=w.at(3).toInt(); } - bool bEU_VHF_w2=(nrpt>=520001 and nrpt<=594000); - if(bEU_VHF_w2 and message.string().contains(m_config.my_callsign() + " ")) { + bool bEU_VHF=(nrpt>=520001 and nrpt<=594000); + if(bEU_VHF and message.string().contains(m_config.my_callsign() + " ")) { m_xRcvd=message.string().trimmed().right(13); } if (m_auto @@ -3390,7 +3387,7 @@ void MainWindow::auto_sequence (DecodedText const& message, unsigned start_toler && !m_sentFirst73 // not finished QSO && ((message_words.at (1).contains (m_baseCall) // being called and not already in a QSO - && (message_words.at(2).contains(Radio::base_callsign(ui->dxCallEntry->text())) or bEU_VHF_w2)) + && (message_words.at(2).contains(Radio::base_callsign(ui->dxCallEntry->text())) or bEU_VHF)) // type 2 compound replies || (within_tolerance && (acceptable_73 || @@ -4573,15 +4570,18 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie || dtext.contains ("/" + m_baseCall + " ") || dtext.contains (" " + m_baseCall + "/") || (firstcall == "DE")) { + + QStringList w=message.string().mid(24).remove("<").remove(">").split(" ",QString::SkipEmptyParts); QString w2=""; - if(message_words.size()>=3) w2=message_words.at(2); + if(w.size()>=3) w2=w.at(2); QString w34=""; - if(message_words.size()>=4) w34=message_words.at(3); + if(w.size()>=4) w34=w.at(3); int nrpt=w2.toInt(); if(w2=="R") { nrpt=w34.toInt(); - w34=message_words.at(4); + w34=w.at(4); } + bool bEU_VHF_w2=(nrpt>=520001 and nrpt<=594000); if(bEU_VHF_w2 and SpecOp::EU_VHF!=m_config.special_op_id()) { // Switch automatically to EU VHF Contest mode @@ -5100,8 +5100,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional) } } if(SpecOp::EU_VHF==m_config.special_op_id()) { - QString t1,a; - t=t0.split(" ").at(0) + " "; + QString a; + t="<" + t0.split(" ").at(0) + "> <" + t0.split(" ").at(1) + "> "; a.sprintf("%4.4d ",ui->sbSerialNumber->value()); sent=rs + a + m_config.my_grid(); } diff --git a/wsjtx.pro b/wsjtx.pro index f480a8ebd..3248fefd7 100644 --- a/wsjtx.pro +++ b/wsjtx.pro @@ -52,6 +52,7 @@ include(validators/validators.pri) include(item_delegates/item_delegates.pri) include(logbook/logbook.pri) include(widgets/widgets.pri) +include(Decoder/decodedtext.pri) SOURCES += \ Radio.cpp NetworkServerLookup.cpp revision_utils.cpp \