mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-29 12:52:28 -04:00
Proper handling of multiple decodes from one call to ft4_decode.
This commit is contained in:
parent
a80b955fe7
commit
04f085bb24
@ -1,4 +1,4 @@
|
|||||||
subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
subroutine ft4_decode(cdatetime0,tbuf,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
||||||
hiscall,nrx,line)
|
hiscall,nrx,line)
|
||||||
|
|
||||||
use packjt77
|
use packjt77
|
||||||
@ -7,7 +7,7 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
|||||||
|
|
||||||
character message*37
|
character message*37
|
||||||
character c77*77
|
character c77*77
|
||||||
character*61 line
|
character*61 line,linex(100)
|
||||||
character*37 decodes(100)
|
character*37 decodes(100)
|
||||||
character*120 data_dir
|
character*120 data_dir
|
||||||
character*17 cdatetime0
|
character*17 cdatetime0
|
||||||
@ -22,13 +22,13 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
|||||||
real s4(0:3,NN)
|
real s4(0:3,NN)
|
||||||
|
|
||||||
real bmeta(2*NN),bmetb(2*NN),bmetc(2*NN)
|
real bmeta(2*NN),bmetb(2*NN),bmetc(2*NN)
|
||||||
real s(NH1,NHSYM)
|
|
||||||
real a(5)
|
real a(5)
|
||||||
real llr(2*ND),llr2(2*ND),llra(2*ND),llrb(2*ND),llrc(2*ND)
|
real llr(2*ND),llr2(2*ND),llra(2*ND),llrb(2*ND),llrc(2*ND)
|
||||||
real s2(0:255)
|
real s2(0:255)
|
||||||
real candidate(3,100)
|
real candidate(3,100)
|
||||||
real savg(NH1),sbase(NH1)
|
real savg(NH1),sbase(NH1)
|
||||||
|
|
||||||
|
integer nrxx(100)
|
||||||
integer icos4(0:3)
|
integer icos4(0:3)
|
||||||
integer*2 iwave(NMAX) !Generated full-length waveform
|
integer*2 iwave(NMAX) !Generated full-length waveform
|
||||||
integer*1 message77(77),apmask(2*ND),cw(2*ND)
|
integer*1 message77(77),apmask(2*ND),cw(2*ND)
|
||||||
@ -42,7 +42,7 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
|||||||
data icos4/0,1,3,2/
|
data icos4/0,1,3,2/
|
||||||
data graymap/0,1,3,2/
|
data graymap/0,1,3,2/
|
||||||
data first/.true./
|
data first/.true./
|
||||||
save one,first
|
save one,first,nrxx,linex
|
||||||
|
|
||||||
hhmmss=cdatetime0(8:13)
|
hhmmss=cdatetime0(8:13)
|
||||||
fs=12000.0/NDOWN !Sample rate after downsampling
|
fs=12000.0/NDOWN !Sample rate after downsampling
|
||||||
@ -250,17 +250,19 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
|||||||
decodes(ndecodes)=message
|
decodes(ndecodes)=message
|
||||||
nsnr=nint(xsnr)
|
nsnr=nint(xsnr)
|
||||||
freq=f0
|
freq=f0
|
||||||
|
tsig=mod(tbuf + ibest/750.0,100.0)
|
||||||
|
|
||||||
write(line,1000) hhmmss,nsnr,ibest/750.0,nint(freq),message
|
write(line,1000) hhmmss,nsnr,tsig,nint(freq),message
|
||||||
1000 format(a6,i4,f5.2,i5,' + ',1x,a37)
|
1000 format(a6,i4,f5.1,i5,' + ',1x,a37)
|
||||||
open(24,file='all_ft4.txt',status='unknown',position='append')
|
open(24,file='all_ft4.txt',status='unknown',position='append')
|
||||||
write(24,1002) cdatetime0,nsnr,ibest/750.0,nint(freq),message, &
|
write(24,1002) cdatetime0,nsnr,tsig,nint(freq),message, &
|
||||||
nharderror,nsync_qual,isd,niterations
|
nharderror,nsync_qual,isd,niterations
|
||||||
if(hhmmss.eq.' ') write(*,1002) cdatetime0,nsnr, &
|
if(hhmmss.eq.' ') write(*,1002) cdatetime0,nsnr, &
|
||||||
ibest/750.0,nint(freq),message,nharderror,nsync_qual,isd, &
|
tsig,nint(freq),message,nharderror,nsync_qual,isd, &
|
||||||
niterations
|
niterations
|
||||||
1002 format(a17,i4,f6.2,i5,' Rx ',a37,4i5)
|
1002 format(a17,i4,f5.1,i5,' Rx ',a37,4i5)
|
||||||
close(24)
|
close(24)
|
||||||
|
linex(ndecodes)=line
|
||||||
|
|
||||||
!### Temporary: assume most recent decoded message conveys "hiscall". ###
|
!### Temporary: assume most recent decoded message conveys "hiscall". ###
|
||||||
i0=index(message,' ')
|
i0=index(message,' ')
|
||||||
@ -273,18 +275,24 @@ subroutine ft4_decode(cdatetime0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
|||||||
if(index(message,'CQ ').eq.1) nrx=1
|
if(index(message,'CQ ').eq.1) nrx=1
|
||||||
if((index(message,trim(mycall)//' ').eq.1) .and. &
|
if((index(message,trim(mycall)//' ').eq.1) .and. &
|
||||||
(index(message,' '//trim(hiscall)//' ').ge.4)) then
|
(index(message,' '//trim(hiscall)//' ').ge.4)) then
|
||||||
if(index(message,' 559 ').gt.8) nrx=2
|
if(index(message,' 559 ').gt.8) nrx=2 !### Not right !
|
||||||
if(index(message,' R 559 ').gt.8) nrx=3
|
if(index(message,' R 559 ').gt.8) nrx=3 !### Not right !
|
||||||
if(index(message,' RR73 ').gt.8) nrx=4
|
if(index(message,' RR73 ').gt.8) nrx=4
|
||||||
endif
|
endif
|
||||||
|
nrxx(ndecodes)=nrx
|
||||||
!###
|
!###
|
||||||
exit
|
exit
|
||||||
|
|
||||||
endif
|
endif
|
||||||
enddo !Sequence estimation
|
enddo !Sequence estimation
|
||||||
enddo !Candidate list
|
enddo !Candidate list
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
entry get_ft4msg(idecode,nrx,line)
|
||||||
|
line=linex(idecode)
|
||||||
|
nrx=nrxx(idecode)
|
||||||
|
return
|
||||||
|
|
||||||
end subroutine ft4_decode
|
end subroutine ft4_decode
|
||||||
|
|
||||||
subroutine ft4_downsample(iwave,f0,c)
|
subroutine ft4_downsample(iwave,f0,c)
|
||||||
|
@ -56,9 +56,13 @@ program ft4d
|
|||||||
cdatetime=' '//datetime
|
cdatetime=' '//datetime
|
||||||
close(10)
|
close(10)
|
||||||
|
|
||||||
call ft4_decode(cdatetime,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
call ft4_decode(cdatetime,0.0,nfa,nfb,nfqso,iwave,ndecodes,mycall, &
|
||||||
hiscall,nrx,line)
|
hiscall,nrx,line)
|
||||||
if(ndecodes.ge.1) write(*,'(a61)') line
|
|
||||||
|
do idecode=1,ndecodes
|
||||||
|
call get_ft4msg(idecode,nrx,line)
|
||||||
|
write(*,'(a61)') line
|
||||||
|
enddo
|
||||||
enddo !files
|
enddo !files
|
||||||
|
|
||||||
write(*,1120)
|
write(*,1120)
|
||||||
|
@ -163,9 +163,12 @@ extern "C" {
|
|||||||
|
|
||||||
void chkcall_(char* w, char* basc_call, bool cok, int len1, int len2);
|
void chkcall_(char* w, char* basc_call, bool cok, int len1, int len2);
|
||||||
|
|
||||||
void ft4_decode_(char* cdatetime, int* nfa, int* nfb, int* nfqso, short int id[],
|
void ft4_decode_(char* cdatetime, float* tbuf, int* nfa, int* nfb, int* nfqso,
|
||||||
int* ndecodes, char* mycall6, char* hiscall6, int* nrx, char* line,
|
short int id[], int* ndecodes, char* mycall6, char* hiscall6,
|
||||||
int len1, int len2, int len3, int len4);
|
int* nrx, char* line, int len1, int len2, int len3, int len4);
|
||||||
|
|
||||||
|
void get_ft4msg_(int* idecode, int* nrx, char* line, int len);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols
|
int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols
|
||||||
@ -8621,6 +8624,7 @@ void MainWindow::ft4Data(int k)
|
|||||||
int j=k/6000;
|
int j=k/6000;
|
||||||
j=6000*j-60000;
|
j=6000*j-60000;
|
||||||
if(j<0) j+=NRING;
|
if(j<0) j+=NRING;
|
||||||
|
float tbuf=j/12000.0;
|
||||||
for(int i=0; i<60000; i++) {
|
for(int i=0; i<60000; i++) {
|
||||||
id[i]=dec_data.d2[j];
|
id[i]=dec_data.d2[j];
|
||||||
j++;
|
j++;
|
||||||
@ -8654,10 +8658,13 @@ void MainWindow::ft4Data(int k)
|
|||||||
int nrx=-1;
|
int nrx=-1;
|
||||||
int nfa=m_wideGraph->nStartFreq();
|
int nfa=m_wideGraph->nStartFreq();
|
||||||
int nfb=m_wideGraph->Fmax();
|
int nfb=m_wideGraph->Fmax();
|
||||||
ft4_decode_(cdatetime,&nfa,&nfb,&nfqso,id,&ndecodes,mycall6,hiscall6,
|
ft4_decode_(cdatetime,&tbuf,&nfa,&nfb,&nfqso,id,&ndecodes,mycall6,hiscall6,
|
||||||
&nrx,&line[0],17,6,6,61);
|
&nrx,&line[0],17,6,6,61);
|
||||||
line[60]=0;
|
line[60]=0;
|
||||||
if(ndecodes>0) {
|
// if(ndecodes>0) {
|
||||||
|
for (int idecode=1; idecode<=ndecodes; idecode++) {
|
||||||
|
get_ft4msg_(&idecode,&nrx,&line[0],61);
|
||||||
|
line[60]=0;
|
||||||
QString sline{QString::fromLatin1(line)};
|
QString sline{QString::fromLatin1(line)};
|
||||||
DecodedText decodedtext {sline.replace(QChar::LineFeed,"")};
|
DecodedText decodedtext {sline.replace(QChar::LineFeed,"")};
|
||||||
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,
|
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user