diff --git a/commons.h b/commons.h index 163bb73d1..e02fa9251 100644 --- a/commons.h +++ b/commons.h @@ -85,7 +85,7 @@ extern struct { int nslots; int i3bit[5]; char cmsg[5][40]; - char mycall[6]; + char mycall[12]; } foxcom_; #ifdef __cplusplus diff --git a/lib/ft8/foxgen.f90 b/lib/ft8/foxgen.f90 index 9146bcdb2..38130aae4 100644 --- a/lib/ft8/foxgen.f90 +++ b/lib/ft8/foxgen.f90 @@ -31,7 +31,7 @@ subroutine foxgen() real x(NFFT) real*8 dt,twopi,f0,fstep,dfreq,phi,dphi complex cx(0:NH) - common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall(6) + common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall(12) common/foxcom2/itone2(NN),msgbits2(KK) equivalence (x,cx),(y,cy) data icos7/2,5,6,0,4,1,3/ !Costas 7x7 tone pattern @@ -58,11 +58,11 @@ subroutine foxgen() msg=cmsg(n)(1:i1)//cmsg(n)(i2+1:i3-2)//' ' read(cmsg(n)(i4+2:i4+4),*) irpt endif -! print*,'Foxgen:',n,cmsg(n) call genft8(msg,mygrid,bcontest,0,msgsent,msgbits,itone) + print*,'Foxgen:',n,cmsg(n),msgsent if(i3b.eq.1) then - icrc10=crc10(c_loc(mycall),6) + icrc10=crc10(c_loc(mycall),12) nrpt=irpt+30 write(cbits,1001) msgbits(1:56),icrc10,nrpt,i3b,0 1001 format(56b1.1,b10.10,b6.6,b3.3,b12.12) diff --git a/lib/ft8/foxgen_wrap.f90 b/lib/ft8/foxgen_wrap.f90 index 3d9b43084..8ffe37c35 100644 --- a/lib/ft8/foxgen_wrap.f90 +++ b/lib/ft8/foxgen_wrap.f90 @@ -4,16 +4,16 @@ subroutine foxgen_wrap(msg40,msgbits,itone) parameter (NWAVE=NN*NSPS) character*40 msg40,cmsg - character*6 mycall6 + character*12 mycall12 integer*1 msgbits(KK),msgbits2 integer itone(NN) - common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall6 + common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall12 common/foxcom2/itone2(NN),msgbits2(KK) nslots=1 i1=index(msg40,'<') i2=index(msg40,'>') - mycall6=msg40(i1+1:i2-1)//' ' + mycall12=msg40(i1+1:i2-1)//' ' cmsg(1)=msg40 i3bit(1)=1 call foxgen() diff --git a/lib/ft8/ft8b.f90 b/lib/ft8/ft8b.f90 index d22e76194..aabee1dca 100644 --- a/lib/ft8/ft8b.f90 +++ b/lib/ft8/ft8b.f90 @@ -27,7 +27,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, & integer icos7(0:6),ip(1) 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:: i1hiscall(6) + integer*1, target:: i1hiscall(12) complex cd0(3200) complex ctwk(32) complex csymb(32) @@ -398,11 +398,10 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, & if(xsnr .lt. -24.0) xsnr=-24.0 if(i3bit.eq.1) then - hiscall6=hiscall12(1:6) - do i=1,6 - i1hiscall(i)=ichar(hiscall6(i:i)) + do i=1,12 + i1hiscall(i)=ichar(hiscall12(i:i)) enddo - icrc10=crc10(c_loc(i1hiscall),6) + icrc10=crc10(c_loc(i1hiscall),12) write(cbits,1001) decoded 1001 format(87i1) read(cbits,1002) ncrc10,nrpt diff --git a/mainwindow.cpp b/mainwindow.cpp index 6538657c5..aa858f44e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -7433,12 +7433,12 @@ void MainWindow::foxTxSequencer() if(islot >= m_Nslots) goto Transmit; } -//One or more Tx slots are still available +//One or more Tx slots are still available, repeat call to a Hound in the QSOqueue while (!m_foxQSOqueue.isEmpty()) { //should limit repeat transmissions here hc1=m_foxQSOqueue.dequeue(); //Recover hound callsign from QSO queue m_foxQSOqueue.enqueue(hc1); //Put him back in, at the end - fm = hc1 + " " + m_config.my_callsign() + " " + m_foxQSO[hc1].sent; //Tx msg + fm = hc1 + " " + m_baseCall + " " + m_foxQSO[hc1].sent; //Tx msg islot++; //Generate tx waveform foxGenWaveform(islot-1,fm); @@ -7455,7 +7455,7 @@ void MainWindow::foxTxSequencer() m_foxQSO[hc1].sent=rpt; //Report to send him m_foxQSO[hc1].t0=now; //QSO start time rm_tb4(hc1); //Remove this hound from tb4 - fm = hc1 + " " + m_config.my_callsign() + " " + rpt; //Tx msg + fm = hc1 + " " + m_baseCall + " " + rpt; //Tx msg islot++; //Generate tx waveform foxGenWaveform(islot-1,fm); @@ -7472,8 +7472,8 @@ void MainWindow::foxTxSequencer() Transmit: foxcom_.nslots=islot; - QString foxCall=m_config.my_callsign() + " "; - strncpy(&foxcom_.mycall[0], foxCall.toLatin1(),6); //Copy Fox callsign into foxcom_ + QString foxCall=m_config.my_callsign() + " "; + strncpy(&foxcom_.mycall[0], foxCall.toLatin1(),12); //Copy Fox callsign into foxcom_ foxgen_(); int maxAge=30*ui->sbMaxTime->value(); //60 ==> max 4 calls (0 30 60 90) to a new Fox