Commit Graph

226 Commits

Author SHA1 Message Date
Bill Somerville
816da80184
Ensure loopback is used for outgoing UDP if no others selected 2021-02-10 17:54:57 +00:00
Bill Somerville
462ef827c9
Shorten some diagnostic messages 2020-11-28 13:48:49 +00:00
Bill Somerville
dc4f824f43
Only attempt to fetch LoTW users at start up if highlighting enabled 2020-11-16 17:10:33 +00:00
Bill Somerville
9ea903b259
Merge branch 'develop' into feat-boost-log 2020-11-12 13:36:25 +00:00
Bill Somerville
d953c455fe
Ensure network interfaces validation is run on start up 2020-11-06 01:27:36 +00:00
Bill Somerville
9434c447cd
Ensure multicast UDP is sent to at least the loop-back interface
Also send multicast UDP to every selected network interface.
2020-11-06 00:33:53 +00:00
Bill Somerville
c15f244a09
Comment out diagnostic prints 2020-11-05 11:30:48 +00:00
Bill Somerville
caa23f1101
Message Client allows sending multicast UDP on multiple interfaces 2020-11-05 03:37:01 +00:00
Bill Somerville
3bc3103004
UDP multicast TTL default as one
Restricts scope to local subnet.
2020-11-04 16:02:04 +00:00
Bill Somerville
430d57c1ca
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-02 15:33:44 +00:00
Bill Somerville
0f10a58b84
Fetch LoTW Users data on start up if it is missing 2020-10-23 01:35:40 +01:00
Bill Somerville
d8b16b31f4
Merge branch 'develop' into feat-boost-log 2020-10-13 19:20:37 +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
fe4c2b59ee
Revert to narrow character logging 2020-09-27 16:52:19 +01:00
Bill Somerville
396f128ece
Make use of different severities for rig control logging 2020-09-26 15:13:29 +01:00
Bill Somerville
1d43ddd38b
Use wide character logging for efficiency as most o/p is QString 2020-09-26 14:56:16 +01:00
Bill Somerville
cbd4f109a8
Add a log channel for rig control
RIGCTRL is defined as a log channel for rig control messages and the
appropriate logger is made available to children of the Transceiver
class. Use Transceiver::logger() to access the logger.

Switched existing rig control QDebug messages to Boost logging.
2020-09-25 02:37:41 +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