mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 06:08:42 -05:00
Merge branch 'release-2.5.0'
This commit is contained in:
commit
fd326893be
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
|
||||
|
||||
include (set_build_type)
|
||||
# RC 0 or omitted is a development build, GA is a General Availability release build
|
||||
set_build_type (RC 2)
|
||||
set_build_type (RC 3)
|
||||
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
||||
|
||||
#
|
||||
|
19
NEWS
19
NEWS
@ -12,6 +12,25 @@
|
||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||
|
||||
|
||||
Release: WSJT-X 2.5.0-rc3
|
||||
Jul 3, 2021
|
||||
-------------------------
|
||||
|
||||
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||
in the package since WSJT-X 2.5.0-rc2 include the following
|
||||
enhancements and defect repairs:
|
||||
|
||||
MAP65:
|
||||
- Correct two defects that could cause "hung decoder" status
|
||||
- Translate reported frequencies so that |DF| <= 500 Hz for Q65
|
||||
decodes.
|
||||
- Provide access to Release Notes from the Help menu
|
||||
|
||||
WSJT-X:
|
||||
- Repair a long standing defect that caused UDP Protocol Heartbeat
|
||||
messages to not be sent when no other intervening messages are
|
||||
sent.
|
||||
|
||||
Release: WSJT-X 2.5.0-rc2
|
||||
Jun 28, 2021
|
||||
-------------------------
|
||||
|
@ -71,12 +71,12 @@ public:
|
||||
void heartbeat ();
|
||||
void closedown ();
|
||||
StreamStatus check_status (QDataStream const&) const;
|
||||
void send_message (QByteArray const&, bool queue_if_pending = true);
|
||||
void send_message (QDataStream const& out, QByteArray const& message, bool queue_if_pending = true)
|
||||
void send_message (QByteArray const&, bool queue_if_pending = true, bool allow_duplicates = false);
|
||||
void send_message (QDataStream const& out, QByteArray const& message, bool queue_if_pending = true, bool allow_duplicates = false)
|
||||
{
|
||||
if (OK == check_status (out))
|
||||
{
|
||||
send_message (message, queue_if_pending);
|
||||
send_message (message, queue_if_pending, allow_duplicates);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -197,7 +197,7 @@ void MessageClient::impl::start ()
|
||||
// clear any backlog
|
||||
while (pending_messages_.size ())
|
||||
{
|
||||
send_message (pending_messages_.dequeue (), false);
|
||||
send_message (pending_messages_.dequeue (), true, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -429,7 +429,7 @@ void MessageClient::impl::heartbeat ()
|
||||
out << NetworkMessage::Builder::schema_number // maximum schema number accepted
|
||||
<< version_.toUtf8 () << revision_.toUtf8 ();
|
||||
TRACE_UDP ("schema:" << schema_ << "max schema:" << NetworkMessage::Builder::schema_number << "version:" << version_ << "revision:" << revision_);
|
||||
send_message (out, message, false);
|
||||
send_message (out, message, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -444,13 +444,13 @@ void MessageClient::impl::closedown ()
|
||||
}
|
||||
}
|
||||
|
||||
void MessageClient::impl::send_message (QByteArray const& message, bool queue_if_pending)
|
||||
void MessageClient::impl::send_message (QByteArray const& message, bool queue_if_pending, bool allow_duplicates)
|
||||
{
|
||||
if (server_port_)
|
||||
{
|
||||
if (!server_.isNull ())
|
||||
{
|
||||
if (message != last_message_) // avoid duplicates
|
||||
if (allow_duplicates || message != last_message_) // avoid duplicates
|
||||
{
|
||||
if (is_multicast_address (server_))
|
||||
{
|
||||
|
@ -12,6 +12,25 @@
|
||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||
|
||||
|
||||
Release: WSJT-X 2.5.0-rc3
|
||||
Jul 3, 2021
|
||||
-------------------------
|
||||
|
||||
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||
in the package since WSJT-X 2.5.0-rc2 include the following
|
||||
enhancements and defect repairs:
|
||||
|
||||
MAP65:
|
||||
- Correct two defects that could cause "hung decoder" status
|
||||
- Translate reported frequencies so that |DF| <= 500 Hz for Q65
|
||||
decodes.
|
||||
- Provide access to Release Notes from the Help menu
|
||||
|
||||
WSJT-X:
|
||||
- Repair a long standing defect that caused UDP Protocol Heartbeat
|
||||
messages to not be sent when no other intervening messages are
|
||||
sent.
|
||||
|
||||
Release: WSJT-X 2.5.0-rc2
|
||||
Jun 28, 2021
|
||||
-------------------------
|
||||
@ -23,7 +42,7 @@ enhancements and defect repairs:
|
||||
MAP65:
|
||||
- Compute polarization angle for Xpol systems and display to nearest
|
||||
degree
|
||||
- Compute and display the recommended Tx polarization
|
||||
- Compute and display the recommended Tx polarization
|
||||
- Protect against Fortran bounds errors in several places
|
||||
- Insert leading 0 when needed in UTC hours and minutes on waterfall
|
||||
- Wideband Q65 synchronization corrected to include single-polarization
|
||||
|
@ -453,6 +453,7 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ntol,ndepth,ntrperiod,iavg,ipk,jpk, &
|
||||
ibest=0
|
||||
lagpk=0
|
||||
lagbest=0
|
||||
idrift_best=0
|
||||
do i=ia,ib
|
||||
ccfmax=0.
|
||||
do lag=lag1,lag2
|
||||
|
@ -59,8 +59,9 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0, &
|
||||
ndt=idt/2
|
||||
if(mod(idt,2).eq.0) ndt=-ndt
|
||||
jpk=jpk0 + nsps2*ndt/16 !tsym/16
|
||||
if(jpk.lt.0) jpk=0
|
||||
call spec64(c0,nsps2,mode_q65,jpk,s3,LL,NN)
|
||||
jpk=max(0,jpk)
|
||||
jpk=min(29000,jpk)
|
||||
call spec64(c0,npts2,nsps2,mode_q65,jpk,s3,LL,NN)
|
||||
call pctile(s3,LL*NN,40,base)
|
||||
s3=s3/base
|
||||
where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim
|
||||
|
@ -1,8 +1,7 @@
|
||||
subroutine spec64(c0,nsps,mode_q65,jpk,s3,LL,NN)
|
||||
subroutine spec64(c0,npts,nsps,mode_q65,jpk,s3,LL,NN)
|
||||
|
||||
parameter (MAXFFT=20736)
|
||||
!### Fix this:
|
||||
complex c0(0:1800000-1) !Complex spectrum of dd()
|
||||
complex c0(0:npts-1) !Complex spectrum of dd()
|
||||
complex cs(0:MAXFFT-1) !Complex symbol spectrum
|
||||
real s3(LL,NN) !Synchronized symbol spectra
|
||||
real xbase0(LL),xbase(LL)
|
||||
@ -21,7 +20,11 @@ subroutine spec64(c0,nsps,mode_q65,jpk,s3,LL,NN)
|
||||
j=j+1
|
||||
ja=(k-1)*nsps + jpk
|
||||
jb=ja+nsps-1
|
||||
cs(0:nfft-1)=c0(ja:jb)
|
||||
if(ja.lt.0) ja=0
|
||||
if(jb.gt.npts-1) jb=npts-1
|
||||
nz=jb-ja
|
||||
cs(0:nz)=c0(ja:jb)
|
||||
if(nz.lt.nfft-1) cs(nz+1:)=0.
|
||||
call four2a(cs,nsps,1,-1,1) !c2c FFT to frequency
|
||||
do ii=1,LL
|
||||
i=ii-65+mode_q65 !mode_q65 = 1 2 4 8 16 for Q65 A B C D E
|
||||
|
@ -11,7 +11,7 @@ program m65
|
||||
! 13 map65.log
|
||||
! 14
|
||||
! 15
|
||||
! 16
|
||||
! 16 tquick log
|
||||
! 17 saved *.tf2 files
|
||||
! 18 test file to be transmitted (wsjtgen.f90)
|
||||
! 19 livecq.txt
|
||||
|
@ -37,6 +37,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||
data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/
|
||||
save
|
||||
|
||||
call sec0(0,tquick)
|
||||
nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
|
||||
mfa=nfa-nkhz_center+48
|
||||
mfb=nfb-nkhz_center+48
|
||||
@ -381,6 +382,11 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||
write(*,1013) nsum,nsave
|
||||
1013 format('<QuickDecodeDone>',2i4)
|
||||
flush(6)
|
||||
call sec0(1,tquick)
|
||||
open(16,file='tquick.dat',status='unknown',access='append')
|
||||
write(16,1016) nutc,tquick
|
||||
1016 format(i4.4,f7.1)
|
||||
close(16)
|
||||
endif
|
||||
if(nqd.eq.1 .and. nagain.eq.1) go to 900
|
||||
|
||||
@ -481,9 +487,9 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
||||
write(26,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,i5.4,4x,a22,2x,a1,3x,a2)
|
||||
write(21,1016) f0,ndf,dt,npol,nsync2,nutc,decoded,cp, &
|
||||
write(21,1100) f0,ndf,dt,npol,nsync2,nutc,decoded,cp, &
|
||||
cmode(1:1),cmode(2:2)
|
||||
1016 format(f8.3,i5,f5.1,2i4,i5.4,2x,a22,2x,a1,3x,a1,1x,a1)
|
||||
1100 format(f8.3,i5,f5.1,2i4,i5.4,2x,a22,2x,a1,3x,a1,1x,a1)
|
||||
|
||||
! write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
||||
! nutc,decoded,cp,cmode
|
||||
|
@ -56,15 +56,16 @@ subroutine polfit(y,npts,a)
|
||||
deltaa(j)=deltaa(j)*fn/3.
|
||||
! write(*,4000) iter,j,a,deltaa,chisq2
|
||||
!4000 format(2i2,2(2x,3f8.2),f12.5)
|
||||
enddo
|
||||
enddo ! j=1,nterms
|
||||
chisqr=fchisq_pol(y,npts,a)
|
||||
! write(*,4000) 0,0,a,chisqr
|
||||
if(chisqr.lt.1.0) exit
|
||||
if(deltaa(1).lt.0.01*(a(2)-a(1)) .and. deltaa(2).lt.0.01*(a(2)-a(1)) &
|
||||
.and. deltaa(3).lt.1.0) exit
|
||||
if(chisqr/chisqr0.gt.0.99) exit
|
||||
a(3)=mod(a(3)+360.0,180.0)
|
||||
chisqr0=chisqr
|
||||
enddo
|
||||
enddo ! iter
|
||||
a(3)=mod(a(3)+360.0,180.0)
|
||||
|
||||
return
|
||||
end subroutine polfit
|
||||
|
@ -24,7 +24,7 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||
complex cx(0:MAXFFT2-1),cy(0:MAXFFT2-1),cz(0:MAXFFT2)
|
||||
logical xpol
|
||||
integer ipk1(1)
|
||||
real*8 fcenter,freq0
|
||||
real*8 fcenter,freq0,freq1
|
||||
character*12 mycall0,hiscall0
|
||||
character*12 mycall,hiscall
|
||||
character*6 mygrid,hisgrid
|
||||
@ -138,7 +138,7 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||
newdat,nagain,max_drift,mycall,hiscall,hisgrid)
|
||||
|
||||
MHz=fcenter
|
||||
freq0=MHz + 0.001*ikhz
|
||||
freq0=MHz + 0.001d0*ikhz
|
||||
|
||||
if(nsnr0.gt.-99) then
|
||||
nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
|
||||
@ -149,8 +149,13 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||
if(npol.lt.0) npol=npol+180
|
||||
endif
|
||||
call txpol(xpol,msg0(1:22),mygrid,npol,nxant,ntxpol,cp)
|
||||
ikhz1=ikhz
|
||||
ndf=nq65df
|
||||
if(ndf.gt.500) ikhz1=ikhz + (nq65df+500)/1000
|
||||
if(ndf.lt.-500) ikhz1=ikhz + (nq65df-500)/1000
|
||||
ndf=nq65df - 1000*(ikhz1-ikhz)
|
||||
if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then
|
||||
write(line,1020) ikhz,nq65df,npol,nutc,xdt0,nsnr0,msg0(1:27),cq0, &
|
||||
write(line,1020) ikhz1,ndf,npol,nutc,xdt0,nsnr0,msg0(1:27),cq0, &
|
||||
ntxpol,cp
|
||||
1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3,i4,1x,a1)
|
||||
write(*,1100) trim(line)
|
||||
@ -161,12 +166,13 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
||||
|
||||
cmode=': '
|
||||
cmode(2:2)=char(ichar('A') + mode_q65-1)
|
||||
write(26,1014) freq0,nq65df,0,0,0,xdt0,npol,0, &
|
||||
nsnr0,nutc,msg0(1:22),':',cp,cmode
|
||||
freq1=freq0 + 0.001d0*(ikhz1-ikhz)
|
||||
write(26,1014) freq1,ndf,0,0,0,xdt0,npol,0,nsnr0,nutc,msg0(1:22), &
|
||||
':',cp,cmode
|
||||
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,1x,2a1,2x,a2)
|
||||
|
||||
! Write to file map65_rx.log:
|
||||
write(21,1110) freq0,nq65df,xdt0,npol,nsnr0,nutc,msg0(1:28),cq0
|
||||
write(21,1110) freq1,ndf,xdt0,npol,nsnr0,nutc,msg0(1:28),cq0
|
||||
1110 format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': A',2x,a3)
|
||||
endif
|
||||
|
||||
|
@ -44,7 +44,7 @@ subroutine get_candidates(ss,savg,xpol,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
|
||||
enddo
|
||||
jz=j
|
||||
|
||||
call wb_sync(ss,savg,xpol,jz,nfa,nfb)
|
||||
call wb_sync(ss,savg,xpol,jz,nfa,nfb)
|
||||
|
||||
tstep=2048.0/11025.0 !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
|
||||
df3=96000.0/NFFT
|
||||
|
@ -19,7 +19,7 @@ int main(int argc, char *argv[])
|
||||
QApplication a {argc, argv};
|
||||
// Override programs executable basename as application name.
|
||||
a.setApplicationName ("MAP65");
|
||||
a.setApplicationVersion ("3.0.0-rc2");
|
||||
a.setApplicationVersion ("3.0.0-rc3");
|
||||
// switch off as we share an Info.plist file with WSJT-X
|
||||
a.setAttribute (Qt::AA_DontUseNativeMenuBar);
|
||||
MainWindow w;
|
||||
|
@ -952,8 +952,8 @@ void MainWindow::closeEvent (QCloseEvent * e)
|
||||
proc_m65.setReadChannel (QProcess::StandardError);
|
||||
proc_m65.readAll ();
|
||||
|
||||
// allow time for any decode cycle to finish
|
||||
if (!proc_m65.waitForFinished ()) proc_m65.kill();
|
||||
proc_m65.disconnect ();
|
||||
if (!proc_m65.waitForFinished (1000)) proc_m65.kill();
|
||||
quitFile.remove();
|
||||
mem_m65.detach();
|
||||
if (m_astro_window) m_astro_window->close ();
|
||||
@ -981,6 +981,13 @@ void MainWindow::stub() //stub()
|
||||
msgBox("Not yet implemented.");
|
||||
}
|
||||
|
||||
void MainWindow::on_actionRelease_Notes_triggered()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl(
|
||||
"https://www.physics.princeton.edu/pulsar/K1JT/Release_Notes.txt",
|
||||
QUrl::TolerantMode));
|
||||
}
|
||||
|
||||
void MainWindow::on_actionOnline_Users_Guide_triggered() //Display manual
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl(
|
||||
|
@ -76,6 +76,7 @@ private slots:
|
||||
void on_tolSpinBox_valueChanged(int arg1);
|
||||
void on_actionAstro_Data_triggered();
|
||||
void on_stopButton_clicked();
|
||||
void on_actionRelease_Notes_triggered();
|
||||
void on_actionOnline_Users_Guide_triggered();
|
||||
void on_actionQSG_Q65_triggered();
|
||||
void on_actionQSG_MAP65_v3_triggered();
|
||||
|
@ -1233,6 +1233,7 @@ p, li { white-space: pre-wrap; }
|
||||
<property name="title">
|
||||
<string>Help</string>
|
||||
</property>
|
||||
<addaction name="actionRelease_Notes"/>
|
||||
<addaction name="actionOnline_Users_Guide"/>
|
||||
<addaction name="actionQSG_Q65"/>
|
||||
<addaction name="actionQSG_MAP65_v3"/>
|
||||
@ -1698,6 +1699,11 @@ p, li { white-space: pre-wrap; }
|
||||
<string>Q65 Sensitivity in MAP65 3.0</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRelease_Notes">
|
||||
<property name="text">
|
||||
<string>Release Notes</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
|
Loading…
Reference in New Issue
Block a user