mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-09-02 13:17:49 -04:00
Basically operational with save_qm called in the decoder thread. Needs testing!
This commit is contained in:
parent
4af9c58bb0
commit
2f46104140
@ -29,9 +29,9 @@ extern struct { //This is "common/datcom/..." in Fortran
|
|||||||
int n60; //nsecs%60
|
int n60; //nsecs%60
|
||||||
int junk4; //
|
int junk4; //
|
||||||
int nfsample; //Input sample rate
|
int nfsample; //Input sample rate
|
||||||
int junk3; //
|
int ndop58; //EME Self Doppler at t=58
|
||||||
int nBaseSubmode; //Base submode for Q65-60x (aka m_modeQ65)
|
int nBaseSubmode; //Base submode for Q65-60x (aka m_modeQ65)
|
||||||
int ndop00; //EME Self Doppler
|
int ndop00; //EME Self Doppler at t=0
|
||||||
int nsave; //0=None, 1=SaveDecoded, 2=SaveAll
|
int nsave; //0=None, 1=SaveDecoded, 2=SaveAll
|
||||||
int max_drift; //Maximum Q65 drift: units symbol_rate/TxT
|
int max_drift; //Maximum Q65 drift: units symbol_rate/TxT
|
||||||
int offset; //Offset in Hz
|
int offset; //Offset in Hz
|
||||||
@ -70,9 +70,9 @@ extern struct { //This is "common/datcom/..." in Fortran
|
|||||||
int n60; //nsecs%60
|
int n60; //nsecs%60
|
||||||
int junk4; //
|
int junk4; //
|
||||||
int nfsample; //Input sample rate
|
int nfsample; //Input sample rate
|
||||||
int junk3; //
|
int ndop58; //EME Self Doppler at t=58
|
||||||
int nBaseSubmode; //Base submode for Q65-60x (aka m_modeQ65)
|
int nBaseSubmode; //Base submode for Q65-60x (aka m_modeQ65)
|
||||||
int ndop00; //EME Self Doppler
|
int ndop00; //EME Self Doppler at t=0
|
||||||
int nsave; //0=None, 1=SaveDecoded, 2=SaveAll
|
int nsave; //0=None, 1=SaveDecoded, 2=SaveAll
|
||||||
int max_drift; //Maximum Q65 drift: units symbol_rate/TxT
|
int max_drift; //Maximum Q65 drift: units symbol_rate/TxT
|
||||||
int offset; //Offset in Hz
|
int offset; //Offset in Hz
|
||||||
|
@ -15,7 +15,7 @@ subroutine decode0(dd,ss,savg)
|
|||||||
nWTransmitting,result(50)
|
nWTransmitting,result(50)
|
||||||
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
|
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
|
||||||
ndepth,ndiskdat,ntx60,newdat,nfa,nfb,nfcal,nfshift, &
|
ndepth,ndiskdat,ntx60,newdat,nfa,nfb,nfcal,nfshift, &
|
||||||
ntx30a,ntx30b,ntol,n60,nCFOM,nfsample,nxpol,nmode, &
|
ntx30a,ntx30b,ntol,n60,nCFOM,nfsample,ndop58,nmode, &
|
||||||
ndop00,nsave,max_drift,offset,nhsym,mycall,mygrid, &
|
ndop00,nsave,max_drift,offset,nhsym,mycall,mygrid, &
|
||||||
hiscall,hisgrid,datetime,junk1,junk2,bAlso30
|
hiscall,hisgrid,datetime,junk1,junk2,bAlso30
|
||||||
save
|
save
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine q65c(fname,revision)
|
subroutine q65c(fname0,revision0)
|
||||||
|
|
||||||
use timer_module, only: timer
|
use timer_module, only: timer
|
||||||
use timer_impl, only: fini_timer !, limtrace
|
use timer_impl, only: fini_timer !, limtrace
|
||||||
@ -12,9 +12,12 @@ subroutine q65c(fname,revision)
|
|||||||
real*8 fcenter
|
real*8 fcenter
|
||||||
real*4 pdb(4)
|
real*4 pdb(4)
|
||||||
integer nparams0(NJUNK+3),nparams(NJUNK+3)
|
integer nparams0(NJUNK+3),nparams(NJUNK+3)
|
||||||
|
integer values(8)
|
||||||
logical first
|
logical first
|
||||||
logical*1 bAlso30
|
logical*1 bAlso30
|
||||||
character*(*) fname,revision
|
character*(*) fname0,revision0
|
||||||
|
character*120 fname
|
||||||
|
character*22 revision
|
||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
character*6 mygrid,hisgrid
|
character*6 mygrid,hisgrid
|
||||||
character*20 datetime
|
character*20 datetime
|
||||||
@ -25,19 +28,26 @@ subroutine q65c(fname,revision)
|
|||||||
!### REMEMBER that /npar/ is not updated until nparams=nparams0 is executed. ###
|
!### REMEMBER that /npar/ is not updated until nparams=nparams0 is executed. ###
|
||||||
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
|
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
|
||||||
ndepth,ndiskdat,ntx60,newdat,nn1,nn2,nfcal,nfshift, &
|
ndepth,ndiskdat,ntx60,newdat,nn1,nn2,nfcal,nfshift, &
|
||||||
ntx30a,ntx30b,ntol,n60,nCFOM,nfsample,nxpol,nmode, &
|
ntx30a,ntx30b,ntol,n60,nCFOM,nfsample,ndop58,nmode, &
|
||||||
ndop00,nsave,nn3,nn4,nhsym,mycall,mygrid,hiscall,hisgrid, &
|
ndop00,nsave,nn3,nn4,nhsym,mycall,mygrid,hiscall,hisgrid, &
|
||||||
datetime,junk1,junk2,bAlso30
|
datetime,junk1,junk2,bAlso30
|
||||||
equivalence (nparams,fcenter)
|
equivalence (nparams,fcenter)
|
||||||
data first/.true./
|
data first/.true./
|
||||||
save first
|
save first
|
||||||
|
|
||||||
|
fname=fname0
|
||||||
|
revision=revision0
|
||||||
nparams=nparams0 !Copy parameters into common/npar/
|
nparams=nparams0 !Copy parameters into common/npar/
|
||||||
datetime(12:)='00 '
|
datetime(12:)='00 '
|
||||||
|
|
||||||
npatience=1
|
npatience=1
|
||||||
newdat=1 !Always on ??
|
newdat=1 !Always on ??
|
||||||
|
|
||||||
|
if(ndiskdat.eq.0) then
|
||||||
|
if(nhsym.eq.200 .and. n60.ne.30) go to 999
|
||||||
|
if(nhsym.eq.330 .and. n60.ne.49) go to 999
|
||||||
|
if(nhsym.eq.390 .and. n60.ne.58) go to 999
|
||||||
|
endif
|
||||||
|
|
||||||
if(ndiskdat.eq.1) then
|
if(ndiskdat.eq.1) then
|
||||||
call chkstat(dd,nhsym,pdb)
|
call chkstat(dd,nhsym,pdb)
|
||||||
if((abs(pdb(1)-pdb(2)).gt.3.0 .and. pdb(1).gt.1.0) .or. &
|
if((abs(pdb(1)-pdb(2)).gt.3.0 .and. pdb(1).gt.1.0) .or. &
|
||||||
@ -48,9 +58,6 @@ subroutine q65c(fname,revision)
|
|||||||
ntx30a=0 !Older 56s files have no Tx
|
ntx30a=0 !Older 56s files have no Tx
|
||||||
ntx30b=0 !Older 56s files have no Tx
|
ntx30b=0 !Older 56s files have no Tx
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! write(*,3001) nutc,nhsym,pdb,ntx30a,ntx30b
|
|
||||||
!3001 format(i4.4,i6,4f7.1,2i6)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(ntx30a.gt.5) then
|
if(ntx30a.gt.5) then
|
||||||
@ -71,11 +78,22 @@ subroutine q65c(fname,revision)
|
|||||||
call timer('decode0 ',0)
|
call timer('decode0 ',0)
|
||||||
call decode0(dd,ss,savg)
|
call decode0(dd,ss,savg)
|
||||||
call timer('decode0 ',1)
|
call timer('decode0 ',1)
|
||||||
|
|
||||||
write(*,3001) n60,datetime(1:11),nutc,newdat,nsave,ntx30a,ntx30b,ndecodes
|
|
||||||
3001 format('A',i3,1x,a11,i6.4,5i5)
|
|
||||||
|
|
||||||
return
|
call date_and_time(VALUES=values)
|
||||||
|
n60b=values(7)
|
||||||
|
nd=n60b-n60
|
||||||
|
if(nd.lt.0) nd=nd+60
|
||||||
|
write(*,3002) nutc,nagain,nhsym,n60,n60b,nd,ntx30a,ntx30b,ndecodes,revision
|
||||||
|
3002 format('A',i5.4,8i5,2x,a22)
|
||||||
|
|
||||||
|
if(nsave.eq.2 .or. (nsave.eq.1 .and. ndecodes.ge.1)) then
|
||||||
|
call timer('save_qm ',0)
|
||||||
|
call save_qm(fname,revision,mycall,mygrid,dd,ntx30a,ntx30b,fcenter, &
|
||||||
|
nutc,ndop00,ndop58)
|
||||||
|
call timer('save_qm ',1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
999 return
|
||||||
end subroutine q65c
|
end subroutine q65c
|
||||||
|
|
||||||
subroutine all_done
|
subroutine all_done
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
subroutine save_qm(fname,prog_id,mycall,mygrid,dd,ntx30a,ntx30b,fcenter, &
|
subroutine save_qm(fname,revision,mycall,mygrid,dd,ntx30a,ntx30b,fcenter, &
|
||||||
nutc,ndop00,ndop58)
|
nutc,ndop00,ndop58)
|
||||||
|
|
||||||
parameter(NMAX=60*96000)
|
parameter(NMAX=60*96000)
|
||||||
character*(*) fname,prog_id,mycall,mygrid
|
character*120 fname
|
||||||
character prog_id_24*24,mycall_12*12,mygrid_6*6
|
character*22 revision
|
||||||
|
character*12 mycall
|
||||||
|
character*6 mygrid
|
||||||
real*4 dd(2,NMAX)
|
real*4 dd(2,NMAX)
|
||||||
real*8 fcenter
|
real*8 fcenter
|
||||||
integer nxtra(15) !For possible future additions
|
integer nxtra(15) !For possible future additions
|
||||||
@ -49,11 +51,8 @@ subroutine save_qm(fname,prog_id,mycall,mygrid,dd,ntx30a,ntx30b,fcenter, &
|
|||||||
if(ib.eq.30*96000) id1(1:2,ib+1:60*96000)=0
|
if(ib.eq.30*96000) id1(1:2,ib+1:60*96000)=0
|
||||||
|
|
||||||
open(29,file=trim(fname),status='unknown',access='stream')
|
open(29,file=trim(fname),status='unknown',access='stream')
|
||||||
prog_id_24=prog_id//" "
|
|
||||||
mycall_12=mycall
|
|
||||||
mygrid_6=mygrid
|
|
||||||
nxtra=0
|
nxtra=0
|
||||||
write(29) prog_id_24,mycall_12,mygrid_6,fcenter,nutc,ntx30a,ntx30b, &
|
write(29) revision//' ',mycall_12,mygrid_6,fcenter,nutc,ntx30a,ntx30b, &
|
||||||
ndop00,ndop58,ia,ib,fac0,nxtra !Write header to disk
|
ndop00,ndop58,ia,ib,fac0,nxtra !Write header to disk
|
||||||
write(29) id1(1:2,ia:ib) !Write 8-bit data to disk
|
write(29) id1(1:2,ia:ib) !Write 8-bit data to disk
|
||||||
close(29)
|
close(29)
|
||||||
|
@ -900,6 +900,8 @@ void MainWindow::decode() //decode()
|
|||||||
datcom_.junk1=1234; //Check for these values in m65
|
datcom_.junk1=1234; //Check for these values in m65
|
||||||
datcom_.junk2=5678;
|
datcom_.junk2=5678;
|
||||||
datcom_.bAlso30=m_bAlso30;
|
datcom_.bAlso30=m_bAlso30;
|
||||||
|
datcom_.ndop00=m_dop00;
|
||||||
|
datcom_.ndop58=m_dop58;
|
||||||
|
|
||||||
char *to = (char*) datcom2_.d4;
|
char *to = (char*) datcom2_.d4;
|
||||||
char *from = (char*) datcom_.d4;
|
char *from = (char*) datcom_.d4;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user