mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-22 12:08:43 -04:00
Decoding via q3list now basically working with grid exchanges.
This commit is contained in:
parent
88798f1ca3
commit
d6dd701601
@ -112,9 +112,12 @@ contains
|
||||
nhist2=0
|
||||
if(ncontest.eq.1) then
|
||||
! NA VHF Contest or ARRL Digi Contest
|
||||
open(24,file=trim(data_dir)//'/q3list.bin',status='unknown', &
|
||||
form='unformatted')
|
||||
read(24,end=2) nhist2,callers(1:nhist2)
|
||||
! open(24,file=trim(data_dir)//'/q3list.bin',status='unknown', &
|
||||
! form='unformatted')
|
||||
! read(24,end=2) nhist2,callers(1:nhist2)
|
||||
open(24,file=trim(data_dir)//'/q3list.bin',status='unknown')
|
||||
read(24,3024,end=2) nhist2,callers(1:nhist2)
|
||||
3024 format(i5/(a6,2x,a4,2x,i10))
|
||||
now=time()
|
||||
do i=1,nhist2
|
||||
hours=(now - callers(i)%nsec)/3600.0
|
||||
|
@ -598,7 +598,7 @@ subroutine q65_dec1(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded)
|
||||
integer dat4(13)
|
||||
character c77*77,decoded*37
|
||||
logical unpk77_success
|
||||
|
||||
|
||||
nFadingModel=1
|
||||
decoded=' '
|
||||
call q65_intrinsics_ff(s3,nsubmode,b90ts,nFadingModel,s3prob)
|
||||
@ -894,12 +894,11 @@ subroutine q65_hist2(msg0,callers,nhist2)
|
||||
callers(nhist2)%grid=g4
|
||||
callers(nhist2)%nsec=time()
|
||||
rewind(24)
|
||||
write(24) nhist2,callers(1:nhist2)
|
||||
write(24,3024) nhist2,callers(1:nhist2)
|
||||
3024 format(i5/(a6,2x,a4,2x,i10))
|
||||
rewind(24)
|
||||
endif
|
||||
|
||||
! print*,'c',nhist2,trim(msg),' ',c6,' ',g4
|
||||
|
||||
900 return
|
||||
end subroutine q65_hist2
|
||||
|
||||
|
@ -4,9 +4,10 @@ subroutine q65_set_list2(mycall,hiscall,hisgrid,callers,nhist2,codewords,ncw)
|
||||
parameter (MAX_NCW=206)
|
||||
parameter (MAX_CALLERS=40) !For multiple q3 decodes in NA VHf Contest mode
|
||||
character*12 mycall,hiscall
|
||||
character*6 hisgrid
|
||||
character*6 hisgrid,c6
|
||||
character*4 g4
|
||||
character*37 msg,msgsent
|
||||
logical my_std,his_std
|
||||
logical std,isgrid
|
||||
integer codewords(63,MAX_NCW)
|
||||
integer itone(85)
|
||||
integer isync(22)
|
||||
@ -15,59 +16,56 @@ subroutine q65_set_list2(mycall,hiscall,hisgrid,callers,nhist2,codewords,ncw)
|
||||
|
||||
data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/
|
||||
|
||||
! print*,'b nhist2:',nhist2
|
||||
if(nhist2.ne.-99) return
|
||||
|
||||
ncw=0
|
||||
if(hiscall(1:1).eq. ' ') return
|
||||
call stdcall(mycall,my_std)
|
||||
call stdcall(hiscall,his_std)
|
||||
|
||||
ncw=MAX_NCW
|
||||
do i=1,ncw
|
||||
msg=trim(mycall)//' '//trim(hiscall)
|
||||
if(.not.my_std) then
|
||||
if(i.eq.1 .or. i.ge.6) msg='<'//trim(mycall)//'> '//trim(hiscall)
|
||||
if(i.ge.2 .and. i.le.4) msg=trim(mycall)//' <'//trim(hiscall)//'>'
|
||||
else if(.not.his_std) then
|
||||
if(i.le.4 .or. i.eq.6) msg='<'//trim(mycall)//'> '//trim(hiscall)
|
||||
if(i.ge.7) msg=trim(mycall)//' <'//trim(hiscall)//'>'
|
||||
endif
|
||||
j0=len(trim(msg))+2
|
||||
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.eq.5) then
|
||||
if(his_std) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4)
|
||||
if(.not.his_std) msg='CQ '//trim(hiscall)
|
||||
endif
|
||||
if(i.eq.6 .and. his_std) 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
|
||||
isgrid(g4)=g4(1:1).ge.'A' .and. g4(1:1).le.'R' .and. g4(2:2).ge.'A' .and. &
|
||||
g4(2:2).le.'R' .and. g4(3:3).ge.'0' .and. g4(3:3).le.'9' .and. &
|
||||
g4(4:4).ge.'0' .and. g4(4:4).le.'9' .and. g4(1:4).ne.'RR73'
|
||||
|
||||
call genq65(msg,0,msgsent,itone,i3,n3)
|
||||
i0=1
|
||||
j=0
|
||||
do k=1,85
|
||||
if(k.eq.isync(i0)) then
|
||||
i0=i0+1
|
||||
cycle
|
||||
call stdcall(hiscall,std)
|
||||
jmax=nhist2
|
||||
if(std .and. isgrid(hisgrid(1:4))) then
|
||||
jmax=nhist2+1
|
||||
do j=1,nhist2
|
||||
if(callers(j)%call .eq. hiscall(1:6)) then
|
||||
jmax=nhist2
|
||||
exit
|
||||
endif
|
||||
j=j+1
|
||||
codewords(j,i)=itone(k) - 1
|
||||
enddo
|
||||
! write(71,3001) i,isnr,codewords(1:13,i),trim(msg)
|
||||
!3001 format(i3,2x,i3.2,2x,13i3,2x,a)
|
||||
endif
|
||||
|
||||
codewords(:,1)=0
|
||||
i=1
|
||||
do j=1,jmax
|
||||
c6=callers(j)%call
|
||||
g4=callers(j)%grid
|
||||
if(j.eq.nhist2+1) then
|
||||
c6=hiscall(1:6)
|
||||
g4=hisgrid(1:4)
|
||||
endif
|
||||
do k=1,5
|
||||
i=i+1
|
||||
msg=trim(mycall)//' '//trim(c6)
|
||||
j0=len(trim(msg))+1
|
||||
if(k.eq.1) msg=msg(1:j0)//g4
|
||||
if(k.eq.2) msg=msg(1:j0)//'R '//g4
|
||||
if(k.eq.3) msg(j0:j0+3)=' RRR'
|
||||
if(k.eq.4) msg(j0:j0+4)=' RR73'
|
||||
if(k.eq.5) msg(j0:j0+2)=' 73'
|
||||
call genq65(msg,0,msgsent,itone,i3,n3)
|
||||
i0=1
|
||||
jj=0
|
||||
do kk=1,85
|
||||
if(kk.eq.isync(i0)) then
|
||||
i0=i0+1
|
||||
cycle
|
||||
endif
|
||||
jj=jj+1
|
||||
codewords(jj,i)=itone(kk) - 1
|
||||
enddo
|
||||
write(71,3001) i,j,k,codewords(1:13,i),trim(msg)
|
||||
3001 format(3i3,2x,13i3,2x,a)
|
||||
enddo
|
||||
enddo
|
||||
! print*,'aa',ncontest,ncw,1970.0 + time()/(365.25*86400.0)
|
||||
ncw=i
|
||||
|
||||
return
|
||||
end subroutine q65_set_list2
|
||||
|
Loading…
Reference in New Issue
Block a user