Progress toward full implementation of QRA64 in MAP65.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@7505 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-01-15 22:01:24 +00:00
parent 8475e23906
commit 48505621ae
11 changed files with 175 additions and 127 deletions

View File

@ -30,7 +30,7 @@ extern struct { //This is "common/datcom/..." in Fortran
int map65RxLog; //Flags to control log files
int nfsample; //Input sample rate
int nxpol; //1 if using xpol antennas, 0 otherwise
int mode65; //JT65 sub-mode: A=1, B=2, C=4
int nmode; //nmode = 10*m_modeQRA64 + m_modeJT65
int nfast; //1 for sub-modes ABC; 2 for B2, C2
int nsave; //Number of s3(64,63) spectra saved
char mycall[12];

View File

@ -48,13 +48,7 @@ void getfile(QString fname, bool xpol, int dbDgrd, int nfast)
if(i0<0) i0=fname.indexOf(".iq");
datcom_.nutc=0;
if(i0>0) {
if(fname.mid(i0-5,1)=="_") {
datcom_.nutc=10000*fname.mid(i0-4,2).toInt() +
100*fname.mid(i0-2,2).toInt();
} else {
datcom_.nutc=10000*fname.mid(i0-6,2).toInt() +
100*fname.mid(i0-4,2).toInt() + fname.mid(i0-2,2).toInt();
}
datcom_.nutc=100*fname.mid(i0-4,2).toInt() + fname.mid(i0-2,2).toInt();
}
}
}

View File

@ -10,7 +10,7 @@ subroutine decode0(dd,ss,savg,nstandalone)
character mycall0*12,hiscall0*12,hisgrid0*6
common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, &
ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, &
nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime
common/tracer/ limtrace,lu
data neme0/-99/,mcall3b/1/
@ -54,7 +54,7 @@ subroutine decode0(dd,ss,savg,nstandalone)
call map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
mousedf,mousefqso,nagain,ndecdone,ndiskdat,nfshift,ndphi, &
nfcal,nkeep,mcall3b,nsum,nsave,nxant,rmsdd,mycall,mygrid, &
neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,mode65,nfast)
neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,nmode,nfast)
call timer('map65a ',1)
call timer('decode0 ',1)

View File

@ -16,7 +16,7 @@ program m65
common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fc0,nutc0,junk(36)
common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, &
ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, &
nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime
nargs=iargc()
@ -34,9 +34,11 @@ program m65
call ftnquit
go to 999
endif
if(arg(1:1).eq.'A') mode65=1
if(arg(1:1).eq.'B') mode65=2
if(arg(1:1).eq.'C') mode65=4
!### These need fixing:
if(arg(1:1).eq.'A') nmode=1
if(arg(1:1).eq.'B') nmode=2
if(arg(1:1).eq.'C') nmode=3
!###
nfast=1
if(arg(2:2).eq.'2') nfast=2
nfsample=96000

View File

@ -68,7 +68,7 @@ subroutine m65c(dd,ss,savg,nparams0)
character*20 datetime
common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, &
ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, &
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode, &
nfast,nsave,mycall,mygrid,hiscall,hisgrid,datetime
equivalence (nparams,fcenter)

View File

@ -1,7 +1,7 @@
subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
mousedf,mousefqso,nagain,ndecdone,ndiskdat,nfshift,ndphi, &
nfcal,nkeep,mcall3b,nsum,nsave,nxant,rmsdd,mycall,mygrid, &
neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,mode65,nfast)
neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,nmode,nfast)
! Processes timf2 data from Linrad to find and decode JT65 signals.
@ -17,7 +17,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
real*8 fcenter
character*22 msg(MAXMSG)
character*3 shmsg0(4)
character mycall*12,hiscall*12,mygrid*6,hisgrid*6,grid*6,cp*1
character mycall*12,hiscall*12,mygrid*6,hisgrid*6,grid*6,cp*1,cm*1
integer indx(MAXMSG),nsiz(MAXMSG)
logical done(MAXMSG)
logical xpol,bqra64
@ -27,13 +27,16 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
common/c3com/ mcall3a
common/testcom/ifreq
data blank/' '/
data blank/' '/,cm/'#'/
data shmsg0/'ATT','RO ','RRR','73 '/
data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/
save
bqra64=nfast.ge.100
nfast=mod(nfast,100)
mode65=mod(nmode,10)
if(mode65.eq.3) mode65=4
modeqra64=nmode/10
bqra64=modeqra64.gt.0
mcall3a=mcall3b
mousefqso0=mousefqso
xpol=(nxpol.ne.0)
@ -222,7 +225,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
if(nqd.eq.2) then
call timer('qra64 ',0)
call qra64b(nutc,nqd,ikhz,mousedf,ntol,xpol,mycall, &
hiscall,hisgrid)
hiscall,hisgrid,nwrite_qra64)
call timer('qra64 ',1)
cycle
endif
@ -323,22 +326,22 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
if(ndphi.eq.0) then
write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2, &
decoded,nkv,nqual,ntxpol,cp
1010 format('!',i3,i5,i4,i7.6,f5.1,i4,2x,a22,i2,i5,i5,1x,a1)
cm,decoded,nkv,nqual,ntxpol,cp
1010 format('!',i3,i5,i4,i6.4,1x,f5.1,i4,a1,1x,a22,i2,i5,i5,1x,a1)
else
if(iloop.ge.1) qphi(iloop)=sig(k,10)
write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2, &
decoded,nkv,nqual,30*iloop
cm,decoded,nkv,nqual,30*iloop
write(27,1011) 30*iloop,nkHz,ndf,npol,nutc, &
dt,sync2,nkv,nqual,decoded
1011 format(i3,i4,i5,i4,i7.6,f5.1,f7.1,i3,i5,2x,a22)
dt,sync2,nkv,nqual,cm,decoded
1011 format(i3,i4,i5,i4,i6.4,1x,f5.1,f7.1,i3,i5,a1,1x,a22)
endif
endif
enddo
if(nwrite.eq.0) then
if(nwrite.eq.0 .and. nwrite_qra64.eq.0) then
write(*,1012) mousefqso,nutc
1012 format('!',i3,9x,i7.6,' ')
1012 format('!',i3,9x,i6.4,' ')
endif
endif
@ -457,14 +460,14 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
nsync2,nutc,decoded,cp,cmode
write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
nsync2,nutc,decoded,cp,cmode
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i7.6,2x,a22,2x,a1,3x,a2)
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,2x,a1,3x,a2)
endif
endif
j=j+nsiz(n)
enddo
write(26,1015) nutc
1015 format(39x,i6.6)
1015 format(38x,i6.4,' ')
call flush(21)
call flush(26)
call display(nkeep,ftol)

View File

@ -1,5 +1,5 @@
subroutine qra64b(nutc,nqd,ikhz,mousedf,ntol,xpol,mycall_12,hiscall_12, &
hisgrid_6)
hisgrid_6,nwrite_qra64)
parameter (NFFT1=5376000) !56*96000
parameter (NFFT2=336000) !56*6000 (downsampled by 1/16)
@ -28,7 +28,7 @@ subroutine qra64b(nutc,nqd,ikhz,mousedf,ntol,xpol,mycall_12,hiscall_12, &
! write(67) nutc,cx,cy
call qra64c(cx,cy,nutc,nqd,ikhz,mousedf,ntol,xplo,mycall_12, &
hiscall_12,hisgrid_6)
hiscall_12,hisgrid_6,nwrite_qra64)
close(17)
return

View File

@ -1,5 +1,5 @@
subroutine qra64c(cx,cy,nutc,nqd,ikhz,nfqso,ntol,xpol,mycall_12, &
hiscall_12,hisgrid_6)
hiscall_12,hisgrid_6,nwrite_qra64)
use packjt
parameter (NFFT2=336000) !56*6000 (downsampled by 1/16)
@ -13,7 +13,7 @@ subroutine qra64c(cx,cy,nutc,nqd,ikhz,nfqso,ntol,xpol,mycall_12, &
character*12 mycall_12,hiscall_12
character*6 mycall,hiscall,hisgrid_6
character*4 hisgrid
character*1 cp
character*1 cp,cmode
logical xpol,ltext
complex cx(0:NFFT2-1),cy(0:NFFT2-1)
complex c00(0:720000) !Complex spectrum of dd()
@ -24,7 +24,7 @@ subroutine qra64c(cx,cy,nutc,nqd,ikhz,nfqso,ntol,xpol,mycall_12, &
integer dat4(12) !Decoded message (as 12 integers)
integer dat4x(12)
integer nap(0:11)
data nap/0,2,3,2,3,4,2,3,6,4,6,6/
data nap/0,2,3,2,3,4,2,3,6,4,6,6/,cmode/'$'/
data nc1z/-1/,nc2z/-1/,ng2z/-1/,maxaptypez/-1/
save
@ -37,6 +37,7 @@ subroutine qra64c(cx,cy,nutc,nqd,ikhz,nfqso,ntol,xpol,mycall_12, &
emedelay=2.5
irc=-1
nwrite_qra64=0
decoded=' '
nft=99
mycall=mycall_12(1:6)
@ -160,22 +161,17 @@ subroutine qra64c(cx,cy,nutc,nqd,ikhz,nfqso,ntol,xpol,mycall_12, &
if(nSubmode.eq.4) nsnr=nint(10.0*log10(sy)-24.0) !E
endif
! write(*,1011) nutc/100,nsnr,dtx,nfreq,decoded
!1011 format(i4.4,i4,f5.1,i5,1x,2x,1x,a22)
npol=0
cp='H'
ntxpol=0
if(irc.ge.0) then
write(*,1010) ikHz,nfreq,npol,nutc/100,dtx,nsnr,decoded,irc,ntxpol,cp
!1010 format('!',i3,i5,i4,i7.6,f5.1,i4,2x,a22,i2,i5,i5,1x,a1)
!1010 format(i3,i5,i4,i5.4,f5.1,i5,2x,a22,i2,i5,1x,a1)
1010 format('!',i3,i5,i4,i6.4,f5.1,i5,2x,a22,i2,i5,1x,a1)
write(*,1010) ikHz,nfreq,npol,nutc,dtx,nsnr,cmode,decoded,irc,ntxpol,cp
1010 format('!',i3,i5,i4,i6.4,f5.1,i5,a1,1x,a22,i2,i5,1x,a1)
nwrite_qra64=nwrite_qra64+1
else
write(*,1010) ikHz,nfreq,npol,nutc/100,dtx,nsnr
write(*,1010) ikHz,nfreq,npol,nutc,dtx,nsnr,cmode
nwrite_qra64=nwrite_qra64+1
endif
! goto 1
999 return
end subroutine qra64c

View File

@ -61,11 +61,18 @@ MainWindow::MainWindow(QWidget *parent) :
ui->actionBlue->setActionGroup(paletteGroup);
QActionGroup* modeGroup = new QActionGroup(this);
ui->actionNoJT65->setActionGroup(modeGroup);
ui->actionJT65A->setActionGroup(modeGroup);
ui->actionJT65B->setActionGroup(modeGroup);
ui->actionJT65C->setActionGroup(modeGroup);
ui->actionJT65B2->setActionGroup(modeGroup);
ui->actionJT65C2->setActionGroup(modeGroup);
QActionGroup* modeGroup2 = new QActionGroup(this);
ui->actionNoQRA64->setActionGroup(modeGroup2);
ui->actionQRA64A->setActionGroup(modeGroup2);
ui->actionQRA64B->setActionGroup(modeGroup2);
ui->actionQRA64C->setActionGroup(modeGroup2);
ui->actionQRA64D->setActionGroup(modeGroup2);
ui->actionQRA64E->setActionGroup(modeGroup2);
QActionGroup* saveGroup = new QActionGroup(this);
ui->actionSave_all->setActionGroup(saveGroup);
@ -152,7 +159,8 @@ MainWindow::MainWindow(QWidget *parent) :
m_colors="000066ff0000ffff00969696646464";
m_nfast=1;
m_nsave=0;
m_bQRA64=false;
m_modeJT65=0;
m_modeQRA64=0;
bTune=false;
txPower=100;
iqAmp=0;
@ -219,9 +227,6 @@ MainWindow::MainWindow(QWidget *parent) :
if(m_mode=="JT65A") on_actionJT65A_triggered();
if(m_mode=="JT65B") on_actionJT65B_triggered();
if(m_mode=="JT65C") on_actionJT65C_triggered();
if(m_mode=="JT65B2") on_actionJT65B2_triggered();
if(m_mode=="JT65C2") on_actionJT65C2_triggered();
future1 = new QFuture<void>;
watcher1 = new QFutureWatcher<void>;
connect(watcher1, SIGNAL(finished()),this,SLOT(diskDat()));
@ -367,12 +372,13 @@ void MainWindow::writeSettings()
settings.setValue("PaletteAFMHot",ui->actionAFMHot->isChecked());
settings.setValue("PaletteBlue",ui->actionBlue->isChecked());
settings.setValue("Mode",m_mode);
settings.setValue("nModeJT65",m_modeJT65);
settings.setValue("nModeQRA64",m_modeQRA64);
settings.setValue("SaveNone",ui->actionNone->isChecked());
settings.setValue("SaveAll",ui->actionSave_all->isChecked());
settings.setValue("NDepth",m_ndepth);
settings.setValue("NEME",m_onlyEME);
settings.setValue("KB8RQ",m_kb8rq);
settings.setValue("DecodeQRA64",m_bQRA64);
settings.setValue("NB",m_NB);
settings.setValue("NBslider",m_NBslider);
settings.setValue("GainX",(double)m_gainx);
@ -451,11 +457,16 @@ void MainWindow::readSettings()
"PaletteCuteSDR",true).toBool());
ui->actionLinrad->setChecked(settings.value(
"PaletteLinrad",false).toBool());
ui->actionAFMHot->setChecked(settings.value(
"PaletteAFMHot",false).toBool());
ui->actionBlue->setChecked(settings.value(
"PaletteBlue",false).toBool());
m_mode=settings.value("Mode","JT65B").toString();
m_modeJT65=settings.value("nModeJT65",2).toInt();
m_modeQRA64=settings.value("nModeQRA64",2).toInt();
if(m_modeQRA64==0) ui->actionNoQRA64->setChecked(true);
if(m_modeQRA64==1) ui->actionQRA64A->setChecked(true);
if(m_modeQRA64==2) ui->actionQRA64B->setChecked(true);
if(m_modeQRA64==3) ui->actionQRA64C->setChecked(true);
if(m_modeQRA64==4) ui->actionQRA64D->setChecked(true);
if(m_modeQRA64==5) ui->actionQRA64E->setChecked(true);
ui->actionNone->setChecked(settings.value("SaveNone",true).toBool());
ui->actionSave_all->setChecked(settings.value("SaveAll",false).toBool());
m_saveAll=ui->actionSave_all->isChecked();
@ -464,8 +475,6 @@ void MainWindow::readSettings()
ui->actionOnly_EME_calls->setChecked(m_onlyEME);
m_kb8rq=settings.value("KB8RQ",false).toBool();
ui->actionF4_sets_Tx6->setChecked(m_kb8rq);
m_bQRA64=settings.value("DecodeQRA64",false).toBool();
ui->actionDecode_QRA64_near_QSO_frequency->setChecked(m_bQRA64);
m_NB=settings.value("NB",false).toBool();
ui->NBcheckBox->setChecked(m_NB);
m_NBslider=settings.value("NBslider",40).toInt();
@ -591,13 +600,6 @@ void MainWindow::dataSink(int k)
if(m_saveAll and !m_diskData) {
QString fname=m_saveDir + "/" + t.date().toString("yyMMdd") + "_" +
t.time().toString("hhmm");
if(m_nfast==2) {
if(t.time().second() < 30) {
fname += "00";
} else {
fname += "30";
}
}
if(m_xpol) fname += ".tf2";
if(!m_xpol) fname += ".iq";
*future2 = QtConcurrent::run(savetf2, fname, m_xpol, m_nfast);
@ -1034,14 +1036,11 @@ void MainWindow::on_actionOpen_next_in_directory_triggered() //Open Next
QStringList list;
if(m_xpol) {
list= fi.dir().entryList().filter(".tf2");
// len=15;
} else {
list= fi.dir().entryList().filter(".iq");
// len=14;
}
for (i = 0; i < list.size()-1; ++i) {
if(i==list.size()-2) m_loopall=false;
// qDebug() << len << i << list.at(i) << list.at(i).length();
len=list.at(i).length();
if(list.at(i)==m_path.right(len)) {
int n=m_path.length();
@ -1222,9 +1221,7 @@ void MainWindow::decode() //decode()
int imin=ms/60000;
int ihr=imin/60;
imin=imin % 60;
int isec=(ms/1000) % 60;
datcom_.nutc=100*(100*ihr + imin);
if((m_mode=="JT65B2" or m_mode=="JT65C2") and isec>30) datcom_.nutc += 30;
datcom_.nutc=100*ihr + imin;
}
datcom_.idphi=m_dPhi;
@ -1260,9 +1257,8 @@ void MainWindow::decode() //decode()
if(!m_fs96000) datcom_.nfsample=95238;
datcom_.nxpol=0;
if(m_xpol) datcom_.nxpol=1;
datcom_.mode65=m_mode65;
datcom_.nmode=10*m_modeQRA64 + m_modeJT65;
datcom_.nfast=m_nfast;
if(m_bQRA64) datcom_.nfast += 100;
datcom_.nsave=m_nsave;
QString mcall=(m_myCall+" ").mid(0,12);
@ -1330,7 +1326,7 @@ void MainWindow::readFromStdout() //readFromStdout
QString t2;
t2.sprintf("Avg: %d",m_nsum);
lab6->setText(t2);
if(m_bQRA64) g_pWideGraph->setDecodeFinished();
if(m_modeQRA64>0) g_pWideGraph->setDecodeFinished();
}
if(t.indexOf("<DecodeFinished>") >= 0) {
if(m_widebandDecode) {
@ -1543,7 +1539,6 @@ void MainWindow::guiUpdate()
}
if(nsec != m_sec0) { //Once per second
// qDebug() << txPower << iqAmp << iqPhase;
// qDebug() << "B" << bTune << bTxTime << btxok;
soundInThread.setForceCenterFreqMHz(g_pWideGraph->m_dForceCenterFreq);
soundInThread.setForceCenterFreqBool(g_pWideGraph->m_bForceCenterFreq);
@ -2048,9 +2043,14 @@ void MainWindow::on_actionErase_map65_tx_log_triggered() //Erase Tx log
}
}
void MainWindow::on_actionNoJT65_triggered()
{
m_modeJT65=0;
}
void MainWindow::on_actionJT65A_triggered()
{
m_mode="JT65A";
m_modeJT65=1;
m_mode65=1;
m_nfast=1;
m_TRperiod=60;
@ -2066,6 +2066,7 @@ void MainWindow::on_actionJT65A_triggered()
void MainWindow::on_actionJT65B_triggered()
{
m_mode="JT65B";
m_modeJT65=2;
m_mode65=2;
m_nfast=1;
m_TRperiod=60;
@ -2081,6 +2082,7 @@ void MainWindow::on_actionJT65B_triggered()
void MainWindow::on_actionJT65C_triggered()
{
m_mode="JT65C";
m_modeJT65=3;
m_mode65=4;
m_nfast=1;
m_TRperiod=60;
@ -2093,36 +2095,38 @@ void MainWindow::on_actionJT65C_triggered()
ui->actionJT65C->setChecked(true);
}
void MainWindow::on_actionJT65B2_triggered()
void MainWindow::on_actionNoQRA64_triggered()
{
m_mode="JT65B2";
m_mode65=2;
m_nfast=2;
m_TRperiod=30;
soundInThread.setPeriod(m_TRperiod);
soundOutThread.setPeriod(m_TRperiod);
g_pWideGraph->setMode65(m_mode65);
g_pWideGraph->setPeriod(m_TRperiod);
lab5->setStyleSheet("QLabel{background-color: #7fff00}");
lab5->setText(m_mode);
ui->actionJT65B2->setChecked(true);
m_modeQRA64=0;
}
void MainWindow::on_actionJT65C2_triggered()
void MainWindow::on_actionQRA64A_triggered()
{
m_mode="JT65C2";
m_mode65=4;
m_nfast=2;
m_TRperiod=30;
soundInThread.setPeriod(m_TRperiod);
soundOutThread.setPeriod(m_TRperiod);
g_pWideGraph->setMode65(m_mode65);
g_pWideGraph->setPeriod(m_TRperiod);
lab5->setStyleSheet("QLabel{background-color: #97ffff}");
lab5->setText(m_mode);
ui->actionJT65C2->setChecked(true);
m_modeQRA64=1;
}
void MainWindow::on_actionQRA64B_triggered()
{
m_modeQRA64=2;
}
void MainWindow::on_actionQRA64C_triggered()
{
m_modeQRA64=3;
}
void MainWindow::on_actionQRA64D_triggered()
{
m_modeQRA64=4;
}
void MainWindow::on_actionQRA64E_triggered()
{
m_modeQRA64=5;
}
void MainWindow::on_NBcheckBox_toggled(bool checked)
{
m_NB=checked;
@ -2165,8 +2169,3 @@ void MainWindow::on_actionTx_Tune_triggered()
g_pTxTune->set_txPower(txPower);
g_pTxTune->show();
}
void MainWindow::on_actionDecode_QRA64_near_QSO_frequency_triggered(bool b)
{
m_bQRA64=b;
}

View File

@ -124,11 +124,15 @@ private slots:
void on_actionAFMHot_triggered();
void on_actionBlue_triggered();
void on_actionFUNcube_Dongle_triggered();
void on_actionJT65B2_triggered();
void on_actionJT65C2_triggered();
void on_actionEdit_wsjt_log_triggered();
void on_actionTx_Tune_triggered();
void on_actionDecode_QRA64_near_QSO_frequency_triggered(bool b);
void on_actionQRA64A_triggered();
void on_actionQRA64B_triggered();
void on_actionNoJT65_triggered();
void on_actionNoQRA64_triggered();
void on_actionQRA64C_triggered();
void on_actionQRA64D_triggered();
void on_actionQRA64E_triggered();
private:
Ui::MainWindow *ui;
@ -166,6 +170,8 @@ private:
qint32 m_nsum;
qint32 m_nsave;
qint32 m_TRperiod;
qint32 m_modeJT65;
qint32 m_modeQRA64;
double m_fAdd;
// double m_IQamp;
@ -197,7 +203,6 @@ private:
bool m_10db;
bool m_initIQplus;
bool m_bIQxt;
bool m_bQRA64;
float m_gainx;
float m_gainy;

View File

@ -59,7 +59,7 @@
</size>
</property>
<property name="title">
<string> Freq DF Pol UTC DT dB KV DS TxPol</string>
<string> Freq DF Pol UTC DT dB</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
@ -1164,11 +1164,17 @@ p, li { white-space: pre-wrap; }
<property name="title">
<string>Mode</string>
</property>
<addaction name="actionNoJT65"/>
<addaction name="actionJT65A"/>
<addaction name="actionJT65B"/>
<addaction name="actionJT65C"/>
<addaction name="actionJT65B2"/>
<addaction name="actionJT65C2"/>
<addaction name="separator"/>
<addaction name="actionNoQRA64"/>
<addaction name="actionQRA64A"/>
<addaction name="actionQRA64B"/>
<addaction name="actionQRA64C"/>
<addaction name="actionQRA64D"/>
<addaction name="actionQRA64E"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuSetup"/>
@ -1512,22 +1518,6 @@ p, li { white-space: pre-wrap; }
<string>FUNcube Dongle Settings</string>
</property>
</action>
<action name="actionJT65B2">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>JT65B2</string>
</property>
</action>
<action name="actionJT65C2">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>JT65C2</string>
</property>
</action>
<action name="actionEdit_wsjt_log">
<property name="text">
<string>Edit wsjt.log</string>
@ -1552,6 +1542,65 @@ p, li { white-space: pre-wrap; }
<string>Decode QRA64 near QSO frequency</string>
</property>
</action>
<action name="actionQRA64A">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>QRA64A</string>
</property>
</action>
<action name="actionQRA64B">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>QRA64B</string>
</property>
</action>
<action name="actionNoJT65">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>No JT65</string>
</property>
</action>
<action name="actionNoQRA64">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>No QRA64</string>
</property>
</action>
<action name="actionQRA64C">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>QRA64C</string>
</property>
</action>
<action name="actionQRA64D">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>QRA64D</string>
</property>
</action>
<action name="actionQRA64E">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>QRA64E</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>