From 7e549b5d55ffb3a81ee5eb3f864f50dfabcc88ff Mon Sep 17 00:00:00 2001
From: Joe Taylor <k1jt@arrl.org>
Date: Thu, 30 Nov 2017 20:34:05 +0000
Subject: [PATCH] More Fox progress...

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8271 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
---
 lib/ft8/foxgen.f90 | 27 +++++----------------------
 mainwindow.cpp     | 42 ++++++++++++++++++------------------------
 2 files changed, 23 insertions(+), 46 deletions(-)

diff --git a/lib/ft8/foxgen.f90 b/lib/ft8/foxgen.f90
index 9a483a969..1ff128c2f 100644
--- a/lib/ft8/foxgen.f90
+++ b/lib/ft8/foxgen.f90
@@ -1,12 +1,9 @@
-subroutine foxgen(mycall,mygrid6,t)
+subroutine foxgen()
 
   parameter (NN=79,KK=87,NSPS=4*1920)
   parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2)
-  character*(*) t
   character*32 cmsg
   character*22 msg,msgsent
-  character*12 t1
-  character*6 mycall,mygrid6,mygrid,call1,call2
   logical bcontest
   integer itone(NN)
   integer*1 msgbits(KK)
@@ -17,8 +14,6 @@ subroutine foxgen(mycall,mygrid6,t)
   common/foxcom/wave(NWAVE),nslots,cmsg(5)
   equivalence (x,cx),(y,cy)
 
-  mygrid=mygrid6(1:4)//'  '
-!  print*,mycall,' ',mygrid6,' ',nslots,len(t),t
   call system_clock(count0,clkfreq)
   bcontest=.false.
   i3bit=0
@@ -29,18 +24,10 @@ subroutine foxgen(mycall,mygrid6,t)
   wave=0.
 
   do n=1,nslots
-     ia=22*(n-1)+1
-     call1=t(ia:ia+5)
-     if(t(ia+7:ia+10).eq.'RR73') then
-        irpt1=99
-     else
-        read(t(ia+7:ia+10),*) irpt1
-     endif
-     call2=t(ia+11:ia+16)
-     read(t(ia+18:ia+21),*) irpt2
-!     print*,n,call1,irpt1,call2,irpt2
-     
-     call genft8(msg,mygrid,bcontest,i3bit,msgsent,msgbits,itone)
+     i3bit=0
+     print*,n,i3bit,cmsg(n)
+     msg=cmsg(n)(1:22)
+     call genft8(msg,"      ",bcontest,i3bit,msgsent,msgbits,itone)
      
      f0=1500.d0 + fstep*(n-1)
      phi=0.d0
@@ -57,10 +44,6 @@ subroutine foxgen(mycall,mygrid6,t)
      enddo
      
      call system_clock(count1,clkfreq)
-!     time=float(count1-count0)/float(clkfreq)    !Cumulative execution time
-!     write(*,3001) n,k,i,time,msgsent
-!3001 format(i1,i8,i4,f10.6,2x,a22)
-!     if(i.ge.m) exit
   enddo
 
   sqx=0.
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 6d9258b08..8019c1780 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -135,7 +135,7 @@ extern "C" {
   void calibrate_(char data_dir[], int* iz, double* a, double* b, double* rms,
                   double* sigmaa, double* sigmab, int* irc, int len1);
 
-  void foxgen_(char* mycall, char* mygrid, char* tb3, int len1, int len2, int len3);
+  void foxgen_();
 }
 
 int volatile itone[NUM_ISCAT_SYMBOLS];  //Audio tones for all Tx symbols
@@ -3301,28 +3301,25 @@ void MainWindow::guiUpdate()
           }
           if(m_modeTx=="FT8") {
             if(m_config.bFox()) {
-              int islots=0;
               QString msg[5];
-              QString t1="";
+              QString t1=" ";
               QString t3=ui->textBrowser3->toPlainText() + "\n";
               QString t4=ui->textBrowser4->toPlainText() + "\n";
+              int islots=t3.split("\n").size() - 1;
               for(int i=0; i<m_Nslots; i++) {
-                QString t0=t3.split("\n").at(i);
-                if(t0=="") break;
-                if(t0.length()==10) t0 += " ";
-                t1 += t0;
-                QString t2=t4.split("\n").at(i);
-                if(t2=="") break;
-                if(t2.length()==10) t2 += " ";
-                t1 += t2;
-                islots=i;
-              }
-              int len3=t1.length();
-//              qDebug() << "aa" << len3 << t1;
-              foxcom_.nslots=islots;
-              if(len3>10) {
-                foxgen_(MyCall, MyGrid, const_cast <char *> (t1.toLatin1().constData()),6,6,len3);
+                msg[i]="";
+                if(i<islots and t3.length() >= 11) {
+                  msg[i]=t3.split("\n").at(i).mid(0,7) + m_config.my_callsign() + t3.split("\n").at(i).mid(6,5);
+                }
+                if(msg[i]=="") msg[i]=ui->comboBoxCQ->currentText() + " " + m_config.my_callsign() +
+                    " " + m_config.my_grid().mid(0,4);
+                msg[i] += "                                ";
+                msg[i]=msg[i].mid(0,32);
+                if(msg[i].indexOf(" RR73 ") > 6) qDebug() << "Logit:" << msg[i];
+                strncpy(&foxcom_.cmsg[i][0], msg[i].toLatin1(),32);
               }
+              foxcom_.nslots=m_Nslots;
+              foxgen_();
             } else {
               genft8_(message, MyGrid, &bcontest, &m_i3bit, msgsent, const_cast<char *> (ft8msgbits),
                       const_cast<int *> (itone), 22, 6, 22);
@@ -3861,7 +3858,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
   }
 
   if(m_config.bFox() and m_decodedText2) {
-    if(m_nToBeCalled >= 2*m_Nslots or m_nFoxCallers==0) return;
+    if(m_nToBeCalled >= (m_Nslots + 10) or m_nFoxCallers==0) return;
     QString t=cursor.block().text();
     QString c2=t.split(" ",QString::SkipEmptyParts).at(0);
     if(ui->textBrowser3->toPlainText().indexOf(c2) >= 0) return;  //Don't allow same call twice
@@ -7171,9 +7168,6 @@ void MainWindow::on_sbMax_dB_valueChanged(int n)
 
 void MainWindow::on_pbFoxReset_clicked()
 {
-  QString t="";
-  for(int i=0; i<m_Nslots; i++) {
-    t += ui->comboBoxCQ->currentText() + "\n";
-  }
-  ui->textBrowser3->setText(t);
+  ui->textBrowser3->setText("");
+  ui->textBrowser4->setText("");
 }