More work on Q65 message averaging.

This commit is contained in:
Joe Taylor 2020-12-24 09:51:02 -05:00
parent 844930fe75
commit 171e466389
5 changed files with 18 additions and 15 deletions

View File

@ -11,7 +11,7 @@ JT9+JT65 111010000001111000010000000000001000
JT65 111010000000111000010000000000001000
JT65/VHF 111110010000110110101100010000000000
QRA64 111110010110110110000000001000000000
Q65 111111010110110100011000001100000000
Q65 111111010110110100111000001100000000
ISCAT 100111000000000110000000000000000000
MSK144 101111110100000000010001000000000000
WSPR 000000000000000001010000000000000000

View File

@ -204,8 +204,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
call timer('dec_q65 ',0)
call my_q65%decode(q65_decoded,id2,params%nutc,params%ntr, &
params%nsubmode,params%nfqso,params%ntol,params%ndepth, &
params%emedelay,mycall,hiscall,hisgrid,params%nQSOProgress, &
ncontest,logical(params%lapcqonly))
logical(params%nclearave),params%emedelay,mycall,hiscall, &
hisgrid,params%nQSOProgress,ncontest,logical(params%lapcqonly))
call timer('dec_q65 ',1)
go to 800
endif
@ -523,8 +523,7 @@ contains
write(13,1012) params%nutc,nint(sync),snr,dt,float(freq),drift, &
decoded,ft,nsum,nsmo
1012 format(i4.4,i4,i5,f6.2,f8.0,i4,3x,a22,' JT65',3i3)
100 call flush(6)
call flush(6)
!$omp end critical(decode_results)
select type(this)

View File

@ -25,8 +25,9 @@ module q65_decode
contains
subroutine decode(this,callback,iwave,nutc,ntrperiod,nsubmode,nfqso, &
ntol,ndepth,emedelay,mycall,hiscall,hisgrid,nQSOprogress,ncontest,lapcqonly)
subroutine decode(this,callback,iwave,nutc,ntrperiod,nsubmode,nfqso, &
ntol,ndepth,lclearave,emedelay,mycall,hiscall,hisgrid,nQSOprogress, &
ncontest,lapcqonly)
! Decodes Q65 signals
! Input: iwave Raw data, i*2
@ -57,7 +58,7 @@ contains
integer apmask(13),apsymbols(13)
integer dgen(13)
integer codewords(63,206)
logical lapcqonly,unpk77_success
logical lclearave,lapcqonly,unpk77_success
complex, allocatable :: c00(:) !Analytic signal, 6000 Sa/s
complex, allocatable :: c0(:) !Analytic signal, 6000 Sa/s
@ -94,7 +95,7 @@ contains
call q65_enc(dgen,codewords) !Initialize Q65
call timer('sync_q65',0)
call q65_sync(nutc,iwave,ntrperiod*12000,mode65,codewords,ncw,nsps, &
nfqso,ntol,emedelay,xdt,f0,snr1,width,dat4,snr2,id1)
nfqso,ntol,ndepth,lclearave,emedelay,xdt,f0,snr1,width,dat4,snr2,id1)
call timer('sync_q65',1)
if(id1.eq.1 .or. id1.ge.12) then
xdt1=xdt

View File

@ -1,5 +1,5 @@
subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, &
emedelay,xdt,f0,snr1,width,dat4,snr2,id1)
ndepth,lclearave,emedelay,xdt,f0,snr1,width,dat4,snr2,id1)
! Detect and align with the Q65 sync vector, returning time and frequency
! offsets and SNR estimate.
@ -24,7 +24,7 @@ subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, &
integer dat4(13)
integer ijpk(2)
logical unpk77_success
logical lavg
logical lavg,lclearave
character*77 c77,decoded*37
real, allocatable :: s1(:,:) !Symbol spectra, 1/8-symbol steps
real, allocatable :: s3(:,:) !Data-symbol energies s3(LL,63)
@ -66,13 +66,16 @@ subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, &
allocate(ccf(-ia2:ia2,-53:214))
allocate(ccf1(-ia2:ia2))
if(lclearave) then
s3avg=0.
navg=0
endif
if(sync(1).eq.99.0) then !Generate the sync vector
sync=-22.0/63.0 !Sync tone OFF
do k=1,22
sync(isync(k))=1.0 !Sync tone ON
enddo
s3avg=0.
navg=0
endif
fac=1/32767.0
@ -270,7 +273,7 @@ subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, &
navg=0
s3avg=0.
if(lavg) go to 900
elseif(snr1.ge.0.0) then
elseif(iand(ndepth,16).eq.16) then
s3avg=s3avg+s3
navg=navg+1
write(71,3071) nutc,navg,xdt,f0,snr1

View File

@ -6388,7 +6388,7 @@ void MainWindow::on_actionQ65_triggered()
m_wideGraph->setTxFreq(ui->TxFreqSpinBox->value());
switch_mode (Modes::Q65);
// 012345678901234567890123456789012345
displayWidgets(nWidgets("111111010110110100011000000100000000"));
displayWidgets(nWidgets("111111010110110100111000000100000000"));
statusChanged();
}