Commit Graph

159 Commits

Author SHA1 Message Date
Bill Somerville
d431e2cecd Restructuring in preparation for direct decoder invocation from wsjtx
Re-factor the JT4, JT65 and JT9 decoders as Fortran modules using type
bound  procedures, the  decoder types  implement a  callback procedure
such that he client of the decoder can interpret the decode results as
they need.

The JT4 decoder has a  second callback that delivers message averaging
status.  Also the  previously separate  source files  lib/jt4a.f90 and
lib/avg4.f90 have been merged  into lib/jt4_decode.f90 as private type
bound procedures of the new jt4_decoder type.

Re-factored the lib/decoder.f90 subroutine  to utilize the new decoder
types. Added local procedures to process decodes and averaging results
including the necessary OpenMP synchronization directives for parallel
JT9+JT65 decoding.

Added the  jt65_test module  which is  a basic  test harness  for JT65
decoding. Re-factored  the jt65 utility  to utilize the  new jt65_test
module.

Changed a  few integers  to logical variables  where their  meaning is
clearly binary.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6324 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-29 23:52:55 +00:00
Bill Somerville
d6457af36e Rename some sources in prep for decode callback implementation
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6323 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-29 23:52:46 +00:00
Bill Somerville
f416a52def Make Fortran profiling timer function a callback with a default null implementation
Groundwork for calling the decoders directly from C/C++ threads.

To  access   the  timer   module  timer_module   must  now   be  used.
Instrumented code need  only use the module function  'timer' which is
now a  procedure pointer that  is guaranteed to be  associated (unless
null()  is assigned  to it,  which should  not be  done). The  default
behaviour of 'timer' is to do nothing.

If a  Fortran program  wishes to  profile code it  should now  use the
timer_impl module  which contains a default  timer implementation. The
main program should call 'init_timer([filename])' before using 'timer'
or     calling     routines     that     are     instrumented.      If
'init_timer([filename])'.  If it is called  then an optional file name
may  be  provided  with  'timer.out'  being used  as  a  default.  The
procedure 'fini_timer()' may be called to close the file.

The default  timer implementation is  thread safe if used  with OpenMP
multi-threaded code  so long as  the OpenMP  thread team is  given the
copyin(/timer_private/) attribute  for correct operation.   The common
block /timer_private/ should  be included for OpenMP  use by including
the file 'timer_common.inc'.

The module 'lib/timer_C_wrapper.f90' provides  a Fortran wrapper along
with 'init' and 'fini' subroutines  which allow a C/C++ application to
call timer instrumented  Fortran code and for it  to receive callbacks
of 'timer()' subroutine invocations.  No C/C++ timer implementation is
provided at this stage.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6320 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-27 15:40:57 +00:00
Bill Somerville
924e20efa8 Add a sample download dialog and upload sub-system
Samples are  downloaded from a  web server, currently the  SF download
server.   The samples  are  stored in  the  source controlled  samples
directory and the CMake script  there builds a suitable directory tree
for upload to the web  server under samples/web containing the samples
hierarchy and the  generated JSON contents database  file. The samples
CMake script also  defines an 'upload-samples' target  that uses rsync
to efficiently upload  the samples and the  accompanying contents JSON
database file.

Any directory structure under the samples directory may be created, to
add a new sample file simply add  the file to source control and amend
the list of sample files (SAMPLE_FILES) in samples/CMakeLists.txt.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6308 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-24 11:41:05 +00:00
Bill Somerville
d5bc774641 Get rid of jt9com and npar common blocks
Also  use correct  C binding  and have  compilers determine  sizes and
offsets.

The wsjtx.exe program now owns the  decoder shared data that is shared
with symspec.  It is now in  struct dec_data, still a  global variable
for now but hopefully a MainWindow member variable soon.

The struct  dec_data (in both C/C++  and Fortran) has a  sub structure
with the decoder  parameters which enables copying  and manipulating a
lot cleaner.

New  of  changed types  of  shared  data  must  still be  modified  in
commons.h and a  new file lib/jt9com.f90, they must stay  in sync as a
pointer to the structure is passed between C and Fortran.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6290 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-17 20:29:55 +00:00
Bill Somerville
5f9ed5a5ac Tidy up command line processing in Fortran tools
Build script now  builds jt65. The tools jt65 and  jt65sim usilize the
options module for all comamnd line parsing.

The  tool  jt65sim  now  has  conventinal  command  line  options  and
switchs. Default values have been  added where appropriate and options
documentation  updated. An  option to  disable PRNG  seeding has  been
added.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6276 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-15 15:35:04 +00:00
Bill Somerville
3962a3514a More PRNG rationalization
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6274 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-15 01:36:05 +00:00
Bill Somerville
6be4f3d376 Rationalize random number seeding in C and Fortran
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6272 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-14 19:40:44 +00:00
Bill Somerville
c5ea6938d3 Another attempt to get installed locations right
That is, right for all platforms with both local and package installs.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6248 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-08 20:39:50 +00:00
Bill Somerville
5d19eb3ee7 Fix a regression in the configured r/o data location
This change  will require the  following CMakeCache.txt entries  to be
deleted:

WSJTX_DATA_DESTINATION
WSJTX_DOC_DESTINATION

so that default values ca be substituted by CMake.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6244 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-08 00:22:48 +00:00
Joe Taylor
12d5ec8902 Morphing sfrsd toward ftrsd...
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6241 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-12-07 13:44:00 +00:00
Bill Somerville
859a5ef416 Make install locations configuration variables
Locations  of various  components  to be  determined at  configuration
time.   This  allows   various   "Standard"  system   layouts  to   be
accomodated. For example on FreeBSD the manpages are usually installed
in the man directory i.e. /usr/local/man whereas the WSJT-X default is
to install them in share/man i.e. /usr/share/man. By setting the CMake
variable  WSJT_MANPAGE_DESTINATION to  either a  relative or  absolute
path the install location can be set:

  $ cmake -D WSJT_MANPAGE_DESTINATION=. ...

will install the manpages at ${CMAKE_INSTALL_PREFIX}/man

The new configuration variables are:

 WSJT_BIN_DESTINATION
 WSJT_LIB_DESTINATION
 WSJT_SHARE_DESTINATION
 WSJT_DOC_DESTINATION
 WSJT_DATA_DESTINATION
 WSJT_MANPAGE_DESTINATION
 WSJT_PLUGIN_DESTINATION
 WSJT_QT_CONF_DESTINATION

NB: changes to the above may break WSJT-X at present where the install
    locations of files used directly by WSJT-X are moved.

Warning: using absolute  paths for these variables  is not recommended
as files may be installed  in unexpected places, particularly when run
with  root  privileges.  All  relative   paths  with  be  relative  to
CMAKE_INSTALL_PREFIX.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6192 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-26 19:45:10 +00:00
Bill Somerville
51b76386b1 Correct build script typo
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6191 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-26 19:45:05 +00:00
Bill Somerville
155118076c Added jt65sim target to build - not installed nor packaged
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6180 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-25 19:36:32 +00:00
Joe Taylor
13c9938607 Implement (still in very basic form) experience-based decoding for JT65.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6174 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-24 19:49:04 +00:00
Joe Taylor
475118428e Add facility to degrade S/N of data from .wav files.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6165 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-23 18:05:36 +00:00
Joe Taylor
07080f7ef3 Decode JT65 first at QSO frequency.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6164 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-23 15:57:33 +00:00
Bill Somerville
723200ae80 Revert "Correct architecture name for PPC packages"
This reverts commit r6157.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6159 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-23 11:42:52 +00:00
Bill Somerville
ef2fdc378b Correct architecture name for PPC packages
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6157 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-23 00:27:52 +00:00
Bill Somerville
18cf246785 Add a simple UDP server reference console application
A small application demonstrating the usage of the MessageServer class
to implement a companion C++  application that utilizes the WSJT-X UDP
message protocol. It does not do anything useful but could be extended
to do many things.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6146 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-21 20:23:47 +00:00
Bill Somerville
5e2fec1fe4 Squash some compiler warnings
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6145 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-21 20:23:39 +00:00
Bill Somerville
91b5edcca1 Banish KVASD
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6129 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-18 22:53:37 +00:00
Bill Somerville
1a23757b26 Reintegrate merge from wsjtx_exp branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6122 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-18 01:28:12 +00:00
Bill Somerville
3460946f7e Remove wsprsim and jt4sim from install & packaging
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6115 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-17 18:10:54 +00:00
Bill Somerville
192cebb1a3 Update copyright dates
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6087 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-11-13 13:23:30 +00:00
Bill Somerville
08e86d8c56 Fix a Windows packaging issue
For some reason the inclusion  of referenced libraries was not finding
the right libraries when using CMake 3.3 and Qt 5.5. This was probably
a long standing defect that was benign until teh above versions.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5868 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-09-09 12:16:14 +00:00
Bill Somerville
eca29808ec Switch to version of GetPrerequisites.cmake submitted to CMake
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5743 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-31 11:14:31 +00:00
Bill Somerville
3e7d273b57 Work around warning when using CLang++ with Qt5.5 headers
The latest Qt headers try and  disable a compiler warning that CLang++
doesn't support.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5732 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-29 10:28:48 +00:00
Bill Somerville
e54bd9441a Temporary fix for dumpbin.exe issues with MinGW 4.9
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5729 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-28 18:12:55 +00:00
Bill Somerville
a948f7a2bd Qt 5.5 uses a plug in audio back end on Windows
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5728 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-27 19:30:21 +00:00
Bill Somerville
f7fd69cf5d Ensure installer works on Mac case sensitive HFS file systems
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5720 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-25 23:03:01 +00:00
Bill Somerville
9ad2739d6a Handle includes on a per target basis
Bring wsprd and wsprsim in to line with general includes scheme.

Use   Qt5    exported   library    definitions   in    preference   to
qt5_use_modules() which is deprecated.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5663 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-02 17:14:05 +00:00
Bill Somerville
f38a8cdf3e Revert to default stack allocation for wsprd
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5658 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-01 20:05:42 +00:00
Bill Somerville
4445cc6b9b Increase stack space for Windows wsprd
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5647 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-01 13:37:17 +00:00
Steven Franke
de84b28e8e Move wsprd_exp.c to wsprd.c, making two-pass decoding the default for wspr mode.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5644 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-30 22:03:07 +00:00
Bill Somerville
3dd824ad6b Make the main window more portable and font change capable
The Rx meter  is now a better  Qt citizen and can be  resized. Added a
more obvious peak signal indicator. It  is now a custom widget derived
from QFrame and is now directly added via promotion in Designer.

Added a custom  widget to act as  a letter spin box, this  is used for
sub mode control.  Switched the frequency tolerance widget  to a combo
box with preset  values so that it is more  uniform across systems and
font sizes.

Added container widgets  for group control of various  UI widgets such
as  QSO controls,  DX call  controls and  WSPR controls.  Introduced a
stacked widget to allow the WSPR controls to be swapped in in place of
the "QSO" controls. The "QSO" controls  are are the Rx, Tx and related
controls along with  the main tab widget with the  message buttons and
fields. This means  that the WSPR version of the  main window (and EME
Echo mode) are now much cleaner.

Increased the  size of the  rig control  widget and styled  its colour
using a dynamic property so that it  can be defined in the Designer UI
definition. Reinstated it  as a push button to do  a rig control reset
and retry after an error.

Reset most UI widgets to default properties, particularly removing any
fixed sizes so that they can resize freely when fonts are changed. The
overall layout is now controlled almost exclusively by stretch factors
on some of the rows and columns of the various grid layout managers.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5630 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-25 22:41:13 +00:00
Steven Franke
2c8613fa52 Added c functions necessary for packing/coding and demonstration/simulation program wsprsim.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5606 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-14 15:05:07 +00:00
Joe Taylor
fa96482008 Basic functionality of Echo spectrum is in place.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5557 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-08 19:42:20 +00:00
Bill Somerville
47e22823f1 Ensure that generated include files are included from the build tree
If  an out  of source  build  is done  using  a source  tree that  has
previously been used  for an in source build then  we must ensure that
generated files in the source tree are not considered.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5550 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-07 10:34:10 +00:00
Bill Somerville
5a8fa2f379 Remove redundant Fortran function
lib/hopping.f90 has been superceded by  C/C++ code except for the call
to grayline() which is now called directly.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5545 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-06 13:05:04 +00:00
Steven Franke
7e3c93553f Enable new TX scheduler for WSPR mode.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5533 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-04 22:25:27 +00:00
Steven Franke
d70915220b Add new wspr tx scheduling code. Not yet active.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5531 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-04 21:05:33 +00:00
Joe Taylor
437c8c5c3f Starting to add EME Echo mode. (Not yet functional!)
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5522 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-04 16:42:38 +00:00
Bill Somerville
f3930eb5c8 Polish the UI for WSPR and WSPR band hopping
Provide  a  dialog for  band  hopping  scheduling which  replaces  tab
four. Ensure that split mode is  not used for WSPR. Select the correct
tab  for WSPR  operation.  Shift WSPR  band hopping  code  out of  the
MainWindow class.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5517 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-04 01:45:40 +00:00
Joe Taylor
e837b9209e EME Doppler calculations now use JPL Planetary Ephemeris.
Also new, simplified routines for Doppler spread.
Beware! Not yet fully tested ...



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5496 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-02 16:43:40 +00:00
Bill Somerville
abfcf1cb5b New static data location for read-only data files
Access in CMake via ${WSJT_SHARE_DESTINATION}/${WSJT_DATA_DESTINATION}

Access in wsjtx.exe using Configuration::data_dir()

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5487 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-06-01 21:47:55 +00:00
Bill Somerville
fd06da1432 Improvements to models and delegates
Trying to  find the  sweet spot  for completeness,  usefulness, safety
and,  performance  from  the  various  custom  item  models  and  item
delegates.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5474 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-05-31 11:51:31 +00:00
Bill Somerville
c9fdb8d80d Remove unused script for downloading the user guide
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5468 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-05-29 23:10:38 +00:00
Joe Taylor
dd28533d79 New program jt4sim: generates simulated JT4 files for testing decoder.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5459 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-05-29 17:19:25 +00:00
Bill Somerville
f200506571 Add mode dependent working frequencies
Working frequencies are mode dependent  and a reset to defaults button
has been added.

Also re-factored much of the model  and item delegate code to simplify
several  of the  model  implementations. Introduced  a single  routine
called from main to register the custom types with Qt.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5453 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-05-28 23:22:17 +00:00