Summary: Merge in linux branch

svn+ssh://svn.berlios.de/svnroot/repos/wsjt/WSJT/branches/linux
merged into
svn+ssh://svn.berlios.de/svnroot/repos/wsjt/trunk



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@155 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
J C Dutton 2006-04-05 20:07:32 +00:00
parent be0214af79
commit c2ceb42b28
41 changed files with 2234 additions and 1127 deletions

View File

@ -4,13 +4,14 @@ LDFLAGS = @LDFLAGS@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
# WSJT specific C flags # WSJT specific C flags
CFLAGS += -DBIGSYM=1 CFLAGS += -DBIGSYM=1 -fPIC
DEFS = @DEFS@ DEFS = @DEFS@
CFLAGS += ${DEFS} CFLAGS += ${DEFS}
CPPFLAGS += ${DEFS} CPPFLAGS += ${DEFS} -I.
# WSJT specific Fortran flags # WSJT specific Fortran flags
FFLAGS += -cpp -Wall -fbounds-check -ftrace=full -fno-second-underscore FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none -fPIC
#FFLAGS += -Wall -fbounds-check -fno-second-underscore -fPIC
#FFLAGS += -cpp -fno-second-underscore #FFLAGS += -cpp -fno-second-underscore
# The default rules # The default rules
.c.o: .c.o:
@ -19,8 +20,8 @@ FFLAGS += -cpp -Wall -fbounds-check -ftrace=full -fno-second-underscore
.f.o: .f.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $<
.f90.o: .F90.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f90=.o} $< ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $<
OS=@OS@ OS=@OS@
G95=@G95@ G95=@G95@
@ -44,11 +45,11 @@ OBJS1 = JT65code.o nchar.o grid2deg.o packmsg.o packtext.o \
F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0 F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0
SRCS2F90 = abc441.f90 astro0.f90 audio_init.f90 azdist0.f90 \ SRCS2F90 = abc441.F90 astro0.F90 audio_init.F90 azdist0.f90 \
blanker.f90 decode1.f90 decode2.f90 decode3.f90 ftn_init.f90 \ blanker.f90 decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \
ftn_quit.f90 get_fname.f90 getfile.f90 horizspec.f90 hscroll.f90 \ ftn_quit.f90 get_fname.F90 getfile.F90 horizspec.f90 hscroll.f90 \
i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.f90 spec.f90 \ i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \
wsjtgen.f90 runqqq.f90 fivehz.f90 wsjtgen.F90 runqqq.F90 fivehz.F90
OBJS2F90 = ${SRCS2F90:.f90=.o} OBJS2F90 = ${SRCS2F90:.f90=.o}
SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \ SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \
@ -64,7 +65,7 @@ SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \
interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \ interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \
nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \ nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \
short65.f slope.f spec2d65.f sync65.f unpackcall.f \ short65.f slope.f spec2d65.f sync65.f unpackcall.f \
unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f wsjt65.f unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f
OBJS2F77 = ${SRCS2F77:.f=.o} OBJS2F77 = ${SRCS2F77:.f=.o}
SRCS2C = init_rs.c encode_rs.c decode_rs.c SRCS2C = init_rs.c encode_rs.c decode_rs.c
@ -101,7 +102,7 @@ wsjt6: Audio.so #wsjt.spec
# #
# #
Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS) Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS)
${F2PY} -c --quiet --opt="-O -cpp -D${CFLAGS} \ ${F2PY} -c --quiet --opt="-O ${CFLAGS} \
-fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \ -fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \
--f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \ --f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \
only: $(F2PYONLY) \ only: $(F2PYONLY) \

121
Makefile.linux.g95 Normal file
View File

@ -0,0 +1,121 @@
CC ?= gcc
FFLAGS = -g -O2
LDFLAGS = -L/usr/local/lib -lpthread -lasound
CPPFLAGS = -I/usr/local/include -I/usr/include/alsa
CFLAGS = -Wall -O0 -g -Wall -O0 -g
# WSJT specific C flags
CFLAGS += -DBIGSYM=1
DEFS = -DPACKAGE_NAME=\"wsjt\" -DPACKAGE_TARNAME=\"wsjt\" -DPACKAGE_VERSION=\"5.9.2\" -DPACKAGE_STRING=\"wsjt\ 5.9.2\" -DPACKAGE_BUGREPORT=\"\" -DG95_LIB_PATH=\"/u/g95/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.0.1//\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_SYSLOG_H=1 -DHAVE_STDDEF_H=1 -DHAVE_LIBGEN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_WAIT_H=1 -DHAVE_STDIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_LINUX_PPDEV_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DTIME_WITH_SYS_TIME=1 -DSTRING_WITH_STRINGS=1 -DSIZEOF_INT64_T=8 -DSIZEOF_LONG_LONG=8 -DNDEBUG=1 -DPREFIX=\"/usr/local/\" -DUSE_SERIAL=1 -DUSE_ALSA=1 -DHAS_ASOUNDLIB_H=1 -DHAS_SOUNDCARD_H=1 -DHAS_SAMPLERATE_H=1
CFLAGS += ${DEFS}
CPPFLAGS += ${DEFS}
# WSJT specific Fortran flags
#FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none
FFLAGS += -Wall -fbounds-check -fno-second-underscore
#FFLAGS += -cpp -fno-second-underscore
# The default rules
.c.o:
${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $<
.f.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $<
.F90.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $<
OS=Linux
G95=/usr/X11R6/bin/g95
COMPILER=/usr/lib/gcc/i686-pc-linux-gnu/3.4.6//
#COMPILER=/u/g95/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.0.1//
FC=/usr/X11R6/bin/g95
LDFLAGS += -L${COMPILER}
LDFLAGS += -lg2c
PYTHON ?= /usr/X11R6/bin/python
RM ?= /usr/X11R6/bin/rm
F2PY = /usr/X11R6/bin/f2py
OBJS1 = JT65code.o nchar.o grid2deg.o packmsg.o packtext.o \
packcall.o packgrid.o unpackmsg.o unpacktext.o unpackcall.o \
unpackgrid.o deg2grid.o packdxcc.o chkmsg.o getpfx1.o \
getpfx2.o k2grid.o grid2k.o interleave63.o graycode.o set.o \
igray.o init_rs_int.o encode_rs_int.o decode_rs_int.o \
wrapkarn.o
F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0
SRCS2F90 = abc441.F90 astro0.F90 audio_init.F90 azdist0.f90 \
blanker.f90 decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \
ftn_quit.f90 get_fname.F90 getfile.F90 horizspec.f90 hscroll.f90 \
i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \
wsjtgen.F90 runqqq.F90 fivehz.F90
OBJS2F90 = ${SRCS2F90:.f90=.o}
SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \
dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f moon2.f \
MoonDop.f sun.f toxyz.f pfxdump.f \
avesp2.f bzap.f spec441.f spec2d.f mtdecode.f stdecode.f \
indexx.f s2shape.f flat2.f gen65.f chkmsg.f gen6m.f gentone.f \
syncf0.f syncf1.f synct.f decode6m.f avemsg6m.f \
set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \
ping.f longx.f peakup.f sync.f detect.f avemsg65.f decode65.f \
demod64a.f encode65.f extract.f flat1.f four2.f rfile2.f \
gencw.f getpfx1.f getpfx2.f getsnr.f graycode.f grid2k.f \
interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \
nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \
short65.f slope.f spec2d65.f sync65.f unpackcall.f \
unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f
OBJS2F77 = ${SRCS2F77:.f=.o}
SRCS2C = init_rs.c encode_rs.c decode_rs.c
OBJS2C = ${SRCS2C:.c=.o}
# ok, so far for now
# Windows start_alsa.c will be a2d.f90 jtaudio.c since it uses portaudio
# for *nix start_alsa.c will also be a2d.f90, jtaudio.c
# and start_portaudio.c for systems using portaudio
# for *nix start_alsa.c will be start_alsa.c for alsa
# for *nix start_alsa.c will be start_oss.c for oss
#
# ptt_unix.c vs. ptt.c I'll sort out later.
# ditto for cutil.c (only used on *nix)
# --db
# jtaudio.c/start_threads.c mess will have to be sorted out later
# to minimise #ifdef's
# --db
# and mostly sorted
# --db
#
SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c
OBJS3C = ${SRCS3C:.c=.o}
AUDIOSRCS = start_alsa.c
all: wsjt6
JT65code: $(OBJS1)
$(FC) -o JT65code $(OBJS1)
wsjt6: Audio.so #wsjt.spec
# ${PYTHON} c:\python23\installer\Build.py wsjt.spec
# ${RM} wsjt6
#
#
Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS)
${F2PY} -c --quiet --opt="-O -D${CFLAGS} \
-fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \
--f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \
only: $(F2PYONLY) \
: $(SRCS2F90) \
${SRCS3C} ${AUDIOSRCS}
wsjt.spec: wsjt.py astro.py g.py options.py palettes.py smeter.py specjt.py
# ${PYTHON} c:\python23\installer\makespec.py --icon wsjt.ico \
# --tk --onefile wsjt.py
.PHONY : clean
clean:
${RM} -f *.o *.so *~ JT65code wsjt6

120
Makefile.linux.gfortran Normal file
View File

@ -0,0 +1,120 @@
CC ?= gcc
FFLAGS = -g -O2 -fPIC
LDFLAGS = -L/usr/local/lib -lpthread -lasound
CPPFLAGS = -I/usr/local/include -I/usr/include/alsa -I.
CFLAGS = -Wall -O0 -g -Wall -O0 -g -fPIC
# WSJT specific C flags
CFLAGS += -DBIGSYM=1
DEFS = -DPACKAGE_NAME=\"wsjt\" -DPACKAGE_TARNAME=\"wsjt\" -DPACKAGE_VERSION=\"5.9.2\" -DPACKAGE_STRING=\"wsjt\ 5.9.2\" -DPACKAGE_BUGREPORT=\"\" -DG95_LIB_PATH=\"/usr/lib/gcc/x86_64-linux-gnu/4.0.3/\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_SYSLOG_H=1 -DHAVE_STDDEF_H=1 -DHAVE_LIBGEN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_WAIT_H=1 -DHAVE_STDIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_LINUX_PPDEV_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DTIME_WITH_SYS_TIME=1 -DSTRING_WITH_STRINGS=1 -DSIZEOF_INT64_T=8 -DSIZEOF_LONG_LONG=8 -DNDEBUG=1 -DPREFIX=\"/usr/local/\" -DUSE_SERIAL=1 -DUSE_ALSA=1 -DHAS_ASOUNDLIB_H=1 -DHAS_SOUNDCARD_H=1
CFLAGS += ${DEFS}
CPPFLAGS += ${DEFS}
# WSJT specific Fortran flags
FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none
#FFLAGS += -Wall -fbounds-check -fno-second-underscore
#FFLAGS += -cpp -fno-second-underscore
# The default rules
.c.o:
${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $<
.f.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $<
.F90.o:
${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $<
OS=Linux
G95=/usr/bin/g95
COMPILER=/usr/lib/gcc/x86_64-linux-gnu/4.0.3/
FC=/usr/bin/g95
LDFLAGS += -L${COMPILER}
LDFLAGS += -lg2c
PYTHON ?= /usr/bin/python
RM ?= /bin/rm
F2PY = /usr/bin/f2py
OBJS1 = JT65code.o nchar.o grid2deg.o packmsg.o packtext.o \
packcall.o packgrid.o unpackmsg.o unpacktext.o unpackcall.o \
unpackgrid.o deg2grid.o packdxcc.o chkmsg.o getpfx1.o \
getpfx2.o k2grid.o grid2k.o interleave63.o graycode.o set.o \
igray.o init_rs_int.o encode_rs_int.o decode_rs_int.o \
wrapkarn.o
F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0
SRCS2F90 = abc441.F90 astro0.F90 audio_init.F90 azdist0.f90 \
blanker.f90 decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \
ftn_quit.f90 get_fname.F90 getfile.F90 horizspec.f90 hscroll.f90 \
i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \
wsjtgen.F90 runqqq.F90 fivehz.F90
OBJS2F90 = ${SRCS2F90:.f90=.o}
SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \
dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f moon2.f \
MoonDop.f sun.f toxyz.f pfxdump.f \
avesp2.f bzap.f spec441.f spec2d.f mtdecode.f stdecode.f \
indexx.f s2shape.f flat2.f gen65.f chkmsg.f gen6m.f gentone.f \
syncf0.f syncf1.f synct.f decode6m.f avemsg6m.f \
set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \
ping.f longx.f peakup.f sync.f detect.f avemsg65.f decode65.f \
demod64a.f encode65.f extract.f flat1.f four2.f rfile2.f \
gencw.f getpfx1.f getpfx2.f getsnr.f graycode.f grid2k.f \
interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \
nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \
short65.f slope.f spec2d65.f sync65.f unpackcall.f \
unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f
OBJS2F77 = ${SRCS2F77:.f=.o}
SRCS2C = init_rs.c encode_rs.c decode_rs.c
OBJS2C = ${SRCS2C:.c=.o}
# ok, so far for now
# Windows start_alsa.c will be a2d.f90 jtaudio.c since it uses portaudio
# for *nix start_alsa.c will also be a2d.f90, jtaudio.c
# and start_portaudio.c for systems using portaudio
# for *nix start_alsa.c will be start_alsa.c for alsa
# for *nix start_alsa.c will be start_oss.c for oss
#
# ptt_unix.c vs. ptt.c I'll sort out later.
# ditto for cutil.c (only used on *nix)
# --db
# jtaudio.c/start_threads.c mess will have to be sorted out later
# to minimise #ifdef's
# --db
# and mostly sorted
# --db
#
SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c
OBJS3C = ${SRCS3C:.c=.o}
AUDIOSRCS = start_alsa.c
all: wsjt6
JT65code: $(OBJS1)
$(FC) -o JT65code $(OBJS1)
wsjt6: Audio.so #wsjt.spec
# ${PYTHON} c:\python23\installer\Build.py wsjt.spec
# ${RM} wsjt6
#
#
Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS)
${F2PY} -c --opt="-O ${CFLAGS} -fPIC \
-fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \
--f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \
only: $(F2PYONLY) \
: $(SRCS2F90) \
${SRCS3C} ${AUDIOSRCS}
wsjt.spec: wsjt.py astro.py g.py options.py palettes.py smeter.py specjt.py
# ${PYTHON} c:\python23\installer\makespec.py --icon wsjt.ico \
# --tk --onefile wsjt.py
.PHONY : clean
clean:
${RM} -f *.o *.so *~ JT65code wsjt6

View File

2
bzap.f
View File

@ -32,7 +32,7 @@ C This is a kludge:
ib=(fzap(izap)+tol)/df ib=(fzap(izap)+tol)/df
smax=0. smax=0.
do i=ia+1,ib+1 do i=ia+1,ib+1
s=real(c(i))**2 + imag(c(i))**2 s=real(c(i))**2 + aimag(c(i))**2
if(s.gt.smax) then if(s.gt.smax) then
smax=s smax=s
ipk=i ipk=i

2573
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -81,7 +81,7 @@ AC_PATH_PROG(LD, ld)
AC_PATH_PROG(TEST, [test], [test]) AC_PATH_PROG(TEST, [test], [test])
AC_PATH_PROG(PYTHON, python) AC_PATH_PROG(PYTHON, python)
AC_PATH_PROG(F2PY, f2py) AC_PATH_PROG(F2PY, f2py)
AC_PATH_PROG(G95, g95) AC_PATH_PROG(G95, gfortran)
AC_MSG_CHECKING([g95 lib path]) AC_MSG_CHECKING([g95 lib path])
G95_LIB_PATH=`${G95} -print-file-name=` G95_LIB_PATH=`${G95} -print-file-name=`
@ -324,7 +324,7 @@ AC_SUBST(LDFLAGS, "${LDFLAGS}")
AC_SUBST(CFLAGS) AC_SUBST(CFLAGS)
AC_OUTPUT AC_OUTPUT
AC_CONFIG_FILES(Makefile) dnl AC_CONFIG_FILES(Makefile)
dnl do summary dnl do summary

57
cutil.c
View File

@ -1,46 +1,45 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/times.h>
#include <time.h>
#include <sys/time.h>
/* FORTRAN: fd = close(filedes) */ /* FORTRAN: fd = close(filedes) */
close_(filedes) int close_(int *filedes)
int *filedes;
{ {
return(close(*filedes)); return(close(*filedes));
} }
/* FORTRAN: fd = open(filnam,mode) */ /* FORTRAN: fd = open(filnam,mode) */
open_(filnam,mode) int open_(char filnam[], int *mode)
char filnam[];
int *mode;
{ {
return(open(filnam,*mode)); return(open(filnam,*mode));
} }
/* FORTRAN: fd = creat(filnam,mode) */ /* FORTRAN: fd = creat(filnam,mode) */
creat_(filnam,mode) int creat_(char filnam[],int *mode)
char filnam[];
int *mode;
{ {
return(creat(filnam,*mode)); return(creat(filnam,*mode));
} }
/* FORTRAN: nread = read(fd,buf,n) */ /* FORTRAN: nread = read(fd,buf,n) */
read_(fd,buf,n) int read_(int *fd, char buf[], int *n)
int *fd,*n;
char buf[];
{ {
return(read(*fd,buf,*n)); return(read(*fd,buf,*n));
} }
/* FORTRAN: nwrt = write(fd,buf,n) */ /* FORTRAN: nwrt = write(fd,buf,n) */
write_(fd,buf,n) int write_(int *fd, char buf[], int *n)
int *fd,*n;
char buf[];
{ {
return(write(*fd,buf,*n)); return(write(*fd,buf,*n));
} }
/* FORTRAN: ns = lseek(fd,offset,origin) */ /* FORTRAN: ns = lseek(fd,offset,origin) */
lseek_(fd,offset,origin) int lseek_(int *fd,int *offset, int *origin)
int *fd,*offset,*origin;
{ {
return(lseek(*fd,*offset,*origin)); return(lseek(*fd,*offset,*origin));
} }
/* times(2) */ /* times(2) */
times_(buf) int times_(struct tms *buf)
int buf[];
{ {
return (times(buf)); return (times(buf));
} }
@ -53,34 +52,32 @@ int buf[];
//} //}
/* usleep(3) */ /* usleep(3) */
usleep_(microsec) int usleep_(unsigned long *microsec)
unsigned long *microsec;
{ {
return (usleep(*microsec)); return (usleep(*microsec));
} }
/* returns random numbers between 0 and 32767 to FORTRAN program */ /* returns random numbers between 0 and 32767 to FORTRAN program */
iran_(arg) int iran_(int *arg)
int *arg;
{ {
return (rand()); return (rand());
} }
exit_(n) int exit_(int *n)
int *n;
{ {
printf("\n\n"); printf("\n\n");
exit(*n); exit(*n);
} }
#include <time.h>
time_t time_() time_t time_(void)
{ {
return time(0); return time(0);
} }
/* hrtime() */ /* hrtime() */
double hrtime_() double hrtime_(void)
{ {
int tv[2],tz[2]; struct timeval tv;
gettimeofday(tv,tz); struct timezone tz;
return(tv[0]+1.e-6*tv[1]); gettimeofday(&tv,&tz);
return(tv.tv_sec+1.e-6*tv.tv_usec);
} }

View File

@ -24,7 +24,7 @@ c real s2(128,646)
data pua/'0123456789., /#?$ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ data pua/'0123456789., /#?$ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
data offset/20.6/ data offset/20.6/
ps(zz)=real(zz)**2 + imag(zz)**2 !Power spectrum function ps(zz)=real(zz)**2 + aimag(zz)**2 !Power spectrum function
C Convert data to baseband (complex result) using quadrature LO. C Convert data to baseband (complex result) using quadrature LO.
twopi=8*atan(1.d0) twopi=8*atan(1.d0)

View File

@ -8,7 +8,7 @@
character*22 decoded,deepmsg character*22 decoded,deepmsg
character*22 testmsg(2*MAXCALLS + 2 + MAXRPT) character*22 testmsg(2*MAXCALLS + 2 + MAXRPT)
character*15 callgrid(MAXCALLS) character*15 callgrid(MAXCALLS)
character*80 line character*180 line
character*4 rpt(MAXRPT) character*4 rpt(MAXRPT)
logical first logical first
integer ncode(63,2*MAXCALLS) integer ncode(63,2*MAXCALLS)
@ -42,8 +42,12 @@
if(ichar(grid(3:3)).eq.0) grid(3:3)=' ' if(ichar(grid(3:3)).eq.0) grid(3:3)=' '
if(ichar(grid(4:4)).eq.0) grid(4:4)=' ' if(ichar(grid(4:4)).eq.0) grid(4:4)=' '
else else
read(23,1002,end=20) line C read(23,'A80',END=20) line !FIXME: Segfault happened here.
1002 format(a80) read(23,1002,end=20) line !FIXME: Segfault happened here.
1002 format (A80)
C Probably due to line only being 80 chars long, and the read not
C limiting the read.
C 1002 format(A80)
if(line(1:2).eq.'//') go to 10 if(line(1:2).eq.'//') go to 10
i1=index(line,',') i1=index(line,',')
if(i1.lt.4) go to 10 if(i1.lt.4) go to 10

View File

@ -19,10 +19,10 @@ C Compute powers at the tone frequencies using 1-sample steps.
csum=csum+c(i) csum=csum+c(i)
enddo enddo
y(1)=real(csum)**2 + imag(csum)**2 y(1)=real(csum)**2 + aimag(csum)**2
do i=2,npts-(NSPD-1) do i=2,npts-(NSPD-1)
csum=csum-c(i-1)+c(i+NSPD-1) csum=csum-c(i-1)+c(i+NSPD-1)
y(i)=real(csum)**2 + imag(csum)**2 y(i)=real(csum)**2 + aimag(csum)**2
enddo enddo
return return

5
fivehz.h Normal file
View File

@ -0,0 +1,5 @@
#include <inttypes.h>
void addnoise_(int16_t *n2);
void fivehztx_(void);
void fivehz_(void);

View File

@ -2,8 +2,8 @@
!--------------------------------------------------------------------------- !---------------------------------------------------------------------------
integer NRXMAX !Max length of Rx ring buffers integer NRXMAX !Max length of Rx ring buffers
integer NTXMAX !Max length of Tx waveform in samples integer NTXMAX !Max length of Tx waveform in samples
parameter(NRXMAX=2048*1024) parameter(NRXMAX=2097152) ! =2048*1024
parameter(NTXMAX=150*11025) parameter(NTXMAX=1653750) ! =150*11025
real*8 tbuf !Tsec at time of input callback SoundIn real*8 tbuf !Tsec at time of input callback SoundIn
integer ntrbuf !(obsolete?) integer ntrbuf !(obsolete?)
real*8 Tsec !Present time SoundIn,SoundOut real*8 Tsec !Present time SoundIn,SoundOut

View File

@ -6,7 +6,7 @@ subroutine getfile(fname,len)
use dflib use dflib
#endif #endif
parameter (NDMAX=60*11025) parameter (NDMAX=661500) ! =60*11025
character*(*) fname character*(*) fname
include 'gcom1.f90' include 'gcom1.f90'
include 'gcom2.f90' include 'gcom2.f90'

View File

@ -39,7 +39,7 @@ subroutine horizspec(x,brightness,contrast,a)
call xfft2(y,nfft) call xfft2(y,nfft)
nq=nfft/4 nq=nfft/4
do i=1,nq do i=1,nq
ss(i)=real(c(i))**2 + imag(c(i))**2 ss(i)=real(c(i))**2 + aimag(c(i))**2
enddo enddo
p=0. p=0.

2
ps.f
View File

@ -16,7 +16,7 @@
call xfft(x,nfft) call xfft(x,nfft)
fac=1.0/nfft fac=1.0/nfft
do i=1,nh do i=1,nh
s(i)=fac*(real(c(i))**2 + imag(c(i))**2) s(i)=fac*(real(c(i))**2 + aimag(c(i))**2)
enddo enddo
return return

View File

@ -63,15 +63,18 @@ int fd; /* Used for both serial and parallel */
#define TTYNAME "/dev/cuad%d" /* Use non blocking form */ #define TTYNAME "/dev/cuad%d" /* Use non blocking form */
#else #else
#include <sys/io.h> #include <sys/io.h>
#define TTYNAME "/dev/ttyS%d" #define TTYNAME "/dev/ttyUSB%d"
#endif #endif
/* Not quite right for size but '%d + 1' should be plenty enough -db */ /* Not quite right for size but '%d + 1' should be plenty enough -db */
#define TTYNAME_SIZE sizeof(TTYNAME)+1 /* As TTYNAME is a string, just at 20 chars do udevd is happier. */
/* E.g. USB serial ports appear as /dev/ttyUSB0 */
#define TTYNAME_SIZE sizeof(TTYNAME)+20
int int
ptt_(int *nport, int *ntx, int *iptt) ptt_(int *nport, int *ntx, int *iptt)
{ {
/* Fixme, nport should be a sting and not a number */
static int nopen=0; static int nopen=0;
int control = TIOCM_RTS | TIOCM_DTR; int control = TIOCM_RTS | TIOCM_DTR;
@ -87,6 +90,7 @@ ptt_(int *nport, int *ntx, int *iptt)
s[TTYNAME_SIZE] = '\0'; s[TTYNAME_SIZE] = '\0';
/* open the device */ /* open the device */
printf("Opening %s\n", s);
if ((fd = open(s, O_RDWR | O_NDELAY)) < 0) { if ((fd = open(s, O_RDWR | O_NDELAY)) < 0) {
fprintf(stderr, "Can't open %s.\n", s); fprintf(stderr, "Can't open %s.\n", s);
return(1); return(1);

View File

@ -52,13 +52,17 @@ C Determine the reference symbols for each data symbol.
m=mdat(k) m=mdat(k)
mref(k,1)=mr1 mref(k,1)=mr1
do n=1,10 !Get ref symbol before data do n=1,10 !Get ref symbol before data
if((m-n.gt.0) .and. pr(m-n).gt.0.0) go to 10 if((m-n).gt.0) then
if (pr(m-n).gt.0.0) go to 10
endif
enddo enddo
go to 12 go to 12
10 mref(k,1)=m-n 10 mref(k,1)=m-n
12 mref(k,2)=mr2 12 mref(k,2)=mr2
do n=1,10 !Get ref symbol after data do n=1,10 !Get ref symbol after data
if((m+n).le.nsym .and. pr(m+n).gt.0.0) go to 20 if((m+n).le.nsym) then
if (pr(m+n).gt.0.0) go to 20
endif
enddo enddo
go to 22 go to 22
20 mref(k,2)=m+n 20 mref(k,2)=m+n
@ -82,13 +86,17 @@ C Now do it all again, using opposite logic on pr(i)
m=mdat2(k) m=mdat2(k)
mref2(k,1)=mr1 mref2(k,1)=mr1
do n=1,10 do n=1,10
if((m-n.gt.0) .and. pr(m-n).lt.0.0) go to 110 if((m-n).gt.0) then
if (pr(m-n).lt.0.0) go to 110
endif
enddo enddo
go to 112 go to 112
110 mref2(k,1)=m-n 110 mref2(k,1)=m-n
112 mref2(k,2)=mr2 112 mref2(k,2)=mr2
do n=1,10 do n=1,10
if((m+n).le.nsym .and. pr(m+n).lt.0.0) go to 120 if((m+n).le.nsym) then
if (pr(m+n).lt.0.0) go to 120
endif
enddo enddo
go to 122 go to 122
120 mref2(k,2)=m+n 120 mref2(k,2)=m+n

View File

@ -141,7 +141,7 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
call xfft2(x,nfft) call xfft2(x,nfft)
do i=1,nq !Accumulate power spectrum do i=1,nq !Accumulate power spectrum
ss(i)=ss(i) + real(c(i))**2 + imag(c(i))**2 ss(i)=ss(i) + real(c(i))**2 + aimag(c(i))**2
enddo enddo
nsum=nsum+1 nsum=nsum+1

View File

@ -34,14 +34,14 @@ C bins are shifted down 5 bins from their natural positions.
sum=0. sum=0.
do i=1,NQ do i=1,NQ
s2(i,n)=real(c(5+i))**2 + imag(c(5+i))**2 s2(i,n)=real(c(5+i))**2 + aimag(c(5+i))**2
sum=sum+s2(i,n) sum=sum+s2(i,n)
enddo enddo
s(n)=sum/NQ s(n)=sum/NQ
C Accumulate average spectrum for the whole file. C Accumulate average spectrum for the whole file.
do i=1,nh do i=1,nh
psavg0(i) = psavg0(i)+ real(c(i))**2 + imag(c(i))**2 psavg0(i) = psavg0(i)+ real(c(i))**2 + aimag(c(i))**2
enddo enddo
enddo enddo

View File

@ -43,7 +43,7 @@ C Mix sync tone down to f=5*df (==> bin 6 of array cx, after FFT)
call four2a(cx,nfft,1,-1,1) call four2a(cx,nfft,1,-1,1)
do i=1,77 do i=1,77
s(i)=s(i) + real(cx(i))**2 + imag(cx(i))**2 s(i)=s(i) + real(cx(i))**2 + aimag(cx(i))**2
enddo enddo
else else

View File

@ -18,7 +18,7 @@ C Returns spectral array and frequency of peak value.
call move(dat(j),x,NFFT) call move(dat(j),x,NFFT)
call xfft(x,NFFT) call xfft(x,NFFT)
do i=1,NH do i=1,NH
s(i)=s(i)+real(c(i))**2 + imag(c(i))**2 s(i)=s(i)+real(c(i))**2 + aimag(c(i))**2
enddo enddo
enddo enddo

View File

@ -19,7 +19,7 @@ c = -1 means sort x in decreasing order (ignoring y)
c = -2 means sort x in decreasing order and carry y along. c = -2 means sort x in decreasing order and carry y along.
integer kflag, n integer kflag, n
real x(*), y(*) real x(n), y(n)
real r, t, tt, tty, ty real r, t, tt, tty, ty
integer i, ij, j, k, kk, l, m, nn integer i, ij, j, k, kk, l, m, nn
integer il(21), iu(21) integer il(21), iu(21)

View File

@ -4,9 +4,13 @@
#include <alsa/asoundlib.h> #include <alsa/asoundlib.h>
#include <inttypes.h> #include <inttypes.h>
#include <time.h> #include <time.h>
#include <sys/time.h>
#include "fivehz.h"
#if 0 #if 1
#define ALSA_LOG #define ALSA_LOG
#endif
#if 0
#define ALSA_LOG_BUFFERS #define ALSA_LOG_BUFFERS
#endif #endif
#if 0 #if 0
@ -22,7 +26,7 @@ typedef struct alsa_driver_s {
int open_mode; int open_mode;
int has_pause_resume; int has_pause_resume;
int is_paused; int is_paused;
int32_t output_sample_rate, input_sample_rate; uint32_t output_sample_rate, input_sample_rate;
double sample_rate_factor; double sample_rate_factor;
uint32_t num_channels; uint32_t num_channels;
uint32_t bits_per_sample; uint32_t bits_per_sample;
@ -75,7 +79,7 @@ static int ao_alsa_open(alsa_driver_t *this_gen, int32_t *input_rate, snd_pcm_st
int err, dir; int err, dir;
int open_mode=1; /* NONBLOCK */ int open_mode=1; /* NONBLOCK */
/* int open_mode=0; BLOCK */ /* int open_mode=0; BLOCK */
int32_t rate=*input_rate; uint32_t rate=*input_rate;
this->input_sample_rate=*input_rate; this->input_sample_rate=*input_rate;
snd_pcm_hw_params_alloca(&params); snd_pcm_hw_params_alloca(&params);
@ -83,7 +87,12 @@ static int ao_alsa_open(alsa_driver_t *this_gen, int32_t *input_rate, snd_pcm_st
err = snd_output_stdio_attach(&jcd_out, stdout, 0); err = snd_output_stdio_attach(&jcd_out, stdout, 0);
this->num_channels = 2; this->num_channels = 2;
if (direction == SND_PCM_STREAM_PLAYBACK) {
pcm_device="plug:front";
} else {
pcm_device="default"; pcm_device="default";
}
#ifdef ALSA_LOG #ifdef ALSA_LOG
printf("audio_alsa_out: Audio Device name = %s\n",pcm_device); printf("audio_alsa_out: Audio Device name = %s\n",pcm_device);
printf("audio_alsa_out: Number of channels = %d\n",this->num_channels); printf("audio_alsa_out: Number of channels = %d\n",this->num_channels);
@ -114,8 +123,8 @@ static int ao_alsa_open(alsa_driver_t *this_gen, int32_t *input_rate, snd_pcm_st
*/ */
err = snd_pcm_hw_params_any(this->audio_fd, params); err = snd_pcm_hw_params_any(this->audio_fd, params);
if (err < 0) { if (err < 0) {
printf ("audio_alsa_out: broken configuration for this PCM: no configurations available: %s\n"), printf ("audio_alsa_out: broken configuration for this PCM: no configurations available: %s\n",
snd_strerror(err); snd_strerror(err));
goto close; goto close;
} }
/* set interleaved access */ /* set interleaved access */
@ -378,7 +387,7 @@ int playback_callback(alsa_driver_t *alsa_driver_playback) {
result = snd_pcm_writen(this->audio_fd, alsa_playback_buffers, this->period_size); result = snd_pcm_writen(this->audio_fd, alsa_playback_buffers, this->period_size);
this->tx_offset += this->period_size; this->tx_offset += this->period_size;
if (result != this->period_size) { if (result != this->period_size) {
printf("Playback write failed. Expected %d samples, sent only %d\n", this->period_size, result); printf("Playback write failed. Expected %lu samples, sent only %d\n", this->period_size, result);
#ifdef ALSA_PLAYBACK_LOG #ifdef ALSA_PLAYBACK_LOG
snd_pcm_status_t *pcm_stat; snd_pcm_status_t *pcm_stat;
snd_pcm_status_alloca(&pcm_stat); snd_pcm_status_alloca(&pcm_stat);
@ -387,6 +396,7 @@ int playback_callback(alsa_driver_t *alsa_driver_playback) {
#endif #endif
} }
fivehztx_(); //Call fortran routine fivehztx_(); //Call fortran routine
return result;
} }
int capture_callback(alsa_driver_t *alsa_driver_capture) { int capture_callback(alsa_driver_t *alsa_driver_capture) {
@ -431,6 +441,7 @@ int capture_callback(alsa_driver_t *alsa_driver_capture) {
snd_pcm_status_dump(pcm_stat, jcd_out); snd_pcm_status_dump(pcm_stat, jcd_out);
#endif #endif
fivehz_(); //Call fortran routine fivehz_(); //Call fortran routine
return result;
} }
int playback_xrun(alsa_driver_t *alsa_driver_playback) { int playback_xrun(alsa_driver_t *alsa_driver_playback) {
@ -441,6 +452,7 @@ int playback_xrun(alsa_driver_t *alsa_driver_playback) {
snd_pcm_status(this->audio_fd, pcm_stat); snd_pcm_status(this->audio_fd, pcm_stat);
snd_pcm_status_dump(pcm_stat, jcd_out); snd_pcm_status_dump(pcm_stat, jcd_out);
snd_pcm_prepare(this->audio_fd); snd_pcm_prepare(this->audio_fd);
return 0;
} }
int capture_xrun(alsa_driver_t *alsa_driver_capture) { int capture_xrun(alsa_driver_t *alsa_driver_capture) {
@ -450,6 +462,7 @@ int capture_xrun(alsa_driver_t *alsa_driver_capture) {
printf("capture xrun\n"); printf("capture xrun\n");
snd_pcm_status(this->audio_fd, pcm_stat); snd_pcm_status(this->audio_fd, pcm_stat);
snd_pcm_status_dump(pcm_stat, jcd_out); snd_pcm_status_dump(pcm_stat, jcd_out);
return 0;
} }
void ao_alsa_loop(void *iarg) { void ao_alsa_loop(void *iarg) {
@ -478,9 +491,9 @@ void ao_alsa_loop(void *iarg) {
capture_index = nfds; capture_index = nfds;
nfds += capture_nfds; nfds += capture_nfds;
while(1) { while(1) {
if (poll (pfd, nfds, 100000) < 0) { if (poll (pfd, nfds, 200000) < 0) {
printf("poll failed\n"); printf("poll failed\n");
return; continue;
} }
snd_pcm_poll_descriptors_revents(alsa_driver_playback.audio_fd, &pfd[0], playback_nfds, &playback_revents); snd_pcm_poll_descriptors_revents(alsa_driver_playback.audio_fd, &pfd[0], playback_nfds, &playback_revents);
snd_pcm_poll_descriptors_revents(alsa_driver_capture.audio_fd, &pfd[capture_index], capture_nfds, &capture_revents); snd_pcm_poll_descriptors_revents(alsa_driver_capture.audio_fd, &pfd[capture_index], capture_nfds, &capture_revents);
@ -506,7 +519,7 @@ void ao_alsa_loop(void *iarg) {
return; return;
} }
extern void decode1_(int *iarg); void decode1_(void *iarg);
int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[], int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
int *nbuflen, int *iwrite, short iwave[], int *nbuflen, int *iwrite, short iwave[],
@ -517,7 +530,7 @@ int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
{ {
pthread_t thread1,thread2; pthread_t thread1,thread2;
int iret1,iret2; int iret1,iret2;
int iarg1 = 1,iarg2 = 2; int iarg1 = 1;
//int32_t rate=11025; //int32_t rate=11025;
int32_t rate=*nfsample; int32_t rate=*nfsample;
alsa_driver_capture.app_buffer_y1 = y1; alsa_driver_capture.app_buffer_y1 = y1;
@ -537,7 +550,7 @@ int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
alsa_driver_playback.transmitting = Transmitting; alsa_driver_playback.transmitting = Transmitting;
alsa_driver_playback.ndsec = ndsec; alsa_driver_playback.ndsec = ndsec;
// printf("start_threads: creating thread for decode1\n"); // printf("start_threads: creating thread for decode1\n");
iret1 = pthread_create(&thread1,NULL,decode1_,&iarg1); iret1 = pthread_create(&thread1,NULL,(void*)&decode1_,&iarg1);
/* Open audio card. */ /* Open audio card. */
printf("Using ALSA sound.\n"); printf("Using ALSA sound.\n");
ao_alsa_open(&alsa_driver_playback, &rate, SND_PCM_STREAM_PLAYBACK); ao_alsa_open(&alsa_driver_playback, &rate, SND_PCM_STREAM_PLAYBACK);
@ -546,9 +559,10 @@ int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
/* /*
* Start audio io thread * Start audio io thread
*/ */
iret2 = pthread_create(&thread2, NULL, ao_alsa_loop, NULL); iret2 = pthread_create(&thread2, NULL, (void *)&ao_alsa_loop, NULL);
snd_pcm_prepare(alsa_driver_capture.audio_fd); snd_pcm_prepare(alsa_driver_capture.audio_fd);
snd_pcm_start(alsa_driver_capture.audio_fd); snd_pcm_start(alsa_driver_capture.audio_fd);
snd_pcm_prepare(alsa_driver_playback.audio_fd); snd_pcm_prepare(alsa_driver_playback.audio_fd);
//snd_pcm_start(alsa_driver_playback.audio_fd); //snd_pcm_start(alsa_driver_playback.audio_fd);
return 0;
} }

8
sync.f
View File

@ -9,6 +9,8 @@ C before decimation by NSPD.
real y3(npts) real y3(npts)
real y4(npts) real y4(npts)
real zf(NSPD) real zf(NSPD)
real tmp1
real tmp2
complex csum complex csum
integer nsum(NSPD) integer nsum(NSPD)
real z(65538) !Ready for FSK110 real z(65538) !Ready for FSK110
@ -51,7 +53,7 @@ C Now find the apparent baud rate.
ia=391.0/df !Was 341/df ia=391.0/df !Was 341/df
ib=491.0/df !Was 541/df ib=491.0/df !Was 541/df
do i=ia,ib do i=ia,ib
z(i)=real(cz(i))**2 + imag(cz(i))**2 z(i)=real(cz(i))**2 + aimag(cz(i))**2
if(z(i).gt.zmax) then if(z(i).gt.zmax) then
zmax=z(i) zmax=z(i)
baud=df*i baud=df*i
@ -64,7 +66,9 @@ C Find phase of signal at 441 Hz.
pha=j*twopi/NSPD pha=j*twopi/NSPD
csum=csum+zf(j)*cmplx(cos(pha),-sin(pha)) csum=csum+zf(j)*cmplx(cos(pha),-sin(pha))
enddo enddo
pha=-atan2(imag(csum),real(csum)) tmp1=aimag(csum)
tmp2=real(csum)
pha=-atan2(tmp1,tmp2)
jpk=nint(NSPD*pha/twopi) jpk=nint(NSPD*pha/twopi)
if(jpk.lt.1) jpk=jpk+NSPD if(jpk.lt.1) jpk=jpk+NSPD

View File

@ -10,7 +10,7 @@ C Finds sync tone and determines aproximate values for jstart and f0.
complex z complex z
equivalence (x,cx) equivalence (x,cx)
ps(z)=real(z)**2 + imag(z)**2 !Power spectrum function ps(z)=real(z)**2 + aimag(z)**2 !Power spectrum function
call zero(s2,6*128) !Clear average call zero(s2,6*128) !Clear average
df=11025./512. df=11025./512.

View File

@ -17,7 +17,7 @@ C Returns a refined value of f0, the sync-tone frequency.
complex z complex z
equivalence (x,c) equivalence (x,c)
ps(z)=real(z)**2 + imag(z)**2 !Power spectrum ASF ps(z)=real(z)**2 + aimag(z)**2 !Power spectrum ASF
C Accumulate a high-resolution average spectrum C Accumulate a high-resolution average spectrum
df=11025.0/NFFT df=11025.0/NFFT

View File

@ -10,7 +10,7 @@ C Gets a refined value of jstart.
complex c,c1,zz complex c,c1,zz
common/hcom/c(NMAX) common/hcom/c(NMAX)
ps(zz)=real(zz)**2 + imag(zz)**2 !Power spectrum function ps(zz)=real(zz)**2 + aimag(zz)**2 !Power spectrum function
C Convert data to baseband (complex result) using quadrature LO. C Convert data to baseband (complex result) using quadrature LO.
twopi=8*atan(1.d0) twopi=8*atan(1.d0)

View File

@ -1,4 +1,4 @@
#------------------------------------------------------------------ WSJT #------------------------------------------------------------------- WSJT
from Tkinter import * from Tkinter import *
from tkFileDialog import * from tkFileDialog import *
import Pmw import Pmw
@ -1279,6 +1279,7 @@ def update():
azdist() azdist()
g.nfreq=nfreq.get() g.nfreq=nfreq.get()
if Audio.gcom2.ndecoding==0:
g.AzSun,g.ElSun,g.AzMoon,g.ElMoon,g.AzMoonB,g.ElMoonB,g.ntsky, \ g.AzSun,g.ElSun,g.AzMoon,g.ElMoon,g.AzMoonB,g.ElMoonB,g.ntsky, \
g.ndop,g.ndop00,g.dbMoon,g.RAMoon,g.DecMoon,g.HA8,g.Dgrd, \ g.ndop,g.ndop00,g.dbMoon,g.RAMoon,g.DecMoon,g.HA8,g.Dgrd, \
g.sd,g.poloffset,g.MaxNR,g.dfdt,g.dfdt0,g.RaAux,g.DecAux, \ g.sd,g.poloffset,g.MaxNR,g.dfdt,g.dfdt0,g.RaAux,g.DecAux, \

View File

View File

@ -12,7 +12,7 @@ subroutine wsjtgen
parameter (NMSGMAX=28) !Max characters per message parameter (NMSGMAX=28) !Max characters per message
parameter (NSPD=25) !Samples per dit parameter (NSPD=25) !Samples per dit
parameter (NDPC=3) !Dits per character parameter (NDPC=3) !Dits per character
parameter (NWMAX=60*11025) !Max length of waveform parameter (NWMAX=661500) !Max length of waveform = 60*11025
parameter (NTONES=4) !Number of FSK tones parameter (NTONES=4) !Number of FSK tones
integer itone(84) integer itone(84)
@ -74,10 +74,13 @@ subroutine wsjtgen
go to 999 go to 999
14 read(18) hdr 14 read(18) hdr
if(ndata.gt.NTxMax) ndata=NTxMax if(ndata.gt.NTxMax) ndata=NTxMax
nwave=ndata call rfile(18,iwave,ndata,ierr)
call rfile(18,iwave,2*nwave,ierr)
close(18) close(18)
if(ierr.ne.0) print*,'Error reading test file ',msg(2:) if(ierr.ne.0) print*,'Error reading test file ',msg(2:)
nwave=ndata/2
do i=nwave,NTXMAX
iwave(i)=0
enddo
endif endif
go to 999 go to 999
endif endif