mirror of https://github.com/saitohirga/WSJT-X.git
Merge branch 'feat-map65-integration' of bitbucket.org:k1jt/wsjtx into feat-map65-integration
This commit is contained in:
commit
71b9ec921b
|
@ -88,6 +88,7 @@ contains
|
||||||
npts=ntrperiod*12000
|
npts=ntrperiod*12000
|
||||||
nfft1=ntrperiod*12000
|
nfft1=ntrperiod*12000
|
||||||
nfft2=ntrperiod*6000
|
nfft2=ntrperiod*6000
|
||||||
|
npasses=1
|
||||||
|
|
||||||
! Determine the T/R sequence: iseq=0 (even), or iseq=1 (odd)
|
! Determine the T/R sequence: iseq=0 (even), or iseq=1 (odd)
|
||||||
n=nutc
|
n=nutc
|
||||||
|
|
|
@ -365,28 +365,22 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||||
freq=cand(icand)%f+nkhz_center-48.0-1.27046
|
freq=cand(icand)%f+nkhz_center-48.0-1.27046
|
||||||
nhzdiff=nint(1000.0*(freq-mousefqso)-mousedf)
|
nhzdiff=nint(1000.0*(freq-mousefqso)-mousedf)
|
||||||
if(nqd.eq.1 .and. abs(nhzdiff).gt.ntol) cycle
|
if(nqd.eq.1 .and. abs(nhzdiff).gt.ntol) cycle
|
||||||
! ikhz=nint(freq)
|
|
||||||
ikhz=mousefqso
|
ikhz=mousefqso
|
||||||
q65b_called=.true.
|
q65b_called=.true.
|
||||||
f0=cand(icand)%f
|
f0=cand(icand)%f
|
||||||
! write(*,3002) nqd,f0
|
|
||||||
!3002 format('=A',i3,f10.3)
|
|
||||||
call timer('q65b ',0)
|
call timer('q65b ',0)
|
||||||
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, &
|
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
|
||||||
mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec)
|
xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec)
|
||||||
call timer('q65b ',1)
|
call timer('q65b ',1)
|
||||||
if(idec.ge.0) candec(icand)=.true.
|
if(idec.ge.0) candec(icand)=.true.
|
||||||
enddo
|
enddo
|
||||||
if(.not.q65b_called) then
|
if(.not.q65b_called) then
|
||||||
freq=mousefqso + 0.001*mousedf
|
freq=mousefqso + 0.001*mousedf
|
||||||
! ikhz=nint(freq)
|
|
||||||
ikhz=mousefqso
|
ikhz=mousefqso
|
||||||
f0=freq - (nkhz_center-48.0-1.27046) !### ??? ###
|
f0=freq - (nkhz_center-48.0-1.27046) !### ??? ###
|
||||||
! write(*,3004) nqd,f0
|
|
||||||
!3004 format('=B',i3,f10.3)
|
|
||||||
call timer('q65b ',0)
|
call timer('q65b ',0)
|
||||||
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, &
|
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
|
||||||
mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec)
|
xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec)
|
||||||
call timer('q65b ',1)
|
call timer('q65b ',1)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -418,11 +412,9 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||||
if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle
|
if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle
|
||||||
ikhz=nint(freq)
|
ikhz=nint(freq)
|
||||||
f0=cand(icand)%f
|
f0=cand(icand)%f
|
||||||
! write(*,3006) nqd,f0
|
|
||||||
!3006 format('=C',i3,f10.3)
|
|
||||||
call timer('q65b ',0)
|
call timer('q65b ',0)
|
||||||
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, &
|
call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
|
||||||
mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65,f0,idec)
|
xpol,mycall,hiscall,hisgrid,mode_q65,f0,fqso,nagain,idec)
|
||||||
call timer('q65b ',1)
|
call timer('q65b ',1)
|
||||||
if(idec.ge.0) candec(icand)=.true.
|
if(idec.ge.0) candec(icand)=.true.
|
||||||
enddo ! icand
|
enddo ! icand
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||||
mycall0,hiscall0,hisgrid,mode_q65,f0,idec)
|
mycall0,hiscall0,hisgrid,mode_q65,f0,fqso,nagain,idec)
|
||||||
|
|
||||||
! This routine provides an interface between MAP65 and the Q65 decoder
|
! This routine provides an interface between MAP65 and the Q65 decoder
|
||||||
! in WSJT-X. All arguments are input data obtained from the MAP65 GUI.
|
! in WSJT-X. All arguments are input data obtained from the MAP65 GUI.
|
||||||
|
@ -63,10 +63,10 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||||
df=96000.0/nfft1
|
df=96000.0/nfft1
|
||||||
endif
|
endif
|
||||||
nh=nfft2/2
|
nh=nfft2/2
|
||||||
|
f_mouse=1000.0*(fqso+48.0) + mousedf
|
||||||
|
f_ipk=ipk*df3
|
||||||
k0=nint((ipk*df3-1000.0)/df)
|
k0=nint((ipk*df3-1000.0)/df)
|
||||||
|
if(nagain.eq.1) k0=nint((f_mouse-1000.0)/df)
|
||||||
! write(*,3001) nqd,f0+0.001*nfcal,0.001*ipk*df3,0.001*k0*df+1.0,mousedf,ipk,snr1
|
|
||||||
!3001 format('=D',i3,3f10.3,2i7,f7.2)
|
|
||||||
|
|
||||||
if(k0.lt.nh .or. k0.gt.nfft1-nh) go to 900
|
if(k0.lt.nh .or. k0.gt.nfft1-nh) go to 900
|
||||||
if(snr1.lt.1.5) go to 900 !### Threshold needs work? ###
|
if(snr1.lt.1.5) go to 900 !### Threshold needs work? ###
|
||||||
|
@ -120,8 +120,12 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||||
close(30)
|
close(30)
|
||||||
|
|
||||||
nsubmode=mode_q65-1
|
nsubmode=mode_q65-1
|
||||||
nfa=max(100,1000-ntol)
|
nfa=100
|
||||||
nfb=min(2500,1000+ntol)
|
nfb=1900
|
||||||
|
if(nagain.eq.1) then
|
||||||
|
nfa=max(100,1000-ntol)
|
||||||
|
nfb=min(2500,1000+ntol)
|
||||||
|
endif
|
||||||
newdat=1
|
newdat=1
|
||||||
nagain=0
|
nagain=0
|
||||||
nsnr0=-99 !Default snr for no decode
|
nsnr0=-99 !Default snr for no decode
|
||||||
|
@ -129,12 +133,13 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||||
! NB: Frequency of ipk is now shifted to 1000 Hz.
|
! NB: Frequency of ipk is now shifted to 1000 Hz.
|
||||||
call map65_mmdec(nutc,iwave,nqd,nsubmode,nfa,nfb,1000,ntol, &
|
call map65_mmdec(nutc,iwave,nqd,nsubmode,nfa,nfb,1000,ntol, &
|
||||||
newdat,nagain,mycall,hiscall,hisgrid)
|
newdat,nagain,mycall,hiscall,hisgrid)
|
||||||
|
|
||||||
MHz=fcenter
|
MHz=fcenter
|
||||||
freq0=MHz + 0.001*ikhz
|
freq0=MHz + 0.001*ikhz
|
||||||
if(nsnr0.gt.-99) then
|
if(nsnr0.gt.-99) then
|
||||||
nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
|
nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
|
||||||
if(nqd.eq.1 .and. abs(nfreq0-1000.0).lt.0.9*ntol) then
|
nq65df=nq65df + nfreq0 - 1000
|
||||||
|
|
||||||
|
if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then
|
||||||
write(line,1020) ikhz,nq65df,45*(ipol-1),nutc,xdt0,nsnr0,msg0(1:27),cq0
|
write(line,1020) ikhz,nq65df,45*(ipol-1),nutc,xdt0,nsnr0,msg0(1:27),cq0
|
||||||
1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3)
|
1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3)
|
||||||
write(*,1100) trim(line)
|
write(*,1100) trim(line)
|
||||||
|
|
|
@ -994,6 +994,11 @@ void MainWindow::on_actionQSG_MAP65_v3_triggered()
|
||||||
QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/MAP65_3.0_Quick_Start.pdf"});
|
QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/MAP65_3.0_Quick_Start.pdf"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionQ65_Sensitivity_in_MAP65_3_0_triggered()
|
||||||
|
{
|
||||||
|
QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/Q65_Sensitivity_in_MAP65.pdf"});
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionAstro_Data_triggered() //Display Astro
|
void MainWindow::on_actionAstro_Data_triggered() //Display Astro
|
||||||
{
|
{
|
||||||
if (m_astro_window ) m_astro_window->show();
|
if (m_astro_window ) m_astro_window->show();
|
||||||
|
@ -1807,7 +1812,10 @@ void MainWindow::doubleClickOnMessages(QString hiscall, QString t2)
|
||||||
lookup();
|
lookup();
|
||||||
}
|
}
|
||||||
|
|
||||||
genStdMsgs("");
|
QString rpt="";
|
||||||
|
if(m_modeTx=="Q65") rpt=t2.mid(20,3);
|
||||||
|
genStdMsgs(rpt);
|
||||||
|
|
||||||
if(t2.indexOf(m_myCall)>0) {
|
if(t2.indexOf(m_myCall)>0) {
|
||||||
m_ntx=2;
|
m_ntx=2;
|
||||||
ui->txrb2->setChecked(true);
|
ui->txrb2->setChecked(true);
|
||||||
|
|
|
@ -79,6 +79,7 @@ private slots:
|
||||||
void on_actionOnline_Users_Guide_triggered();
|
void on_actionOnline_Users_Guide_triggered();
|
||||||
void on_actionQSG_Q65_triggered();
|
void on_actionQSG_Q65_triggered();
|
||||||
void on_actionQSG_MAP65_v3_triggered();
|
void on_actionQSG_MAP65_v3_triggered();
|
||||||
|
void on_actionQ65_Sensitivity_in_MAP65_3_0_triggered();
|
||||||
void on_actionWide_Waterfall_triggered();
|
void on_actionWide_Waterfall_triggered();
|
||||||
void on_actionBand_Map_triggered();
|
void on_actionBand_Map_triggered();
|
||||||
void on_actionMessages_triggered();
|
void on_actionMessages_triggered();
|
||||||
|
|
|
@ -276,7 +276,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string> DX Call Grid </string>
|
<string> DX Call DX Grid </string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QPushButton" name="pushButton">
|
<widget class="QPushButton" name="pushButton">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
@ -1218,6 +1218,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<addaction name="actionOnline_Users_Guide"/>
|
<addaction name="actionOnline_Users_Guide"/>
|
||||||
<addaction name="actionQSG_Q65"/>
|
<addaction name="actionQSG_Q65"/>
|
||||||
<addaction name="actionQSG_MAP65_v3"/>
|
<addaction name="actionQSG_MAP65_v3"/>
|
||||||
|
<addaction name="actionQ65_Sensitivity_in_MAP65_3_0"/>
|
||||||
<addaction name="actionKeyboard_shortcuts"/>
|
<addaction name="actionKeyboard_shortcuts"/>
|
||||||
<addaction name="actionSpecial_mouse_commands"/>
|
<addaction name="actionSpecial_mouse_commands"/>
|
||||||
<addaction name="actionAvailable_suffixes_and_add_on_prefixes"/>
|
<addaction name="actionAvailable_suffixes_and_add_on_prefixes"/>
|
||||||
|
@ -1674,6 +1675,11 @@ p, li { white-space: pre-wrap; }
|
||||||
<string>Quick-Start Guide to MAP65 3.0 and WSJT-X 2.5.0</string>
|
<string>Quick-Start Guide to MAP65 3.0 and WSJT-X 2.5.0</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionQ65_Sensitivity_in_MAP65_3_0">
|
||||||
|
<property name="text">
|
||||||
|
<string>Q65 Sensitivity in MAP65 3.0</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
@ -1692,8 +1698,8 @@ p, li { white-space: pre-wrap; }
|
||||||
<slot>update()</slot>
|
<slot>update()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>264</x>
|
<x>269</x>
|
||||||
<y>275</y>
|
<y>255</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>126</x>
|
<x>126</x>
|
||||||
|
|
|
@ -56,8 +56,8 @@ void Messages::setText(QString t, QString t2)
|
||||||
if(t2.mid(i-1,1)==" ") continue;
|
if(t2.mid(i-1,1)==" ") continue;
|
||||||
}
|
}
|
||||||
int n=line.mid(50,2).toInt();
|
int n=line.mid(50,2).toInt();
|
||||||
if(line.indexOf(":")>0) n=-1;
|
// if(line.indexOf(":")>0) n=-1;
|
||||||
if(n==-1) ui->messagesTextBrowser->setTextColor("#ffffff"); // white
|
// if(n==-1) ui->messagesTextBrowser->setTextColor("#ffffff"); // white
|
||||||
if(n==0) ui->messagesTextBrowser->setTextColor(m_color0);
|
if(n==0) ui->messagesTextBrowser->setTextColor(m_color0);
|
||||||
if(n==1) ui->messagesTextBrowser->setTextColor(m_color1);
|
if(n==1) ui->messagesTextBrowser->setTextColor(m_color1);
|
||||||
if(n==2) ui->messagesTextBrowser->setTextColor(m_color2);
|
if(n==2) ui->messagesTextBrowser->setTextColor(m_color2);
|
||||||
|
|
Loading…
Reference in New Issue