Commit Graph

212 Commits

Author SHA1 Message Date
Bill Somerville 662ed0fa7a
Network interface selection for outgoing UDP multicast datagrams
Default  selection  is  the  loop-back interface.  Users  who  require
interoperation  between  WSJT-X   instances  cooperating  applications
running on different hosts should  select a suitable network interface
and  carefully choose  a multicast  group address,  and TTL,  that has
minimal scope covering the necessary  network(s). Using 224.0.0.1 is a
reasonable    strategy    if   all    hosts    are    on   the    same
subnet. Administratively  scoped multicast group addresses  like those
within 239.255.0.0/16  can cover larger  boundaries, but care  must be
taken if the local subnet has access to a multicast enabled router.

The  IPv4  broadcast  address  (255.255.255.255) may  be  used  as  an
alternative  to multicast  UDP, but  note that  WSJT-X will  only send
broadcast UDP datagrams  on the loop-back interface,  so all recipient
applications must be running on the same host system.

The reference UDP Message protocol  applications are being extended to
be configurable  with a list of  interfaces to join a  multicast group
address on. By default they will only join on the loop-back interface,
which is also  recommended for any applications designed  to take part
in the WSJT-X  UDP Message Protocol. This allows full  user control of
the  scope of  multicast  group membership  with  a very  conservative
default  mode  that will  work  with  all interoperating  applications
running on the same host system.
2020-11-10 20:12:33 +00:00
Bill Somerville 8cb6fc6098
Fetch LoTW Users data on start up if it is missing 2020-10-23 01:36:51 +01:00
Bill Somerville d15e419993
Allow UDP service port zero, this disables the UDP Message Protocol 2020-10-07 19:16:00 +01:00
Bill Somerville d1bb70fd1b
Show busy cursor while enumerating audio devices 2020-09-22 12:18:23 +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 5014c62bfa
Notify user when enumerating audio devices 2020-09-13 17:12:11 +01:00
Bill Somerville 66e887b2f9
Merge branch 'develop' into feat-dropped-frames 2020-09-12 00:19:04 +01:00
Bill Somerville b539248624
Remove some diagnostic prints 2020-09-01 17:31:44 +01:00
Bill Somerville 718d6d1724
Lazy enumeration of audio devices to minimize delays on Linux 2020-08-22 18:14:14 +01:00
Bill Somerville 2cd679f71c
Fix broken CAT initialization 2020-08-17 01:48:26 +01:00
Bill Somerville 65f994ce90
Improved audio stream error handling 2020-08-16 00:55:29 +01:00
Bill Somerville e69226b29a
Avoid enumerating audio devices until absolutely necessary
Enumerating  audio  devices with  QAudioDeviceInfo::availableDevices()
takes  a  long  time  on  Linux  with  pulseaudio.  This  change  only
enumerates  up  to  the  selected device  when  configuring  and  only
enumerates the whole list when the Settings->Audio tab is current.

This change also warns  with a message box when Tx  is started with no
audio output device configured.
2020-08-12 02:33:15 +01:00
Bill Somerville c067580071
Performance optimization of frequencies and station info table views 2020-08-11 20:09:42 +01:00
Bill Somerville 0cf14dfcc9
Remove user adjustable audio buffer sizes from Settings
Fixed buffer sizes are  used. Rx use s 3456 x 1st  downsample rate x 5
audio  frames  of  buffer  space.  On Windows  this  means  that  each
chunk (periodSize())  delivered from the  audio stream is  our initial
DSP processing chunk size, thus  matching audio buffer latency exactly
with WSJT-X's  own front  end latency. This  should result  in optimal
resilience to high system loads that might starve the soundcard ADC of
buffers to fill and case dropped audio frames.

For Tx  a buffer sufficient for  1 s of  audio is used at  present, on
Windows  the period  size will  be  set to  1/40 of  that which  gives
reasonably low latency  and plenty of resilience to  high system loads
that might  starve the soundcard DAC  of audio frames to  render. Note
that a 1 s  buffer will make the "Pwr" slider slow  to respond, we may
have to reduce the Tx audio buffer size if this is seen as a problem.
2020-08-11 13:48:01 +01:00
Bill Somerville 6ea62d9476
Remove default audio devices from audio configuration
This enforces  an audio input device  in the settings dialog  since we
can't do anything  without an input device. A nil  audio output device
is allowed with a warning.
2020-08-08 16:57:51 +01:00
Bill Somerville a0ceace5b4
User configurable audio device buffer sizes
Adjusting these may help with  audio drop-outs, particularly on slower
CPU systems or heavily loaded systems. Smaller buffer sizes leave less
margin for  process interruptions,  larger sizes waste  resources that
could impact other processes.
2020-08-08 16:25:14 +01:00
Bill Somerville 7bb5a8e009
Merge branch 'develop' into feat-psk-reporter-re-work 2020-07-26 15:52:39 +01:00
Bill Somerville aa52e7d4c6
Add new PE RAC section for FD 2020-06-21 13:06:52 +01:00
Bill Somerville b48b23450d
First iteration of optional TCP/IP client for PSK Reporter 2020-06-21 01:36:30 +01:00
Steven Franke 70b84478f0 Add WW_DIGI to the special activities section. Make necessary changes to
the decoders. Also, an experimental change to the FT4 decoder to base
AP decoding passes on 4-symbol block detection instead of single symbol
detection. This provides about 1 dB improvement on the AWGN channel.
Sensitivity changes on other channels are TBD.
2020-01-24 11:26:36 -06:00
Bill Somerville ca07d22e89
Add option to highlight un-worked grid fields
This  is a  check box  option  in "Settings->Colors"  rather than  new
    highlighting types so un-worked  field highlighting and un-worked grid
    square highlighting are mutually exclusive. The check box state can be
    changed at  any time, no  log rescanning is necessary,  and subsequent
    decoded message highlighting will be according to the check box state.
2019-08-09 11:25:50 +01:00
Bill Somerville 01aaa852e3
Updates to support Qt v5.13
Replacement of deprecated Qt functions and member functions.
2019-07-08 01:37:04 +01:00
sirhc808 1f57ba5fec improve physical structure 2019-07-02 12:45:05 -05:00
sirhc808 27d4471cde Merge branch 'ft9_refactor' into feat-refactor
# Conflicts:
#	CMakeLists.txt
#	lib/ft4/getcandidates4.f90
#	lib/ft4/sync4d.f90
2019-07-02 12:06:14 -05:00
sirhc808 ee5d5c8ae9 improve physical structure 2019-07-02 10:19:43 -05:00
Bill Somerville c65d832356
New UDP messages to close and reconfigure WSJT-X plus more status fields
The Status(1) message acquires the new fields Frequency Tolerance, T/R
Period,  and  Configuration Name.  The  Rx  DF,  Tx DF  fields  become
unsigned (this should be a benign change which is just for correctness
as -ve values have never been possible).

The   Close(6)  message   becomes  bi-directional   allowing  external
applications to gracefully close down WSJT-X instances.

A  new  message SwitchConfiguration(14)  is  provided  that allows  an
external application to  switch the current configuration  of a WSJT-X
instance.

Another  new  message  Configure(15)  is provided  to  allow  external
applications to adjust some key parameters like the mode and submode.

See the  NetworkMessages.hpp header  commentary for full  details. The
UDPExamples/MessageAggregator reference  application has  been updated
to be able to exercise all of the above changes.

Note   that   this   commit   enforces  stricter   checking   on   the
"Settings->Reporting->Allow  UDP  requests"   option,  which  must  be
checked  before  any state  changing  incoming  messages to  a  WSJT-X
instance are processed.
2019-06-25 14:35:58 +01:00
Bill Somerville e9559244f8
Recall "Settings->Colors->Highlight by mode" from settings on startup 2019-06-11 10:14:04 +01:00
Bill Somerville 45b12e6028
Preparation for UI i18n
Re-enabling the WSJT-X i18n  facilities. This allows translation files
to  be created  for languages  that are  automatically used  to lookup
translatable strings. To enable a  new language the language name must
be added to the CMakeLists.txt LANGUAGES list variable in BCP47 format
(i.e. en_US,  en_GB, pt_PT, ...). Do  one build with the  CMake option
UPDATE_TRANSLATIONS enabled  (do not  leave it enabled  as there  is a
danger of loosing existing translated texts), that will create a fresh
translations/wsjtx_<lang>.ts file which  should be immediately checked
in with the  CMakeLists.txt change. The .ts should then  be updated by
the translator using  the Qt Linguist tool to  add translations. Check
in the  updated .ts file  to complete the initial  translation process
for that language.

To  aid translators  their WIP  .ts file  may be  tested by  releasing
(using the  lrelease tool or  from the Linguist  menu) a .qm  file and
placing  that  .qm  file  in the  current  directory  before  starting
WSJT-X. The translations will be used if the system locale matches the
file name.   If the system  locale does not  match the file  name; the
language may be  overridden by setting the  LANG environment variable.
For  example if  a wsjtx_pt_PT.qm  file  is in  the current  directory
WSJT-X will use it for  translation lookups, regardless of the current
system locale setting, if the LANG variable is set to pt_PT or pt-PT.

On MS Windows from a command prompt:

 set LANG=pt_PT
 C:\WSJT\wsjtx\bin\wsjtx

elsewhere:

 LANG=pt_PT wsjtx
2019-06-06 12:56:25 +01:00
Bill Somerville 19c46774b4
Moving toward multiplier and dupe detection for contest modes
There's not  much to show  for this so far  but some of  the necessary
infrastructure is in place.
2019-05-30 22:20:09 +01:00
Bill Somerville 94b86c3b29
Finally fixed the default item delegate creation mechanism 2019-05-30 04:14:21 +01:00
Bill Somerville 381faca99a
Add option to include or exclude WAE extra entities in DXCC entity lookups
Also  refactored  object  relationships  as a  start  to  implementing
contest multiplier highlighting.
2019-05-29 23:35:18 +01:00
Bill Somerville 67ab7c7b8b
Add Alt+O hotkey to change the operator quickly without going to the Settings dialog
Thanks to Jim, W2JC, for suggesting this enhancement.
2019-05-28 12:18:54 +01:00
Joe Taylor 7334ebb20b New user option: "Calling CQ forces Call 1st". 2019-05-23 14:31:08 -04:00
Bill Somerville d862449dc8 Merge branch 'develop' into feat-ft2 2019-03-22 20:51:42 +00:00
Bill Somerville 09ee9d3dc0 Add helpful tool tips to serial port drop down list items 2019-03-13 00:08:50 +00:00
Bill Somerville f63c5e14bb Load LoTW Users data if CSV file exists at startup 2019-03-02 13:22:42 +00:00
Joe Taylor 6b5131ab5e Trial changes to support messages for Slovenian Contest Club's RTTY-like contest. 2019-02-28 11:21:06 -05:00
Joe Taylor fdfb655b06 Option to select "Low sidelobes" or "Most sensitive" for waterfall spectra. 2019-02-25 15:04:05 -05:00
Bill Somerville d17efce7a1 Improved validation for ARRL RTTY RU and FD exchange fields
Validation  in  "Settings->Advanced"  only  applies  if  the  specific
special operations mode is enabled.
2019-01-10 15:13:56 +00:00
Bill Somerville e871860642 Option to always start new decode periods at the top of the Band Activity window 2019-01-08 18:03:43 +00:00
Bill Somerville 5b0f713cd4 Defer dwonloading LoTW users file until "Settings->Colors->Fetch" button pressed
This change also repairs a defect in showing potential LoTW users when
the  "Settings->General->Show DXCC,  grid, and  worked before  status"
option is not checked.
2019-01-01 16:19:01 +00:00
Joe Taylor 8379fa86eb Optional key bindings for F1 through F5, especially for contest use. 2018-12-28 11:19:29 -05:00
Bill Somerville 7294f83f59 Ensure that decode highlighting settings that a trashed by running an older version get reset 2018-12-07 21:27:33 +00:00
Bill Somerville 49b1a5ac62 ARRL RTTY Roundup rules require AK and HI residents to be DX and send serial numbers 2018-12-03 21:31:01 +00:00
Bill Somerville dac6a2cc26 More relaxed validation for FD exchange and fix up to uppercase 2018-12-02 01:23:20 +00:00
Bill Somerville cf6311e007 Scan ADIF log asynchronously and new settings button to rescan ADIF log 2018-11-30 16:26:46 +00:00
Bill Somerville 314d8a645b Replace deprecated Qt algorithms with C++ Standard Library equivalents 2018-11-25 22:13:15 +00:00
Bill Somerville 7b4b407455 Improved layout of settings frequencies and station details tables 2018-11-25 21:53:38 +00:00
Bill Somerville ff7c2743b4 Open database outside of multi-settings loop to avoid reconnection warnings 2018-11-12 01:46:16 +00:00
Bill Somerville 947b429723 Start implememntation of database based Fox log model and a new Fox log window widget
This change incorporates a reorganization of the GUI code with
widgets, validators, models, and item delegates being moved to
sub-directories.

Relax  the   requirements  of   the  ForeignKeyDelegate   and  related
CandidateKeyFilter classes to  allow them to work  with constant model
pointers for both referenced and referencing models.
2018-11-07 17:49:45 +00:00