mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-08-01 13:42:39 -04:00
Build sfoxtext from CMakefiles.txt, with RS(125,49) encode and decode.
This commit is contained in:
parent
5d07f86334
commit
7804716991
@ -630,6 +630,10 @@ set (wsjt_CSRCS
|
|||||||
lib/vit213.c
|
lib/vit213.c
|
||||||
lib/wisdom.c
|
lib/wisdom.c
|
||||||
lib/wrapkarn.c
|
lib/wrapkarn.c
|
||||||
|
lib/superfox/init_rs.c
|
||||||
|
lib/superfox/encode_rs.c
|
||||||
|
lib/superfox/decode_rs.c
|
||||||
|
lib/superfox/rs_sf.c
|
||||||
${ldpc_CSRCS}
|
${ldpc_CSRCS}
|
||||||
${qra_CSRCS}
|
${qra_CSRCS}
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@ subroutine hard_symbols(crcvd,f,t,jdat)
|
|||||||
complex crcvd(NMAX) !Signal as received
|
complex crcvd(NMAX) !Signal as received
|
||||||
complex c(0:NSPS-1) !Work array, one symbol long
|
complex c(0:NSPS-1) !Work array, one symbol long
|
||||||
real s(0:NSPS-1) !Power spectrum
|
real s(0:NSPS-1) !Power spectrum
|
||||||
integer jdat(ND) !Recovered hard-decision symbols
|
integer jdat(NN) !Recovered hard-decision symbols
|
||||||
integer ipk(1)
|
integer ipk(1)
|
||||||
|
|
||||||
i0=nint(12000.0*t)
|
i0=nint(12000.0*t)
|
||||||
@ -28,6 +28,7 @@ subroutine hard_symbols(crcvd,f,t,jdat)
|
|||||||
jdat(n)=ipk(1)+256-64
|
jdat(n)=ipk(1)+256-64
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
jdat(NN-1:nn)=0
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine hard_symbols
|
end subroutine hard_symbols
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "rs_sf.h"
|
#include "rs_sf.h"
|
||||||
|
|
||||||
void *rs_sf;
|
static void *rs_sf;
|
||||||
static int first=1;
|
static int first=1;
|
||||||
static int nn,kk,nroots,npad;
|
static int nn,kk,nroots,npad;
|
||||||
|
|
||||||
|
@ -12,9 +12,13 @@ program sfoxtest
|
|||||||
complex clo(NMAX) !Complex Local Oscillator
|
complex clo(NMAX) !Complex Local Oscillator
|
||||||
complex cnoise(NMAX) !Complex noise
|
complex cnoise(NMAX) !Complex noise
|
||||||
complex crcvd(NMAX) !Signal as received
|
complex crcvd(NMAX) !Signal as received
|
||||||
integer idat(ND) !Encoded data, 7-bit integers
|
integer imsg(KK) !Information symbols
|
||||||
integer jdat(ND) !Recovered hard-decision symbols
|
integer jmsg(KK) !Decoded information
|
||||||
|
integer*1 imsg1(7*KK) !Copy of imsg in 1-bit i*1 format
|
||||||
|
integer idat(NN) !Encoded data, 7-bit integers
|
||||||
|
integer jdat(NN) !Recovered hard-decision symbols
|
||||||
character fname*17,arg*12
|
character fname*17,arg*12
|
||||||
|
character c357*357,c14*14 !,chkmsg*15
|
||||||
|
|
||||||
nargs=iargc()
|
nargs=iargc()
|
||||||
if(nargs.ne.8) then
|
if(nargs.ne.8) then
|
||||||
@ -46,13 +50,22 @@ program sfoxtest
|
|||||||
idummy=0
|
idummy=0
|
||||||
bandwidth_ratio=2500.0/6000.0
|
bandwidth_ratio=2500.0/6000.0
|
||||||
|
|
||||||
! Generate random data symbols
|
! Generate a message
|
||||||
do i=1,ND
|
do i=1,KK-2
|
||||||
call random_number(r)
|
imsg(i)=i
|
||||||
if(nran.eq.1) r=ran1(idummy)
|
|
||||||
idat(i)=128*r
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
! Append a 14-bit CRC
|
||||||
|
imsg(KK-1:KK)=0
|
||||||
|
write(c357,'(51b7.7)') imsg(1:KK)
|
||||||
|
read(c357,'(357i1)') imsg1
|
||||||
|
call get_crc14(imsg1,7*KK,ncrc0)
|
||||||
|
write(c14,'(b14.14)') ncrc0
|
||||||
|
read(c14,'(2b7.7)') imsg(KK-1:KK)
|
||||||
|
|
||||||
|
call rs_init_sf(MM,NQ,NN,KK,NFZ) !Initialize the Karn codec
|
||||||
|
call rs_encode_sf(imsg,idat) !Encode imsg into idat
|
||||||
|
|
||||||
! Generate cdat (SuperFox waveform) and clo (LO for sync detection)
|
! Generate cdat (SuperFox waveform) and clo (LO for sync detection)
|
||||||
call gen_sfox(idat,f0,fsample,syncwidth,cdat,clo)
|
call gen_sfox(idat,f0,fsample,syncwidth,cdat,clo)
|
||||||
|
|
||||||
@ -101,6 +114,12 @@ program sfoxtest
|
|||||||
if(abs(ferr).lt.5.0 .and. abs(terr).lt.0.01) ngoodsync=ngoodsync+1
|
if(abs(ferr).lt.5.0 .and. abs(terr).lt.0.01) ngoodsync=ngoodsync+1
|
||||||
|
|
||||||
call hard_symbols(crcvd,f,t,jdat) !Get hard symbol values
|
call hard_symbols(crcvd,f,t,jdat) !Get hard symbol values
|
||||||
|
nera=0
|
||||||
|
call rs_decode_sf(idat,iera,nera,jmsg,nfixed) !Call the decoder
|
||||||
|
write(c357,'(51b7.7)') jmsg(1:KK)
|
||||||
|
read(c357,'(357i1)') imsg11
|
||||||
|
call get_crc14(imsg1,7*KK,ncrc)
|
||||||
|
|
||||||
nharderr=count(jdat.ne.idat) !Count hard errors
|
nharderr=count(jdat.ne.idat) !Count hard errors
|
||||||
|
|
||||||
if(snrdb.ne.0) then
|
if(snrdb.ne.0) then
|
||||||
@ -131,7 +150,6 @@ program sfoxtest
|
|||||||
1310 format(f7.2,i6,2f7.2)
|
1310 format(f7.2,i6,2f7.2)
|
||||||
if(snrdb.ne.0.0) exit
|
if(snrdb.ne.0.0) exit
|
||||||
if(fgoodsync.lt.0.5) exit
|
if(fgoodsync.lt.0.5) exit
|
||||||
! if(fgood.eq.0.0) exit
|
|
||||||
enddo ! isnr
|
enddo ! isnr
|
||||||
|
|
||||||
999 end program sfoxtest
|
999 end program sfoxtest
|
||||||
|
Loading…
x
Reference in New Issue
Block a user