Fix some potential bounds errors in setting frequency limits. Implement submodes QRA65B-E on the Tx side.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6942 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-07-23 13:22:34 +00:00
parent 6a8ed228e2
commit d1e23bdac8
3 changed files with 19 additions and 7 deletions

View File

@ -37,8 +37,8 @@ subroutine qra64a(dd0,nutc,nf1,nf2,nfqso,ntol,mycall_12,hiscall_12, &
call spec64(dd0,-1,s,savg,ss)
fa=max(nf1,nfqso-ntol)
fb=min(nf2,nfqso+ntol)
ia=nint(fa/df)
ib=nint(fb/df)
ia=max(1,nint(fa/df))
ib=min(NZ,nint(fb/df))
call pctile(savg(ia),ib-ia+1,45,base)
savg=savg/base - 1.0
ss=ss/base
@ -105,7 +105,7 @@ subroutine qra64a(dd0,nutc,nf1,nf2,nfqso,ntol,mycall_12,hiscall_12, &
! write(*,5001) dtx,nint(f0),0,snr1
!5001 format(f6.3,2i6,f7.1)
maxf1=10
call sync64(dd0,nf1,nf2,maxf1,dtx,f0,kpk,snr,s3a)
call sync64(dd0,nf1,nf2,nfqso,ntol,maxf1,dtx,f0,kpk,snr,s3a)
! write(*,5001) dtx,nint(f0),kpk,snr
mycall=mycall_12(1:6) !### May need fixing ###

View File

@ -1,4 +1,4 @@
subroutine sync64(dd,nf1,nf2,maxf1,dtx,f0,kpk,snrdb,s3a)
subroutine sync64(dd,nf1,nf2,nfqso,ntol,maxf1,dtx,f0,kpk,snrdb,s3a)
parameter (NMAX=60*12000) !Max size of raw data at 12000 Hz
parameter (NSPS=2304) !Samples per symbol at 4000 Hz
@ -53,8 +53,10 @@ subroutine sync64(dd,nf1,nf2,maxf1,dtx,f0,kpk,snrdb,s3a)
nfft3=NSPC
nh3=nfft3/2
df3=4000.0/nfft3
ia=nint(nf1/df3)
ib=nint(nf2/df3)
fa=max(nf1,nfqso-ntol)
fb=min(nf2,nfqso+ntol)
ia=max(maxf1,nint(fa/df3))
ib=min(NSPC-1-maxf1,nint(fb/df3))
iz=ib-ia+1
snr=0.
jpk=0

View File

@ -3984,7 +3984,9 @@ void MainWindow::on_actionMSK144_triggered()
void MainWindow::on_actionQRA64_triggered()
{
int n=m_nSubMode;
on_actionJT65_triggered();
m_nSubMode=n;
m_mode="QRA64";
m_modeTx="QRA64";
ui->actionQRA64->setChecked(true);
@ -3993,9 +3995,15 @@ void MainWindow::on_actionQRA64_triggered()
setup_status_bar (m_config.enable_VHF_features ());
m_wideGraph->setMode(m_mode);
m_wideGraph->setModeTx(m_modeTx);
ui->sbSubmode->setMaximum(4);
if(m_config.enable_VHF_features()) {
ui->sbSubmode->setValue(m_nSubMode);
} else {
ui->sbSubmode->setValue(0);
ui->sbTR->setValue(0);
}
}
void MainWindow::on_actionJT65_triggered()
{
if(m_mode=="JT4" or m_mode.startsWith ("WSPR")) {
@ -4865,6 +4873,8 @@ void MainWindow::transmit (double snr)
if(m_nSubMode==0) toneSpacing=12000.0/6912.0;
if(m_nSubMode==1) toneSpacing=2*12000.0/6912.0;
if(m_nSubMode==2) toneSpacing=4*12000.0/6912.0;
if(m_nSubMode==3) toneSpacing=8*12000.0/6912.0;
if(m_nSubMode==4) toneSpacing=16*12000.0/6912.0;
Q_EMIT sendMessage (NUM_QRA64_SYMBOLS,
6912.0, ui->TxFreqSpinBox->value () - m_XIT,
toneSpacing, m_soundOutput, m_config.audio_output_channel (),