Commit Graph

580 Commits

Author SHA1 Message Date
Steven Franke
11b7aa9429
Implements decoding of FST4W messages as (240,50) crc-less codewords.
By cascading the full 24-bit crc generator matrix with the (240,74) LDPC code generator, create a (240,50) generator that is used to decode with approximately 1 dB better sensitivity than the (240,64) with 14-bit CRC approach that is normally used. This approach treats the CRC bits as additional parity bits and provides no means for identifying incorrect codewords. All codewords on the list generated by the OSD algorithm have CRCs that match the CRC of the message payload. Codewords are validated by unpacking the message and comparing the unpacked message with the list of stored callsign/grid pairs stored in the fst4w_calls.txt file.
2021-01-04 14:59:56 +00:00
Bill Somerville
94f0af72e3
Command line tool prints WSJT-X version to console, tnx Dave, W3DJS 2020-12-02 01:57:32 +00:00
Bill Somerville
48cb207cd3
Bump RC number 2020-11-29 13:08:35 +00:00
Bill Somerville
dc7803fe0d
Install some example logging configuration files 2020-11-28 13:47:54 +00:00
Bill Somerville
b834645bf7
Debian 9 backwards compatibility 2020-11-20 13:45:44 +00:00
Bill Somerville
4c05f80a2e
Fix Boost::log linking issue 2020-11-15 04:25:14 +00:00
Bill Somerville
398604a402
Fix package file name 2020-11-15 01:58:48 +00:00
Bill Somerville
541faa1470
Set correct version information 2020-11-14 22:02:06 +00:00
Bill Somerville
9417dee4a8
Revert "Simple Boost logging test program"
This reverts commit 29b147eef0.
2020-11-13 22:24:39 +00:00
Bill Somerville
29b147eef0
Simple Boost logging test program 2020-11-13 13:16:43 +00:00
Bill Somerville
9ea903b259
Merge branch 'develop' into feat-boost-log 2020-11-12 13:36:25 +00:00
Bill Somerville
0df1ce9f64
Add network interface selection combo box widget to message_aggregator 2020-11-03 20:31:11 +00:00
Bill Somerville
8516a4f538
New combo box with a list of checkable items 2020-11-03 20:28:29 +00:00
Bill Somerville
c444cb2409
Merge branch 'release-2.3.0' into develop 2020-10-21 13:37:37 +01:00
Bill Somerville
e99f22a5d2
Revert to previous stack reservation on Windows to accommodate F/H 2020-10-21 13:08:03 +01:00
Bill Somerville
5e3b931086
Better executable description for jt9
This  maintains the  sort order  in the  Windows Task  Manager summary
background applications list.
2020-10-21 11:48:24 +01:00
Bill Somerville
a4cbde10cb
Better executable description for jt9
This  maintains the  sort order  in the  Windows Task  Manager summary
background applications list.
2020-10-21 11:46:45 +01:00
Bill Somerville
6c077397dc
Adjust Windows stack and heap reservations for FST4(W) code 2020-10-21 01:37:19 +01:00
Bill Somerville
4757ee4506
Adjust Windows stack and heap reservations for FST4(W) code 2020-10-21 01:36:00 +01:00
Bill Somerville
d8b16b31f4
Merge branch 'develop' into feat-boost-log 2020-10-13 19:20:37 +01:00
Bill Somerville
90b3fa2a46
Merge branch 'release-2.3.0' into develop 2020-10-13 16:51:40 +01:00
Bill Somerville
0b800c9ca2
Fix merge error 2020-10-10 14:38:32 +01:00
Bill Somerville
c551b93cc7
Merge branch 'develop' into feat-boost-log 2020-10-10 14:07:22 +01:00
Bill Somerville
1995d762bb
Add Version Info resources to Windows executables where needed.
Version information  and more  in the  Windows resources  for main
    applications, installer and un-installer.

    Update  CMake   policies  for  new  project()   command,  and  DEB
    dependency changes

    Support  older  libgfortran  packages,  and  other  Linux  package
    dependencies.

    Use new project description file in Debian packaging.

    Linux packaging dependency adjustments  for Debian style packages,
    including  a machine  readable  Debian  copyright format,  project
    description in separate file for  CPack compatibility, and use for
    DEB packaging.

    Configure check for need to link libm Standard C Math Library.

    CMake compatibility for <3.17.
2020-10-10 13:58:53 +01:00
Bill Somerville
5f2ba00bb8
Add Version Info resources to Windows executables where needed.
Version information  and more  in the  Windows resources  for main
    applications, installer and un-installer.

    Update  CMake   policies  for  new  project()   command,  and  DEB
    dependency changes

    Support  older  libgfortran  packages,  and  other  Linux  package
    dependencies.

    Use new project description file in Debian packaging.

    Linux packaging dependency adjustments  for Debian style packages,
    including  a machine  readable  Debian  copyright format,  project
    description in separate file for  CPack compatibility, and use for
    DEB packaging.

    Configure check for need to link libm Standard C Math Library.

    CMake compatibility for <3.17.
2020-10-10 13:38:15 +01:00
Bill Somerville
d9c992943a
Fix CMake warning when using new configurations 2020-10-10 13:17:21 +01:00
Bill Somerville
bd8717c76c
More Linux packaging dependency adjustments fro Debian style packages 2020-10-03 04:48:39 +01:00
Bill Somerville
9f85c21978
Fix up RPM dependencies back to Fedora 30 2020-10-03 04:24:35 +01:00
Bill Somerville
bf5af3e5e4
First attempt at Boost dependencies in Linux packages 2020-10-03 04:05:21 +01:00
Bill Somerville
24b2487abe
Fix Boost linking 2020-10-03 02:36:27 +01:00
Bill Somerville
837821b117
Merge branch 'develop' into feat-boost-log 2020-10-01 19:55:53 +01:00
Bill Somerville
d73c51beca
Exclude Qt debug symbol files from packaging on macOS
The Qt team  have switched to separate debug symbol  files rather than
separate debug  libraries for plugins.  We need to exclude  these from
packaging as they break the BundleUtilities CMake tools.
2020-10-01 19:52:31 +01:00
Bill Somerville
806d9bed7c
Fix Linux package dependencies 2020-09-29 23:28:21 +01:00
Bill Somerville
11805d7323
Revised check for older hamlib API version 2020-09-29 15:14:49 +01:00
Bill Somerville
fff5644858
Configure option for older version of Hamlib caching 2020-09-28 13:51:14 +01:00
Bill Somerville
c1e1f3d46c
Find all the package components we use 2020-09-27 02:42:44 +01:00
Bill Somerville
dc1fdd9562
Remove some obsolete CMake options 2020-09-25 02:41:47 +01:00
Bill Somerville
3fafbdaaa3
Boost log set up for WSJT-X
Rotated  log files  limited to  ten  saved logs  with timestamped  and
counted file names. Logs written to writeable files directory. Formats
and file  names hard coded  with expression templates  fro efficiency,
but with the ability to provide a user-defined configuration file that
overrides the hard-coded  defaults. The configuration file  must be in
the configuration files directory and named wsjtx_log_config.ini.
2020-09-25 00:50:32 +01:00
Bill Somerville
1a6474976c
Wrap QProcess to avoid inherited handles causing issues on Windows 2020-09-24 17:53:21 +01:00
Bill Somerville
b6d95d54d3
Merge branch 'develop' into feat-boost-log 2020-09-20 23:50:33 +01:00
Bill Somerville
542ffe8311
Improve audio device handling and error recovery
where possible  audio devices that  disappear are not  forgotten until
the user selects another device, this should allow temporarily missing
devices or forgetting  to switch on devices before  starting WSJT-X to
be  handled more  cleanly. If  all else  fails, visiting  the Settings
dialog and  clicking OK should  get things  going again. Note  that we
still  do not  have  a  reliable way  of  detecting  failed audio  out
devices, in that  case selecting another device and  then returning to
the original should work.

Enumerating  audio devices  is expensive  and on  Linux may  take many
seconds per  device. To avoid  lengthy blocking behaviour until  it is
absolutely necessary,  audio devices are  not enumerated until  one of
the "Settings->Audio" device drop-down lists is opened. Elsewhere when
devices  must be  discovered  the  enumeration stops  as  soon as  the
configured device is  discovered. A status bar message  is posted when
audio devices are being enumerated as a reminder that the UI may block
while this is happening.

The message box warning about  unaccounted-for input audio samples now
only triggers when  >5 seconds of audio appears to  be missing or over
provided. Hopefully this will make the warning less annoying for those
that are  using audio sources  with high and/or variable  latencies. A
status  bar message  is still  posted for  any amount  of audio  input
samples  unaccounted for  >1/5 second,  this message  appearing a  lot
should be considered as notification that  there is a problem with the
audio sub-system, system load is  too high, or time synchronization is
stepping the PC clock rather  than adjusting the frequency to maintain
monotonic clock ticks.
2020-09-20 18:20:16 +01:00
Bill Somerville
f66788691d
Set up for Boost logging in WSJT-X
uses a  settings file to  define log  sink back-ends, by  default uses
:/wsjtx_log_config.ini  from  the  resources file-system.   Users  may
override  by placing  their own  wsjtx_log_config.ini into  the WSJT-X
config location. The settings file format is as described in the Boost
log
documentation (https://www.boost.org/doc/libs/1_74_0/libs/log/doc/html/log/detailed/utilities.html#log.detailed.utilities.setup.settings_file)
with the additional feature that  allows some pre-defined variables to
be expanded. The  predefined variables refer to  standard locations in
the file-system,  and allow  log files  and rotation  target directory
paths to be specified. The pre-defined variables are:

   DesktopLocation
   DocumentsLocation
   TempLocation
   HomeLocation
   CacheLocation
   GenericCacheLocation
   GenericDataLocation
   AppDataLocation

and  must  be   used  enclosed  on  braces  and  preceded   by  a  '$'
character. E.g. to define the pattern for a sink's log file:

   FileName="${AppLocalDataLocation}/wsjtx_syslog.log"

this would place the log file wsjtx_syslog.log in the WSJT-X log files
directory, on all platforms.
2020-09-18 21:23:11 +01:00
Bill Somerville
b420c9f6d3
Basic support for using the Boost log library 2020-09-18 21:12:53 +01:00
Bill Somerville
0bca52d2d8
Switching to consuming Boost as external libraries 2020-09-18 18:40:14 +01:00
Bill Somerville
e65caabdea
Build with Boost Log library and dependants
Requires Boost libraries to be available as an external library.

On Debian style Linux distributions:

sudo apt install boost-dev-all

On Red Hat style Linux distributions:

sudo dnf install boost-dev

On macOS install Boost from a suitable Open Source package manager,
e.g. MacPorts:

sudo port install boost

If building WSJT-X  packages on macOS for distribution  you must build
boost and  its dependants from  sources with a  suitable macports.conf
file specifying the target macOS  version (10.12 at present). To build
Boost from sources in this case:

sudo port -s install boost

On MS Windows boost must be built from sources using the correct MinGW
compilers,  i.e. the  Qt  tools  32- or  64-bit  g++  for each  target
bit-width respectively.  To  build boost something along  the lines of
the following recipe should be used:

1)     Download    the     boost    ZIP     source    archive     from
https://sourceforge.net/projects/boost/, the latest  release should be
OK, at the time of writing that was 1.74,

2) create a directory for the sources:

MKDIR C:\boost-install

and extract the boost sources there.

3) Bootstrap and  build Boost.Build. If you are building  both 32- and
64-bit  variants then  do  this  twice, each  from  the correct  MinGW
terminal  session  for  the  necessary tool-chain.  Specify  a  unique
install directory  for each variant  (--prefix=). I use C:\Tools  as a
root directory for external libraries and tools, choose whatever suits
your development environment.

CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW32" install

CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW64" install

4) Build Boost. If you are  building both 32- and 64-bit variants then
do this  twice, each from the  correct MinGW terminal session  for the
necessary tool-chain. Specify a unique build and install directory for
each variant (--build-dir=  and --prefix=).  I use C:\Tools  as a root
directory for external libraries and tools, choose whatever suits your
development environment.

SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
 --build-type=complete ^
 --prefix="C:\Tools\boost\MinGW32" ^
 toolset=gcc install

SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
 --build-type=complete ^
 --prefix="C:\Tools\boost\MinGW32" ^
 toolset=gcc address-model=64 install

5)  Once successfully  built  the sources  directory  and build  trees
within can be deleted. The build products are contained in the install
directories (C:\Tools\boost-build and C:\Tools\boost in my case).

6) Update  your development environment  to include the  boost headers
and libraries. In  my case I have  scripts that set up  32- and 64-bit
environments,  they need  to be  modified to  include the  appropriate
boost library  directories on  the Path  environment variable  so that
applications  linked  to Boost  libraries  can  locate the  DLLs.  For
32-bit:

SET Path=C:\Tools\boost\MinGW32\lib;%Path%

For 64-bit:

SET Path=C:\Tools\boost\MinGW64\lib;%Path%

7) To  build WSJT-X  CMake will need  to be able  to locate  the Boost
libraries. I do that using tool-chain files for each of 32- and 64-bit
in both Debug and Release configurations which are passed to the CMake
configuration  invocation using  the -DCMAKE_TOOLCHAIN_FILE=  variable
assignment.  In the  tool-chain files you need to  add the appropriate
Boost  installation  directory   to  the  CMAKE_PREFIX_PATH  variable,
something like:

set (BOOSTDIR C:/Tools/boost/MinGW32)
...
set (CMAKE_PREFIX_PATH ${BOOSTDIR} ${QTDIR} ...

adjust as needed for 32- or 64-bit variants.
2020-09-15 10:35:34 +01:00
Steven Franke
5ca81a6507
Use 3rd order polynomial fit to estimate the noise baseline. The
polynomial fit is done over 400 Hz bandwidth for T/R periods longer
than 15s, and over approx. 600 Hz (10 times the signal bandwidth) for
T/R period of 15s.
2020-08-29 19:55:23 +01:00
Bill Somerville
3d45e1128a Further Linux depedency and User Guide updates 2020-08-16 19:50:34 +01:00
Bill Somerville
fb7af6c696
Further Linux dependency and install documentation updates 2020-08-16 19:11:51 +01:00
Bill Somerville
549198566b
Linux package dependency updates 2020-08-16 18:06:26 +01:00
Bill Somerville
f7377e686f
Move bundled cty.dat from resources FS to installation data dir
This file is only used at start up so there is little point to keeping
it in program memory.
2020-08-14 14:47:07 +01:00