mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-29 07:28:54 -04:00
Replace hijacked ss(1:3,1) with a separate ipc(3) array.
This commit is contained in:
parent
46638f6f07
commit
3962aa3c43
@ -18,6 +18,7 @@ extern "C" {
|
|||||||
* sync with lib/jt9com.f90
|
* sync with lib/jt9com.f90
|
||||||
*/
|
*/
|
||||||
extern struct dec_data {
|
extern struct dec_data {
|
||||||
|
int ipc[3];
|
||||||
float ss[184*NSMAX];
|
float ss[184*NSMAX];
|
||||||
float savg[NSMAX];
|
float savg[NSMAX];
|
||||||
float sred[5760];
|
float sred[5760];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
subroutine multimode_decoder(ss,id2,params,nfsample)
|
subroutine multimode_decoder(ipc1,ss,id2,params,nfsample)
|
||||||
|
|
||||||
!$ use omp_lib
|
!$ use omp_lib
|
||||||
use prog_args
|
use prog_args
|
||||||
use timer_module, only: timer
|
use timer_module, only: timer
|
||||||
use jt4_decode
|
use jt4_decode
|
||||||
@ -97,7 +97,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
if(tseq.lt.9.0) tseq=tseq+15.0
|
if(tseq.lt.9.0) tseq=tseq+15.0
|
||||||
if(params%nzhsym.eq.41) write(71,3001) ' '
|
if(params%nzhsym.eq.41) write(71,3001) ' '
|
||||||
sec=itime(7)+0.001*itime(8)
|
sec=itime(7)+0.001*itime(8)
|
||||||
write(71,3001) 'BB decoderStart',tsec,params%nzhsym,nint(ss(1,1)),tseq, &
|
write(71,3001) 'BB decoderStart',tsec,params%nzhsym,ipc1,tseq, &
|
||||||
itime(5)-itime(4)/60,itime(6),sec
|
itime(5)-itime(4)/60,itime(6),sec
|
||||||
3001 format(a15,f11.3,2i6,f8.3,i4.2,':',i2.2,':',f6.3,i6)
|
3001 format(a15,f11.3,2i6,f8.3,i4.2,':',i2.2,':',f6.3,i6)
|
||||||
flush(71)
|
flush(71)
|
||||||
@ -123,7 +123,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
|
params%nftx,newdat,params%nutc,params%nfa,params%nfb, &
|
||||||
params%nzhsym,params%ndepth,ncontest,logical(params%nagain), &
|
params%nzhsym,params%ndepth,ncontest,logical(params%nagain), &
|
||||||
logical(params%lft8apon),logical(params%lapcqonly), &
|
logical(params%lft8apon),logical(params%lapcqonly), &
|
||||||
params%napwid,mycall,hiscall,hisgrid,ss(1,1),params%ndiskdat)
|
params%napwid,mycall,hiscall,hisgrid,ipc1,params%ndiskdat)
|
||||||
call timer('decft8 ',1)
|
call timer('decft8 ',1)
|
||||||
if(nfox.gt.0) then
|
if(nfox.gt.0) then
|
||||||
n30min=minval(n30fox(1:nfox))
|
n30min=minval(n30fox(1:nfox))
|
||||||
@ -314,7 +314,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
tseq=mod(itime(7)+0.001*itime(8),15.0)
|
tseq=mod(itime(7)+0.001*itime(8),15.0)
|
||||||
if(tseq.lt.9.0) tseq=tseq+15.0
|
if(tseq.lt.9.0) tseq=tseq+15.0
|
||||||
sec=itime(7)+0.001*itime(8)
|
sec=itime(7)+0.001*itime(8)
|
||||||
write(71,3001) 'DD decoderEnd ',tsec,params%nzhsym,nint(ss(1,1)),tseq, &
|
write(71,3001) 'DD decoderEnd ',tsec,params%nzhsym,ipc1,tseq, &
|
||||||
itime(5)-itime(4)/60,itime(6),sec,ndecoded
|
itime(5)-itime(4)/60,itime(6),sec,ndecoded
|
||||||
flush(71)
|
flush(71)
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ contains
|
|||||||
|
|
||||||
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
|
subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, &
|
||||||
nutc,nfa,nfb,nzhsym,ndepth,ncontest,nagain,lft8apon,lapcqonly, &
|
nutc,nfa,nfb,nzhsym,ndepth,ncontest,nagain,lft8apon,lapcqonly, &
|
||||||
napwid,mycall12,hiscall12,hisgrid6,ss0,ldiskdat)
|
napwid,mycall12,hiscall12,hisgrid6,ipc1,ldiskdat)
|
||||||
use timer_module, only: timer
|
use timer_module, only: timer
|
||||||
include 'ft8/ft8_params.f90'
|
include 'ft8/ft8_params.f90'
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ contains
|
|||||||
real xdt_save(MAX_EARLY)
|
real xdt_save(MAX_EARLY)
|
||||||
|
|
||||||
save s,dd,dd1,ndec_early,itone_save,f1_save,xdt_save,lsubtracted
|
save s,dd,dd1,ndec_early,itone_save,f1_save,xdt_save,lsubtracted
|
||||||
volatile ss0
|
volatile ipc1
|
||||||
|
|
||||||
this%callback => callback
|
this%callback => callback
|
||||||
write(datetime,1001) nutc !### TEMPORARY ###
|
write(datetime,1001) nutc !### TEMPORARY ###
|
||||||
@ -90,7 +90,7 @@ contains
|
|||||||
lrefinedt)
|
lrefinedt)
|
||||||
lsubtracted(i)=.true.
|
lsubtracted(i)=.true.
|
||||||
endif
|
endif
|
||||||
if(.not.ldiskdat .and. nint(ss0).ge.49) then !Bail out before done
|
if(.not.ldiskdat .and. ipc1.ge.49) then !Bail out before done
|
||||||
call timer('sub_ft8b',1)
|
call timer('sub_ft8b',1)
|
||||||
dd1=dd
|
dd1=dd
|
||||||
go to 700
|
go to 700
|
||||||
@ -177,7 +177,7 @@ contains
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if(.not.ldiskdat .and. nzhsym.eq.41 .and. &
|
if(.not.ldiskdat .and. nzhsym.eq.41 .and. &
|
||||||
nint(ss0).ge.46) go to 700 !Bail out before done
|
ipc1.ge.46) go to 700 !Bail out before done
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
go to 800
|
go to 800
|
||||||
@ -189,7 +189,7 @@ contains
|
|||||||
tseq=mod(itime(7)+0.001*itime(8),15.0)
|
tseq=mod(itime(7)+0.001*itime(8),15.0)
|
||||||
if(tseq.lt.9.0) tseq=tseq+15.0
|
if(tseq.lt.9.0) tseq=tseq+15.0
|
||||||
sec=itime(7)+0.001*itime(8)
|
sec=itime(7)+0.001*itime(8)
|
||||||
write(71,3001) 'CC Bailout ',tsec,nzhsym,nint(ss0),tseq, &
|
write(71,3001) 'CC Bailout ',tsec,nzhsym,ipc1,tseq, &
|
||||||
itime(5)-itime(4)/60,itime(6),sec,ndecodes
|
itime(5)-itime(4)/60,itime(6),sec,ndecodes
|
||||||
3001 format(a15,f11.3,2i6,f8.3,i4.2,':',i2.2,':',f6.3,i6)
|
3001 format(a15,f11.3,2i6,f8.3,i4.2,':',i2.2,':',f6.3,i6)
|
||||||
flush(71)
|
flush(71)
|
||||||
|
23
lib/jt9a.f90
23
lib/jt9a.f90
@ -39,19 +39,19 @@ subroutine jt9a()
|
|||||||
msdelay=30
|
msdelay=30
|
||||||
call c_f_pointer(address_jt9(),shared_data)
|
call c_f_pointer(address_jt9(),shared_data)
|
||||||
|
|
||||||
! Wait here until GUI has set ss(2,1) to 1.0
|
! Wait here until GUI has set ips(2) to 1.0
|
||||||
10 call lock_jt9()
|
10 call lock_jt9()
|
||||||
if(shared_data%ss(2,1).eq.999.0) then
|
if(shared_data%ipc(2).eq.999.0) then
|
||||||
call unlock_jt9()
|
call unlock_jt9()
|
||||||
i1=detach_jt9()
|
i1=detach_jt9()
|
||||||
go to 999
|
go to 999
|
||||||
endif
|
endif
|
||||||
if(shared_data%ss(2,1).ne.1.0) then
|
if(shared_data%ipc(2).ne.1.0) then
|
||||||
call unlock_jt9()
|
call unlock_jt9()
|
||||||
call sleep_msec(msdelay)
|
call sleep_msec(msdelay)
|
||||||
go to 10
|
go to 10
|
||||||
endif
|
endif
|
||||||
shared_data%ss(2,1)=0.0
|
shared_data%ipc(2)=0
|
||||||
|
|
||||||
nbytes=size_jt9()
|
nbytes=size_jt9()
|
||||||
if(nbytes.le.0) then
|
if(nbytes.le.0) then
|
||||||
@ -70,27 +70,30 @@ subroutine jt9a()
|
|||||||
local_params%nzhsym=nearly
|
local_params%nzhsym=nearly
|
||||||
id2a(1:nearly*3456)=shared_data%id2(1:nearly*3456)
|
id2a(1:nearly*3456)=shared_data%id2(1:nearly*3456)
|
||||||
id2a(nearly*3456+1:)=0
|
id2a(nearly*3456+1:)=0
|
||||||
call multimode_decoder(shared_data%ss,id2a,local_params,12000)
|
call multimode_decoder(shared_data%ipc(1),shared_data%ss,id2a, &
|
||||||
|
local_params,12000)
|
||||||
nearly=47
|
nearly=47
|
||||||
local_params%nzhsym=nearly
|
local_params%nzhsym=nearly
|
||||||
id2a(1:nearly*3456)=shared_data%id2(1:nearly*3456)
|
id2a(1:nearly*3456)=shared_data%id2(1:nearly*3456)
|
||||||
id2a(nearly*3456+1:)=0
|
id2a(nearly*3456+1:)=0
|
||||||
call multimode_decoder(shared_data%ss,id2a,local_params,12000)
|
call multimode_decoder(shared_data%ipc(1),shared_data%ss,id2a, &
|
||||||
|
local_params,12000)
|
||||||
local_params%nzhsym=50
|
local_params%nzhsym=50
|
||||||
endif
|
endif
|
||||||
! Normal decoding pass
|
! Normal decoding pass
|
||||||
call multimode_decoder(shared_data%ss,shared_data%id2,local_params,12000)
|
call multimode_decoder(shared_data%ipc(1),shared_data%ss,shared_data%id2, &
|
||||||
|
local_params,12000)
|
||||||
call timer('decoder ',1)
|
call timer('decoder ',1)
|
||||||
|
|
||||||
|
|
||||||
! Wait here until GUI routine decodeDone() has set ss(3,1) to 1.0
|
! Wait here until GUI routine decodeDone() has set ipc(3) to 1.0
|
||||||
100 call lock_jt9()
|
100 call lock_jt9()
|
||||||
if(shared_data%ss(3,1).ne.1.0) then
|
if(shared_data%ipc(3).ne.1.0) then
|
||||||
call unlock_jt9()
|
call unlock_jt9()
|
||||||
call sleep_msec(msdelay)
|
call sleep_msec(msdelay)
|
||||||
go to 100
|
go to 100
|
||||||
endif
|
endif
|
||||||
shared_data%ss(3,1)=0.
|
shared_data%ipc(3)=0
|
||||||
call unlock_jt9()
|
call unlock_jt9()
|
||||||
go to 10
|
go to 10
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
end type params_block
|
end type params_block
|
||||||
|
|
||||||
type, bind(C) :: dec_data
|
type, bind(C) :: dec_data
|
||||||
|
integer(c_int) :: ipc(3)
|
||||||
real(c_float) :: ss(184,NSMAX)
|
real(c_float) :: ss(184,NSMAX)
|
||||||
real(c_float) :: savg(NSMAX)
|
real(c_float) :: savg(NSMAX)
|
||||||
real(c_float) :: sred(5760)
|
real(c_float) :: sred(5760)
|
||||||
|
@ -845,8 +845,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// pause_jt9 ();
|
to_jt9(0,0,0); //initialize IPC variables
|
||||||
to_jt9(0,0,0); //initialize
|
|
||||||
|
|
||||||
QStringList jt9_args {
|
QStringList jt9_args {
|
||||||
"-s", QApplication::applicationName () // shared memory key,
|
"-s", QApplication::applicationName () // shared memory key,
|
||||||
@ -2968,7 +2967,7 @@ void MainWindow::decode() //decode()
|
|||||||
//nagain=1 ==> decode only at fQSO +/- Tol
|
//nagain=1 ==> decode only at fQSO +/- Tol
|
||||||
|
|
||||||
char *to = (char*)mem_jt9->data();
|
char *to = (char*)mem_jt9->data();
|
||||||
char *from = (char*) dec_data.ss;
|
char *from = (char*) dec_data.ipc;
|
||||||
int size=sizeof(struct dec_data);
|
int size=sizeof(struct dec_data);
|
||||||
if(dec_data.params.newdat==0) {
|
if(dec_data.params.newdat==0) {
|
||||||
int noffset {offsetof (struct dec_data, params.nutc)};
|
int noffset {offsetof (struct dec_data, params.nutc)};
|
||||||
@ -3073,13 +3072,13 @@ void::MainWindow::fast_decode_done()
|
|||||||
|
|
||||||
void MainWindow::to_jt9(qint32 n, qint32 istart, qint32 idone)
|
void MainWindow::to_jt9(qint32 n, qint32 istart, qint32 idone)
|
||||||
{
|
{
|
||||||
float ss0[3];
|
int ipc[3];
|
||||||
mem_jt9->lock ();
|
mem_jt9->lock ();
|
||||||
memcpy(ss0,(char*)mem_jt9->data(),12);
|
memcpy(ipc,(char*)mem_jt9->data(),12);
|
||||||
ss0[0]=n;
|
ipc[0]=n;
|
||||||
if(istart>=0) ss0[1]=istart;
|
if(istart>=0) ipc[1]=istart;
|
||||||
if(idone>=0) ss0[2]=idone;
|
if(idone>=0) ipc[2]=idone;
|
||||||
memcpy((char*)mem_jt9->data(),ss0,12);
|
memcpy((char*)mem_jt9->data(),ipc,12);
|
||||||
mem_jt9->unlock ();
|
mem_jt9->unlock ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user