diff --git a/lib/decode9.f90 b/lib/decode9.f90
index 4753f36b7..724b67b5e 100644
--- a/lib/decode9.f90
+++ b/lib/decode9.f90
@@ -36,7 +36,7 @@ subroutine decode9(i1SoftSymbols,msg)
msg=' '
nbits=72
ndelta=17
- limit=10000
+ limit=100000
call fano232(i1SoftSymbols,nbits+31,mettab,ndelta,limit,i1DecodedBytes, &
ncycles,metric,ierr)
diff --git a/lib/decoder.f90 b/lib/decoder.f90
index c4f3422bb..cd1f13471 100644
--- a/lib/decoder.f90
+++ b/lib/decoder.f90
@@ -9,7 +9,7 @@ subroutine decoder(ntrSeconds,c0)
parameter (NDMAX=1800*1500) !Sample intervals at 1500 Hz rate
parameter (NSMAX=22000) !Max length of saved spectra
character*22 msg
- real*4 red(NSMAX)
+ real*4 ccfred(NSMAX)
integer*1 i1SoftSymbols(207)
integer*2 id2
complex c0(NDMAX)
@@ -44,16 +44,16 @@ subroutine decoder(ntrSeconds,c0)
tstep=kstep/12000.0
! Get sync, approx freq
- call sync9(ss,tstep,df3,ntol,nfqso,sync,fpk,red)
- print*,'A',nfqso,ntol,fpk
- call spec9(c0,npts8,nsps,fpk,xdt,i1SoftSymbols)
+ call sync9(ss,tstep,df3,ntol,nfqso,sync,snr,fpk0,ccfred)
+ call spec9(c0,npts8,nsps,fpk0,fpk,xdt,i1SoftSymbols)
call decode9(i1SoftSymbols,msg)
open(13,file='decoded.txt',status='unknown')
rewind 13
! write(*,1010) nutc,sync,xdt,1000.0+fpk,msg
- write(13,1010) nutc,sync,xdt,1000.0+fpk,msg
-1010 format(i4.4,3f7.1,2x,a22)
+ nsync=sync
+ write(13,1010) nutc,nsync,snr,xdt,1000.0+fpk,msg
+1010 format(i4.4,i4,f7.1,f6.1,f8.1,3x,a22,e12.3)
call flush(13)
close(13)
diff --git a/lib/spec9.f90 b/lib/spec9.f90
index d4968ce86..cfe682834 100644
--- a/lib/spec9.f90
+++ b/lib/spec9.f90
@@ -1,4 +1,4 @@
-subroutine spec9(c0,npts8,nsps,fpk,xdt,i1SoftSymbols)
+subroutine spec9(c0,npts8,nsps,fpk0,fpk,xdt,i1SoftSymbols)
parameter (MAXFFT=31500)
complex c0(0:npts8-1)
@@ -21,6 +21,12 @@ subroutine spec9(c0,npts8,nsps,fpk,xdt,i1SoftSymbols)
save
! Fix up the data in c0()
+ sum=0.
+ do i=0,npts8-1
+ sum=sum + real(c0(i))**2 + aimag(c0(i))**2
+ enddo
+ rms=sqrt(sum/npts8)
+ fac=1.0/rms
twopi=8.0*atan(1.0)
phi=0.
dphi=twopi*500.0/1500.0
@@ -28,15 +34,15 @@ subroutine spec9(c0,npts8,nsps,fpk,xdt,i1SoftSymbols)
phi=phi+dphi
if(phi.gt.twopi) phi=phi-twopi
if(phi.lt.-twopi) phi=phi+twopi
- c1(i)=cmplx(aimag(c0(i)),real(c0(i)))*cmplx(cos(phi),sin(phi))
+ c1(i)=fac*cmplx(aimag(c0(i)),real(c0(i)))*cmplx(cos(phi),sin(phi))
enddo
nsps8=nsps/8
- foffset=fpk
+ foffset=fpk0
istart=1520
call peakdf9(c1,npts8,nsps8,istart,foffset,idf)
- fpk=fpk + idf*0.1*1500.0/nsps8
+ fpk=fpk0 + idf*0.1*1500.0/nsps8
foffset=foffset + idf*0.1*1500.0/nsps8
call peakdt9(c1,npts8,nsps8,istart,foffset,idt)
istart=istart + 0.0625*nsps8*idt
diff --git a/lib/symspec.f90 b/lib/symspec.f90
index 4a04cec02..f8d8a81dc 100644
--- a/lib/symspec.f90
+++ b/lib/symspec.f90
@@ -135,11 +135,12 @@ subroutine symspec(k,ntrperiod,nsps,nb,nbslider,pxdb,s,red, &
999 continue
- call pctile(s,iz,50,xmed0)
- s(1:iz)=s(1:iz)/xmed0
- call pctile(ssum,iz,50,xmed1)
- savg(1:iz)=ssum(1:iz)/xmed1
-
+! call pctile(s,iz,50,xmed0)
+ ave0=sum(s(1:iz))/iz
+ s(1:iz)=s(1:iz)/ave0
+! call pctile(ssum,iz,50,xmed1)
+ ave1=sum(ssum(1:iz))/iz
+ savg(1:iz)=ssum(1:iz)/ave1
call redsync(ss,ntrperiod,ihsym,iz,red)
return
diff --git a/lib/sync9.f90 b/lib/sync9.f90
index 2aaf1057b..4f06fe029 100644
--- a/lib/sync9.f90
+++ b/lib/sync9.f90
@@ -1,4 +1,4 @@
-subroutine sync9(ss,tstep,df3,ntol,nfqso,sync,fpk,ccfred)
+subroutine sync9(ss,tstep,df3,ntol,nfqso,sync,snr,fpk,ccfred)
parameter (NSMAX=22000) !Max length of saved spectra
real ss(184,NSMAX)
@@ -52,8 +52,20 @@ subroutine sync9(ss,tstep,df3,ntol,nfqso,sync,fpk,ccfred)
ccfred(i)=smax
enddo
+ sum=0.
+ nsum=0
+ do i=ia,ib
+ if(abs(i-ipkbest).ge.2) then
+ sum=sum+ccfred(i)
+ nsum=nsum+1
+ endif
+ enddo
+ ave=sum/nsum
+ snr=10.0*log10(sbest/ave) - 10.0*log10(2500.0/df3)
+ sync=sbest/ave - 2.0
+ if(sync.lt.0.0) sync=0.0
+ if(sync.gt.10.0) sync=10.0
fpk=(ipkbest-1)*df3
- sync=sbest
return
end subroutine sync9
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 94c1bb421..ac7241b08 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -1413,3 +1413,10 @@ void MainWindow::on_TxFreqSpinBox_valueChanged(int n)
m_txFreq=n;
soundOutThread.setTxFreq(n);
}
+
+void MainWindow::on_pbTxFreq_clicked()
+{
+ int ntx=g_pWideGraph->QSOfreq();
+ m_txFreq=ntx;
+ ui->TxFreqSpinBox->setValue(ntx);
+}
diff --git a/mainwindow.h b/mainwindow.h
index 880d350ff..4cf8a89be 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -108,6 +108,7 @@ private slots:
void on_NBcheckBox_toggled(bool checked);
void on_NBslider_valueChanged(int value);
void on_TxFreqSpinBox_valueChanged(int arg1);
+ void on_pbTxFreq_clicked();
private:
Ui::MainWindow *ui;
@@ -136,7 +137,6 @@ private:
qint32 m_nsps;
qint32 m_hsymStop;
qint32 m_len1;
- qint32 m_fQSO;
bool m_monitoring;
bool m_transmitting;
diff --git a/mainwindow.ui b/mainwindow.ui
index 4359b2f37..a029fe490 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -66,7 +66,7 @@
- UTC T dB Freq
+ UTC Sync dB DT Freq
-
@@ -574,6 +574,25 @@ p, li { white-space: pre-wrap; }
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+ Tx = QSO Freq
+
+
+
-