From 841bbac56edf3cf8aa2a636683348712ce32bf3f Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Tue, 15 Dec 2020 11:03:06 -0500 Subject: [PATCH] Increase the Q65 list decodes to include reports -50 to +49 dB. --- lib/q65_decode.f90 | 2 +- lib/q65_sync.f90 | 2 +- lib/qra/q65/q65_set_list.f90 | 27 ++++++++++++++++----------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index 6bfd28c27..507ce29e3 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -56,7 +56,7 @@ contains integer apmask1(78),apsymbols1(78) integer apmask(13),apsymbols(13) integer dgen(13) - integer codewords(63,64) + integer codewords(63,206) logical lapcqonly,unpk77_success complex, allocatable :: c00(:) !Analytic signal, 6000 Sa/s complex, allocatable :: c0(:) !Analytic signal, 6000 Sa/s diff --git a/lib/q65_sync.f90 b/lib/q65_sync.f90 index 72f8a8f3b..1a387b2a3 100644 --- a/lib/q65_sync.f90 +++ b/lib/q65_sync.f90 @@ -20,7 +20,7 @@ subroutine q65_sync(nutc,iwave,nmax,mode_q65,codewords,ncw,nsps,nfqso,ntol, & integer*2 iwave(0:nmax-1) !Raw data integer isync(22) !Indices of sync symbols integer itone(85) - integer codewords(63,64) + integer codewords(63,206) integer dat4(13) integer ijpk(2) logical unpk77_success diff --git a/lib/qra/q65/q65_set_list.f90 b/lib/qra/q65/q65_set_list.f90 index 4e67e0ff4..44b2e12cb 100644 --- a/lib/qra/q65/q65_set_list.f90 +++ b/lib/qra/q65/q65_set_list.f90 @@ -1,9 +1,10 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw) + parameter (MAX_NCW=206) character*12 mycall,hiscall character*6 hisgrid character*37 msg0,msg,msgsent - integer codewords(63,64) + integer codewords(63,MAX_NCW) integer itone(85) integer isync(22) data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/ @@ -11,22 +12,26 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw) ncw=0 if(hiscall(1:1).eq. ' ') return - ncw=58 + ncw=MAX_NCW msg0=trim(mycall)//' '//trim(hiscall) j0=len(trim(msg0))+2 - isnr0=-35 do i=1,ncw msg=msg0 if(i.eq.2) msg(j0:j0+2)='RRR' if(i.eq.3) msg(j0:j0+3)='RR73' if(i.eq.4) msg(j0:j0+1)='73' - if(i.ge.5 .and. i.le.56) then - isnr=isnr0 + (i-5)/2 - if(iand(i,1).eq.1) write(msg(j0:j0+2),'(i3.2)') isnr - if(iand(i,1).eq.0) write(msg(j0:j0+3),'("R",i3.2)') isnr + if(i.eq.5) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4) + if(i.eq.6) msg(j0:j0+3)=hisgrid(1:4) + if(i.ge.7 .and. i.le.206) then + isnr = -50 + (i-7)/2 + if(iand(i,1).eq.1) then + write(msg(j0:j0+2),'(i3.2)') isnr + if(msg(j0:j0).eq.' ') msg(j0:j0)='+' + else + write(msg(j0:j0+3),'("R",i3.2)') isnr + if(msg(j0+1:j0+1).eq.' ') msg(j0+1:j0+1)='+' + endif endif - if(i.eq.57) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4) - if(i.eq.58) msg(j0:j0+3)=hisgrid(1:4) call genq65(msg,0,msgsent,itone,i3,n3) i0=1 j=0 @@ -38,8 +43,8 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw) j=j+1 codewords(j,i)=itone(k) - 1 enddo -! write(*,3001) i,isnr,codewords(1:13,i),trim(msg) -!3001 format(i2,2x,i3.2,2x,13i3,2x,a) +! write(71,3001) i,isnr,codewords(1:13,i),trim(msg) +!3001 format(i3,2x,i3.2,2x,13i3,2x,a) enddo return