mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-09-04 06:07:50 -04:00
Merge branch 'release-2.4.0' of bitbucket.org:k1jt/wsjtx into release-2.4.0
This commit is contained in:
commit
74b2037187
@ -11,6 +11,38 @@
|
|||||||
|
|
||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
Release: WSJT-X 2.4.0-rc4
|
||||||
|
Mar 21, 2021
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
WSJT-X 2.4.0 Release Candidate 4 adds new Q65 mode functionality and
|
||||||
|
decoder optimizations and repairs several defects and regressions
|
||||||
|
discovered in the RC3 and v2.3.0 GA releases.
|
||||||
|
|
||||||
|
- Correct a problem with display of Q65 sync curves for submodes
|
||||||
|
Q65-120x and Q65-300x.
|
||||||
|
|
||||||
|
- Audio frequency and decoded message are now saved for up to 100
|
||||||
|
most recent Q65 decodes. Subsequent double-click on waterfall will
|
||||||
|
search the list for the clicked frequency +/- 10 Hz, recover
|
||||||
|
"DXCall" from the mosr recent decode there, and attempt a decode at
|
||||||
|
that frequency with full "q3" sensitivity.
|
||||||
|
|
||||||
|
- Use new ADIF recommendations for Q65: mode=MFSK, submode=Q65.
|
||||||
|
|
||||||
|
- If "Single decode" is unchecked, look for Q65 decodes from
|
||||||
|
accumulated average even after obtaining a single-sequence
|
||||||
|
decode at selected Rx Freq.
|
||||||
|
|
||||||
|
- For data read from .wav files, display the original UTC (derived
|
||||||
|
from file name) on the waterfall instead of current UTC.
|
||||||
|
|
||||||
|
- Protect against bounds errors caused by unusual settings on the
|
||||||
|
Wide Graph.
|
||||||
|
|
||||||
|
- Correct a problem with Split operation in FT4 mode. Thanks to
|
||||||
|
JG1APX.
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.4.0-rc3
|
Release: WSJT-X 2.4.0-rc3
|
||||||
Mar 15, 2021
|
Mar 15, 2021
|
||||||
|
@ -703,15 +703,20 @@ end subroutine q65_snr
|
|||||||
|
|
||||||
subroutine q65_hist(if0,msg0,dxcall,dxgrid)
|
subroutine q65_hist(if0,msg0,dxcall,dxgrid)
|
||||||
|
|
||||||
|
! Save the MAXHIST most receent decodes, and their f0 values; or, if
|
||||||
|
! dxcall is present, look up the most recent dxcall and dxgrid at the
|
||||||
|
! specified f0.
|
||||||
|
|
||||||
parameter (MAXHIST=100)
|
parameter (MAXHIST=100)
|
||||||
integer,intent(in) :: if0
|
integer,intent(in) :: if0 !Audio freq of decode
|
||||||
character(len=37),intent(in),optional :: msg0
|
character(len=37),intent(in),optional :: msg0 !Decoded message
|
||||||
character(len=12),intent(out),optional :: dxcall
|
character(len=12),intent(out),optional :: dxcall !Second callsign in message
|
||||||
character(len=6),intent(out),optional :: dxgrid
|
character(len=6),intent(out),optional :: dxgrid !Third word in msg, if grid
|
||||||
|
|
||||||
character*6 g1
|
character*6 g1
|
||||||
character*37 msg(MAXHIST)
|
character*37 msg(MAXHIST) !Saved messages
|
||||||
integer nf0(MAXHIST)
|
integer nf0(MAXHIST) !Saved frequencies
|
||||||
logical isgrid
|
logical isgrid !Statement function
|
||||||
data nhist/0/
|
data nhist/0/
|
||||||
save nhist,nf0,msg
|
save nhist,nf0,msg
|
||||||
|
|
||||||
@ -719,28 +724,30 @@ subroutine q65_hist(if0,msg0,dxcall,dxgrid)
|
|||||||
g1(2:2).le.'R' .and. g1(3:3).ge.'0' .and. g1(3:3).le.'9' .and. &
|
g1(2:2).le.'R' .and. g1(3:3).ge.'0' .and. g1(3:3).le.'9' .and. &
|
||||||
g1(4:4).ge.'0' .and. g1(4:4).le.'9' .and. g1(1:4).ne.'RR73'
|
g1(4:4).ge.'0' .and. g1(4:4).le.'9' .and. g1(1:4).ne.'RR73'
|
||||||
|
|
||||||
if(present(dxcall)) go to 100
|
if(present(dxcall)) go to 100 !This is a lookup request
|
||||||
|
|
||||||
if(nhist.eq.MAXHIST) then
|
if(nhist.eq.MAXHIST) then
|
||||||
nf0(1:MAXHIST-1)=nf0(2:MAXHIST)
|
nf0(1:MAXHIST-1)=nf0(2:MAXHIST) !List is full, must make room
|
||||||
msg(1:MAXHIST-1)=msg(2:MAXHIST)
|
msg(1:MAXHIST-1)=msg(2:MAXHIST)
|
||||||
nhist=MAXHIST-1
|
nhist=MAXHIST-1
|
||||||
endif
|
endif
|
||||||
nhist=nhist+1
|
nhist=nhist+1 !Insert msg0 at end of list
|
||||||
nf0(nhist)=if0
|
nf0(nhist)=if0
|
||||||
msg(nhist)=msg0
|
msg(nhist)=msg0
|
||||||
go to 900
|
go to 900
|
||||||
|
|
||||||
100 dxcall=' '
|
100 dxcall=' ' !This is a lookup request
|
||||||
dxgrid=' '
|
dxgrid=' '
|
||||||
do i=1,nhist
|
! Look for a decode close to if0, starting with most recent ones
|
||||||
|
do i=nhist,1,-1
|
||||||
if(abs(nf0(i)-if0).gt.10) cycle
|
if(abs(nf0(i)-if0).gt.10) cycle
|
||||||
i1=index(msg(i),' ')
|
i1=index(msg(i),' ')
|
||||||
if(i1.ge.4 .and. i1.le.13) then
|
if(i1.ge.4 .and. i1.le.13) then
|
||||||
i2=index(msg(i)(i1+1:),' ') + i1
|
i2=index(msg(i)(i1+1:),' ') + i1
|
||||||
dxcall=msg(i)(i1+1:i2-1)
|
dxcall=msg(i)(i1+1:i2-1) !Extract dxcall
|
||||||
g1=msg(i)(i2+1:i2+4)
|
g1=msg(i)(i2+1:i2+4)
|
||||||
if(isgrid(g1)) dxgrid=g1(1:4)
|
if(isgrid(g1)) dxgrid=g1(1:4) !Extract dxgrid
|
||||||
|
exit
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ void WideGraph::keyPressEvent(QKeyEvent *e) //F1
|
|||||||
void WideGraph::setRxFreq(int n) //setRxFreq
|
void WideGraph::setRxFreq(int n) //setRxFreq
|
||||||
{
|
{
|
||||||
ui->widePlot->setRxFreq(n);
|
ui->widePlot->setRxFreq(n);
|
||||||
ui->widePlot->draw(m_swide,false,false);
|
if(m_mode!="Q65") ui->widePlot->draw(m_swide,false,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
int WideGraph::rxFreq() //rxFreq
|
int WideGraph::rxFreq() //rxFreq
|
||||||
|
Loading…
x
Reference in New Issue
Block a user