mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-07-07 12:25:16 -04:00
------------------------------------------------------------------------ r7861 | k9an | 2017-07-12 22:49:39 +0100 (Wed, 12 Jul 2017) | 1 line Use quarter-symbol steps for time sync. Lower sync threshold. Implement subtraction and two pass decoding. Use osd2 only near nfqso. ------------------------------------------------------------------------ r7862 | k9an | 2017-07-13 01:28:57 +0100 (Thu, 13 Jul 2017) | 1 line Fix NHSYM. ------------------------------------------------------------------------ r7863 | k9an | 2017-07-13 01:31:52 +0100 (Thu, 13 Jul 2017) | 1 line Fix a comment. No code changes. ------------------------------------------------------------------------ r7864 | k9an | 2017-07-13 01:43:56 +0100 (Thu, 13 Jul 2017) | 1 line Fix another bounds error. ------------------------------------------------------------------------ r7879 | k1jt | 2017-07-14 17:02:01 +0100 (Fri, 14 Jul 2017) | 1 line Code cleanup and test ofFT8 decodes with erasures. Do not use on the air. ------------------------------------------------------------------------ r7881 | k1jt | 2017-07-14 19:19:48 +0100 (Fri, 14 Jul 2017) | 1 line Fix nutc in jt9; alternative sync value for late-start FT8 signals. ------------------------------------------------------------------------ r7882 | k9an | 2017-07-14 20:22:53 +0100 (Fri, 14 Jul 2017) | 1 line Move ft8apset to a separate file. ------------------------------------------------------------------------ r7884 | k9an | 2017-07-14 20:35:22 +0100 (Fri, 14 Jul 2017) | 1 line Add ft8apset.f90. ------------------------------------------------------------------------ r7885 | k9an | 2017-07-14 20:46:04 +0100 (Fri, 14 Jul 2017) | 1 line Update call to ft8b. ------------------------------------------------------------------------ r7886 | k9an | 2017-07-14 21:12:29 +0100 (Fri, 14 Jul 2017) | 1 line More work on ap. ------------------------------------------------------------------------ r7887 | k9an | 2017-07-14 23:09:50 +0100 (Fri, 14 Jul 2017) | 1 line More work on AP. Deep decode is unstable - not for use on the air. ------------------------------------------------------------------------ r7890 | k9an | 2017-07-15 01:33:25 +0100 (Sat, 15 Jul 2017) | 1 line Turn off ap. ------------------------------------------------------------------------ r7891 | k9an | 2017-07-15 02:49:44 +0100 (Sat, 15 Jul 2017) | 1 line Add some more items to the lun 81 diagnostics. ------------------------------------------------------------------------ r7892 | k9an | 2017-07-15 15:21:18 +0100 (Sat, 15 Jul 2017) | 1 line Properly calculate metrics for non-ap bits that reside in symbols that contain ap bits. ------------------------------------------------------------------------ r7893 | k9an | 2017-07-15 16:43:41 +0100 (Sat, 15 Jul 2017) | 1 line Use overlap and add to apply reference filter/amplitude equalization. ------------------------------------------------------------------------ r7894 | k9an | 2017-07-15 16:46:46 +0100 (Sat, 15 Jul 2017) | 1 line Improve a comment. ------------------------------------------------------------------------ r7895 | k9an | 2017-07-16 01:10:37 +0100 (Sun, 16 Jul 2017) | 1 line Make refspec filter causal for overlap and add. ------------------------------------------------------------------------ r7911 | k9an | 2017-07-16 16:56:06 +0100 (Sun, 16 Jul 2017) | 1 line More work on Deep decoding. ------------------------------------------------------------------------ r7917 | k9an | 2017-07-16 18:08:09 +0100 (Sun, 16 Jul 2017) | 1 line Properly round the printed snr. ------------------------------------------------------------------------ r7925 | k9an | 2017-07-18 02:12:11 +0100 (Tue, 18 Jul 2017) | 1 line Work on ap decoding. Diagnostic write enabled. ------------------------------------------------------------------------ r7926 | k9an | 2017-07-18 16:22:20 +0100 (Tue, 18 Jul 2017) | 1 line Fix a bug in AP decoding when iaptype=2. Decrease time-sync search range to +/- 1.5s. Fix a big with erasure decoding. ------------------------------------------------------------------------ r7927 | k1jt | 2017-07-20 00:23:20 +0100 (Thu, 20 Jul 2017) | 1 line Remove slider next to audio level meter. ------------------------------------------------------------------------ r7928 | k1jt | 2017-07-20 16:15:00 +0100 (Thu, 20 Jul 2017) | 6 lines 1. Alt+F8 arms "Call 1st" as if a CQ had been sent. 2. "Call 1st" label turns red when armed to respond to a caller. 3. Suppress some recognizable false decodes, send them to cumulative file "data_dir/false_decodes.txt". 4. Reduce sleep delay in decoder() to 10 ms. ------------------------------------------------------------------------ r7929 | k1jt | 2017-07-20 20:23:17 +0100 (Thu, 20 Jul 2017) | 1 line Fix wording in list of keyboard shortcuts. ------------------------------------------------------------------------ r7930 | k1jt | 2017-07-20 20:25:08 +0100 (Thu, 20 Jul 2017) | 2 lines Comment out diagnostic write. ------------------------------------------------------------------------ r7931 | k9an | 2017-07-20 22:08:36 +0100 (Thu, 20 Jul 2017) | 1 line Only print dupes if SNR is higher than what has already been printed. ------------------------------------------------------------------------ r7932 | k9an | 2017-07-21 23:02:06 +0100 (Fri, 21 Jul 2017) | 1 line Add to the list of allowed keywords in jtmsg.f90. ------------------------------------------------------------------------ r7933 | k9an | 2017-07-22 04:01:09 +0100 (Sat, 22 Jul 2017) | 1 line Add variables lapon and napwid to control ap decoding. Reconfigure the logic for AP decoding and ordered-statistics decoding. ------------------------------------------------------------------------ r7934 | k9an | 2017-07-22 14:21:03 +0100 (Sat, 22 Jul 2017) | 1 line Prevent a certain type of non-standard message from being flagged as a false decode. ------------------------------------------------------------------------ r7935 | k9an | 2017-07-22 18:12:48 +0100 (Sat, 22 Jul 2017) | 1 line More informative end-of-line annotation for AP decodes. ------------------------------------------------------------------------ r7936 | k9an | 2017-07-24 15:23:22 +0100 (Mon, 24 Jul 2017) | 1 line Bring msk144d2 more up to date. Runs now, but still needs more work. ------------------------------------------------------------------------ r7937 | k1jt | 2017-07-24 15:48:16 +0100 (Mon, 24 Jul 2017) | 2 lines Correct the spacing between marked lowest and highest FT8 tones for RxFreq (green) and TxFreq (red). ------------------------------------------------------------------------ r7938 | bsomervi | 2017-07-24 20:27:14 +0100 (Mon, 24 Jul 2017) | 4 lines Add double clickable push button and radio button widgets These emit doubleClicked signal when double-clicked, otherwise they are identical to their super-classes. ------------------------------------------------------------------------ r7939 | bsomervi | 2017-07-24 20:27:23 +0100 (Mon, 24 Jul 2017) | 42 lines Add the option to ALT+click a decoded CQ or QRZ message which only moves the Rx frequency to theirs, this facilitates calling a station who is busy and may have many callers on their frequency. Updated the corresponding mouse shortcuts help text. Allow for times with seconds when parsing fast mode and FT8 decodes. Exclude the RR73 grid square from and grid validation or matching, it is not a grid square any more as far as WSJT-X is concerned, it is an RRR substitute. Add a simple state machine for QSO progress such that replies and auto-sequencing can be better controlled. Get compound callsign edge cases working again and allow QSOs from and to compound callsign holders working in as many situations as possible including auto-sequencing and FT8 auto-reply mode. This does mean that a "DE W6/K1ABC DM93" type message close to a callers Tx or Rx frequency will be taken as a reply to a CQ call despite it not being explicitly addressed back to the CQ caller. Compound callsigns should work in MSK144 contest mode also as well as in short code modes with some minor restrictions (short codes will not be used where configuration demands that a message be used to send a full compound callsign). Auto sequencing has been made generic such that it can be used for more than one mode if desired. Allow the use of free text messages to sign off in auto sequenced QSOs without the message being overwritten by the sequencer. Double click actions have been added to the Tx5 radio and push buttons to revert back to the default standard 73 message. Make DisplayText class interface more idiomatic C++ and simplify a bit. Fixed some displayed widget arrangements for different modes and sub-modes so that they are consistent when starting up and when switching mode or sub-mode. This is a big change which has been extensively tested but no doubt there will also be some new defects introduced. ------------------------------------------------------------------------ r7940 | bsomervi | 2017-07-25 17:51:19 +0100 (Tue, 25 Jul 2017) | 1 line Fix issue with Tx5 not being generated with a new DX Call ------------------------------------------------------------------------ r7941 | bsomervi | 2017-07-25 17:51:27 +0100 (Tue, 25 Jul 2017) | 1 line Fix country name display that broke in r7939 ------------------------------------------------------------------------ r7942 | bsomervi | 2017-07-25 17:51:34 +0100 (Tue, 25 Jul 2017) | 1 line Ensure JT9 lowest decode frequency spin box is disabled when not available ------------------------------------------------------------------------ r7943 | bsomervi | 2017-07-25 17:51:42 +0100 (Tue, 25 Jul 2017) | 4 lines Pick up tail-enders when completing a call 1st QSO after re-enabling auto Tx Allow any message to start a QSO so long as we are not in an auto-reply QSO. ------------------------------------------------------------------------ r7944 | bsomervi | 2017-07-25 17:51:49 +0100 (Tue, 25 Jul 2017) | 1 line Exclude all decode quality markers from internal decode parsing and matching ------------------------------------------------------------------------ r7945 | k9an | 2017-07-25 20:06:05 +0100 (Tue, 25 Jul 2017) | 1 line Move '?' quality warning to message(22:22). ------------------------------------------------------------------------ r7946 | k9an | 2017-07-25 21:55:13 +0100 (Tue, 25 Jul 2017) | 1 line Reject candiates with fewer than 7 correct hard-decoded sync symbols. ------------------------------------------------------------------------ r7947 | bsomervi | 2017-07-26 02:38:37 +0100 (Wed, 26 Jul 2017) | 1 line Force Settings tab to Radio tab when navigating there from a rig error message ------------------------------------------------------------------------ r7948 | bsomervi | 2017-07-26 02:38:44 +0100 (Wed, 26 Jul 2017) | 1 line Correct the highlighting of the Call 1st check box label ------------------------------------------------------------------------ r7949 | bsomervi | 2017-07-26 02:38:57 +0100 (Wed, 26 Jul 2017) | 5 lines Option to skip using grid reply message Enable and disable by double-clicking the Tx1 button or the adjacent radio button. Tx1 message shows grayed out when the Tx1 message is elided. ------------------------------------------------------------------------ r7950 | bsomervi | 2017-07-26 02:39:04 +0100 (Wed, 26 Jul 2017) | 6 lines Option to use RR73 grid message as RRR message substitutes Enable or disable by double-clicking the Tx4 button or the adjacent radio button. Is auto disabled by a band change as it is expected that the user reassess the conditions to see if message repetitions are unlikely to be needed. ------------------------------------------------------------------------ r7951 | bsomervi | 2017-07-26 02:39:11 +0100 (Wed, 26 Jul 2017) | 1 line Fix highlighting of the call first check box label ------------------------------------------------------------------------ r7952 | bsomervi | 2017-07-26 02:39:23 +0100 (Wed, 26 Jul 2017) | 1 line Better behavior and tool tips for Txn buttons and radio buttons ------------------------------------------------------------------------ r7953 | bsomervi | 2017-07-26 02:39:30 +0100 (Wed, 26 Jul 2017) | 1 line Auto Tx stop when calling a CQer who answers another station on your Tx frequency ------------------------------------------------------------------------ r7954 | bsomervi | 2017-07-26 11:56:12 +0100 (Wed, 26 Jul 2017) | 1 line Add menu option to turn on AP decoding in FT8 mode ------------------------------------------------------------------------ r7955 | k9an | 2017-07-26 14:05:34 +0100 (Wed, 26 Jul 2017) | 1 line Enable AP for any decoding level. ------------------------------------------------------------------------ r7956 | k1jt | 2017-07-26 14:44:31 +0100 (Wed, 26 Jul 2017) | 1 line Remove obsolete test program. ------------------------------------------------------------------------ r7957 | bsomervi | 2017-07-26 22:18:59 +0100 (Wed, 26 Jul 2017) | 11 lines Use the low confidence decode quality marker to elide spots and pass info via UDP The UDP decode and reply message have been augmented with a boolean flag denoting a low confidence decode when set. Existing clients can safely use the reply message without passing the flag as the default value will still action messages that have high confidence. If low confidence decodes are to be passed back via the reply message then the low confidence flag must be included and correctly set to match the original decode. See NetworkMessage.hpp for message fields and meanings. ------------------------------------------------------------------------ r7958 | bsomervi | 2017-07-26 22:19:21 +0100 (Wed, 26 Jul 2017) | 3 lines Add QSO state machine state and tx audio offset to parameters passed to slow decoders Required to pick best AP masks in FT8 decoder ------------------------------------------------------------------------ r7959 | bsomervi | 2017-07-26 23:03:02 +0100 (Wed, 26 Jul 2017) | 1 line Extend grids looked up from CALL3.TXT from 4 to 6-digits if first 4 match ------------------------------------------------------------------------ r7960 | k9an | 2017-07-27 16:35:40 +0100 (Thu, 27 Jul 2017) | 1 line nQSOProgress now controls AP decoding. Needs testing - may not be stable with AP enabled. ------------------------------------------------------------------------ r7961 | k9an | 2017-07-27 19:07:54 +0100 (Thu, 27 Jul 2017) | 1 line Correct some logic so that AP is only on when selected and so that AP decodes of type 4 or greater are limited to the vicinity of nfqso or nftx. ------------------------------------------------------------------------ r7962 | k1jt | 2017-07-27 19:57:53 +0100 (Thu, 27 Jul 2017) | 2 lines Remove unused arguments from the call to fix_contest_msg(). ------------------------------------------------------------------------ r7963 | k1jt | 2017-07-27 21:17:30 +0100 (Thu, 27 Jul 2017) | 1 line Working on some features for NA VHF contests. Not finished! ------------------------------------------------------------------------ r7964 | bsomervi | 2017-07-28 01:00:42 +0100 (Fri, 28 Jul 2017) | 1 line Fix syntax error in statement function definition ------------------------------------------------------------------------ r7965 | bsomervi | 2017-07-28 02:20:22 +0100 (Fri, 28 Jul 2017) | 6 lines Revert "Extend grids looked up from CALL3.TXT from 4 to 6-digits if first 4 match" Bad idea, need to find a better way to extend grids to 6-digits from CALL3.TXT. This reverts commit r7959 ------------------------------------------------------------------------ r7968 | k9an | 2017-07-28 16:35:17 +0100 (Fri, 28 Jul 2017) | 1 line Comment out diagnostic write to lun 81. ------------------------------------------------------------------------ r7969 | k1jt | 2017-07-28 16:50:13 +0100 (Fri, 28 Jul 2017) | 2 lines Make 72-bit "contest mode" available in FT8 as well as MSK144. ------------------------------------------------------------------------ r7970 | bsomervi | 2017-07-29 00:25:32 +0100 (Sat, 29 Jul 2017) | 7 lines Change tolerances for auto stop and auto-sequence of some messages FT8 auto-stop will only react to messages within +/- 50Hz of our Tx frequency. Auto-sequence on "DE ..." and free text 73 messages will respond if they are within 25Hz of our Tx or Rx frequency. ------------------------------------------------------------------------ r7971 | bsomervi | 2017-07-31 02:28:25 +0100 (Mon, 31 Jul 2017) | 1 line Add extra hidden string length argument to genft8 interface ------------------------------------------------------------------------ r7972 | bsomervi | 2017-07-31 02:28:33 +0100 (Mon, 31 Jul 2017) | 5 lines Fix FT8 call first behaviour with "Lock Tx=Rx" Call first combined with "Lock Tx=Rx" (why would anyone consider doing that!) should continue on the Tx frequency of the station being worked and not be switched another calling station's frequency. ------------------------------------------------------------------------ r7973 | k1jt | 2017-08-01 19:01:27 +0100 (Tue, 01 Aug 2017) | 1 line Utility for generating figure for QST/RadCom article. ------------------------------------------------------------------------ r7974 | k1jt | 2017-08-01 19:16:01 +0100 (Tue, 01 Aug 2017) | 2 lines Tidy up some details for 72-bit contest mode in FT8. ------------------------------------------------------------------------ r7975 | k1jt | 2017-08-01 19:46:12 +0100 (Tue, 01 Aug 2017) | 2 lines Don't highlight FT8 contest-mode Tx3 message as a free-text message. ------------------------------------------------------------------------ r7976 | k1jt | 2017-08-01 20:32:54 +0100 (Tue, 01 Aug 2017) | 2 lines Fix the "F4" shortcut description; add usage advuice to "Lock Tx=Rx" tool tip. ------------------------------------------------------------------------ r7980 | k1jt | 2017-08-02 15:05:37 +0100 (Wed, 02 Aug 2017) | 2 lines Enable "nagain" for FT8, as in other modes. ------------------------------------------------------------------------ r7987 | k1jt | 2017-08-02 20:23:42 +0100 (Wed, 02 Aug 2017) | 2 lines Updates to the WSJT-X User Guide for Version 1.8. ------------------------------------------------------------------------ r7988 | k1jt | 2017-08-02 20:27:43 +0100 (Wed, 02 Aug 2017) | 2 lines Add several new screen shots. ------------------------------------------------------------------------ r7989 | k1jt | 2017-08-02 21:43:06 +0100 (Wed, 02 Aug 2017) | 2 lines Allow auto-seq in QRA64 mode; updates to User Guide. ------------------------------------------------------------------------ r7992 | bsomervi | 2017-08-03 12:23:07 +0100 (Thu, 03 Aug 2017) | 7 lines Fix an issue with VFO tuning while running Doppler correction Holding down the SHIFT key while tuning the rig should update the nominal sked frequency, not holding done the SHIFT key should not update the sked frequency. This is not yet perfect and sometimes a change to the nominal sked frequency can get through but it is a rare as yet unfound race condition. ------------------------------------------------------------------------ r7993 | k9an | 2017-08-03 15:46:21 +0100 (Thu, 03 Aug 2017) | 1 line 1. Use norder=3 for nagain, 2. Renumber aptypes. ------------------------------------------------------------------------ r7994 | k1jt | 2017-08-03 15:48:59 +0100 (Thu, 03 Aug 2017) | 2 lines Remove the "Weak" checkbox from GUI, it's not implemented. ------------------------------------------------------------------------ r7995 | k1jt | 2017-08-03 16:12:30 +0100 (Thu, 03 Aug 2017) | 2 lines More updates to the WSJT-X User Guide. ------------------------------------------------------------------------ git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.8@7996 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
400 lines
17 KiB
C++
400 lines
17 KiB
C++
#ifndef NETWORK_MESSAGE_HPP__
|
|
#define NETWORK_MESSAGE_HPP__
|
|
|
|
/*
|
|
* WSJT-X Message Formats
|
|
* ======================
|
|
*
|
|
* All messages are written or read using the QDataStream derivatives
|
|
* defined below, note that we are using the default for floating
|
|
* point precision which means all are double precision i.e. 64-bit
|
|
* IEEE format.
|
|
*
|
|
* Message is big endian format
|
|
*
|
|
* Header format:
|
|
*
|
|
* 32-bit unsigned integer magic number 0xadbccbda
|
|
* 32-bit unsigned integer schema number
|
|
*
|
|
* Payload format:
|
|
*
|
|
* As per the QDataStream format, see below for version used and
|
|
* here:
|
|
*
|
|
* http://doc.qt.io/qt-5/datastreamformat.html
|
|
*
|
|
* for the serialization details for each type, at the time of
|
|
* writing the above document is for Qt_5_0 format which is buggy
|
|
* so we use Qt_5_4 format, differences are:
|
|
*
|
|
* QDateTime:
|
|
* QDate qint64 Julian day number
|
|
* QTime quint32 Milli-seconds since midnight
|
|
* timespec quint8 0=local, 1=UTC, 2=Offset from UTC
|
|
* (seconds)
|
|
* 3=time zone
|
|
* offset qint32 only present if timespec=2
|
|
* timezone several-fields only present if timespec=3
|
|
*
|
|
* we will avoid using QDateTime fields with time zones for simplicity.
|
|
*
|
|
* Type utf8 is a utf-8 byte string formatted as a QByteArray for
|
|
* serialization purposes (currently a quint32 size followed by size
|
|
* bytes, no terminator is present or counted).
|
|
*
|
|
* The QDataStream format document linked above is not complete for
|
|
* the QByteArray serialization format, it is similar to the QString
|
|
* serialization format in that it differentiates between empty
|
|
* strings and null strings. Empty strings have a length of zero
|
|
* whereas null strings have a length field of 0xffffffff.
|
|
*
|
|
* Schema Negotiation
|
|
* ------------------
|
|
*
|
|
* The NetworkMessage::Builder class specifies a schema number which
|
|
* may be incremented from time to time. It represents a version of
|
|
* the underlying encoding schemes used to store data items. Since the
|
|
* underlying encoding is defined by the Qt project in it's
|
|
* QDataStream stream operators, it is essential that clients and
|
|
* servers of this protocol can agree on a common scheme. The
|
|
* NetworkMessage utility classes below exchange the schema number
|
|
* actually used. The handling of the schema is backwards compatible
|
|
* to an extent, so long as clients and servers are written
|
|
* correctly. For example a server written to any particular schema
|
|
* version can communicate with a client written to a later schema.
|
|
*
|
|
* Schema Version 1:- this schema used the QDataStream::Qt_5_0 version
|
|
* which is broken.
|
|
*
|
|
* Schema Version 2:- this schema uses the QDataStream::Qt_5_2 version.
|
|
*
|
|
* Schema Version 3:- this schema uses the QDataStream::Qt_5_4 version.
|
|
*
|
|
*
|
|
*
|
|
* Message Direction Value Type
|
|
* ------------- --------- ---------------------- -----------
|
|
* Heartbeat Out/In 0 quint32
|
|
* Id (unique key) utf8
|
|
* Maximum schema number quint32
|
|
* version utf8
|
|
* revision utf8
|
|
*
|
|
* The heartbeat message shall be sent on a periodic basis every
|
|
* NetworkMessage::pulse seconds (see below), the WSJT-X
|
|
* application does that using the MessageClient class. This
|
|
* message is intended to be used by servers to detect the presence
|
|
* of a client and also the unexpected disappearance of a client
|
|
* and by clients to learn the schema negotiated by the server
|
|
* after it receives the initial heartbeat message from a client.
|
|
* The message_aggregator reference server does just that using the
|
|
* MessageServer class. Upon initial startup a client must send a
|
|
* heartbeat message as soon as is practical, this message is used
|
|
* to negotiate the maximum schema number common to the client and
|
|
* server. Note that the server may not be able to support the
|
|
* client's requested maximum schema number, in which case the
|
|
* first message received from the server will specify a lower
|
|
* schema number (never a higher one as that is not allowed). If a
|
|
* server replies with a lower schema number then no higher than
|
|
* that number shall be used for all further outgoing messages from
|
|
* either clients or the server itself.
|
|
*
|
|
* Note: the "Maximum schema number" field was introduced at the
|
|
* same time as schema 3, therefore servers and clients must assume
|
|
* schema 2 is the highest schema number supported if the Heartbeat
|
|
* message does not contain the "Maximum schema number" field.
|
|
*
|
|
*
|
|
* Status Out 1 quint32
|
|
* Id (unique key) utf8
|
|
* Dial Frequency (Hz) quint64
|
|
* Mode utf8
|
|
* DX call utf8
|
|
* Report utf8
|
|
* Tx Mode utf8
|
|
* Tx Enabled bool
|
|
* Transmitting bool
|
|
* Decoding bool
|
|
* Rx DF qint32
|
|
* Tx DF qint32
|
|
* DE call utf8
|
|
* DE grid utf8
|
|
* DX grid utf8
|
|
* Tx Watchdog bool
|
|
* Sub-mode utf8
|
|
* Fast mode bool
|
|
*
|
|
* WSJT-X sends this status message when various internal state
|
|
* changes to allow the server to track the relevant state of each
|
|
* client without the need for polling commands. The current state
|
|
* changes that generate status messages are:
|
|
*
|
|
* Application start up,
|
|
* "Enable Tx" button status changes,
|
|
* Dial frequency changes,
|
|
* Changes to the "DX Call" field,
|
|
* Operating mode, sub-mode or fast mode changes,
|
|
* Transmit mode changed (in dual JT9+JT65 mode),
|
|
* Changes to the "Rpt" spinner,
|
|
* After an old decodes replay sequence (see Replay below),
|
|
* When switching between Tx and Rx mode,
|
|
* At the start and end of decoding,
|
|
* When the Rx DF changes,
|
|
* When the Tx DF changes,
|
|
* When the DE call or grid changes (currently when settings are exited),
|
|
* When the DX call or grid changes,
|
|
* When the Tx watchdog is set or reset.
|
|
*
|
|
*
|
|
* Decode Out 2 quint32
|
|
* Id (unique key) utf8
|
|
* New bool
|
|
* Time QTime
|
|
* snr qint32
|
|
* Delta time (S) float (serialized as double)
|
|
* Delta frequency (Hz) quint32
|
|
* Mode utf8
|
|
* Message utf8
|
|
* Low confidence bool
|
|
*
|
|
* The decode message is sent when a new decode is completed, in
|
|
* this case the 'New' field is true. It is also used in response
|
|
* to a "Replay" message where each old decode in the "Band
|
|
* activity" window, that has not been erased, is sent in order
|
|
* as a one of these messages with the 'New' field set to false.
|
|
* See the "Replay" message below for details of usage. Low
|
|
* confidence decodes are flagged in protocols where the decoder
|
|
* has knows that a decode has a higher than normal probability
|
|
* of being false, they should not be reported on publicly
|
|
* accessible services without some attached warning or further
|
|
* validation.
|
|
*
|
|
*
|
|
* Clear Out 3 quint32
|
|
* Id (unique key) utf8
|
|
*
|
|
* This message is send when all prior "Decode" messages in the
|
|
* "Band activity" window have been discarded and therefore are
|
|
* no long available for actioning with a "Reply" message. It is
|
|
* sent when the user erases the "Band activity" window and when
|
|
* WSJT-X closes down normally. The server should discard all
|
|
* decode messages upon receipt of this message.
|
|
*
|
|
*
|
|
* Reply In 4 quint32
|
|
* Id (target unique key) utf8
|
|
* Time QTime
|
|
* snr qint32
|
|
* Delta time (S) float (serialized as double)
|
|
* Delta frequency (Hz) quint32
|
|
* Mode utf8
|
|
* Message utf8
|
|
* Low confidence bool
|
|
*
|
|
* In order for a server to provide a useful cooperative service
|
|
* to WSJT-X it is possible for it to initiate a QSO by sending
|
|
* this message to a client. WSJT-X filters this message and only
|
|
* acts upon it if the message exactly describes a prior decode
|
|
* and that decode is a CQ or QRZ message. The action taken is
|
|
* exactly equivalent to the user double clicking the message in
|
|
* the "Band activity" window. The intent of this message is for
|
|
* servers to be able to provide an advanced look up of potential
|
|
* QSO partners, for example determining if they have been worked
|
|
* before or if working them may advance some objective like
|
|
* award progress. The intention is not to provide a secondary
|
|
* user interface for WSJT-X, it is expected that after QSO
|
|
* initiation the rest of the QSO is carried out manually using
|
|
* the normal WSJT-X user interface.
|
|
*
|
|
*
|
|
* QSO Logged Out 5 quint32
|
|
* Id (unique key) utf8
|
|
* Date & Time Off QDateTime
|
|
* DX call utf8
|
|
* DX grid utf8
|
|
* Dial frequency (Hz) quint64
|
|
* Mode utf8
|
|
* Report send utf8
|
|
* Report received utf8
|
|
* Tx power utf8
|
|
* Comments utf8
|
|
* Name utf8
|
|
* Date & Time On QDateTime
|
|
*
|
|
* The QSO logged message is sent to the server(s) when the
|
|
* WSJT-X user accepts the "Log QSO" dialog by clicking the "OK"
|
|
* button.
|
|
*
|
|
*
|
|
* Close Out 6 quint32
|
|
* Id (unique key) utf8
|
|
*
|
|
* Close is sent by a client immediately prior to it shutting
|
|
* down gracefully.
|
|
*
|
|
*
|
|
* Replay In 7 quint32
|
|
* Id (unique key) utf8
|
|
*
|
|
* When a server starts it may be useful for it to determine the
|
|
* state of preexisting clients. Sending this message to each
|
|
* client as it is discovered will cause that client (WSJT-X) to
|
|
* send a "Decode" message for each decode currently in its "Band
|
|
* activity" window. Each "Decode" message sent will have the
|
|
* "New" flag set to false so that they can be distinguished from
|
|
* new decodes. After all the old decodes have been broadcast a
|
|
* "Status" message is also broadcast. If the server wishes to
|
|
* determine the status of a newly discovered client; this
|
|
* message should be used.
|
|
*
|
|
*
|
|
* Halt Tx In 8
|
|
* Id (unique key) utf8
|
|
* Auto Tx Only bool
|
|
*
|
|
* The server may stop a client from transmitting messages either
|
|
* immediately or at the end of the current transmission period
|
|
* using this message.
|
|
*
|
|
*
|
|
* Free Text In 9
|
|
* Id (unique key) utf8
|
|
* Text utf8
|
|
* Send bool
|
|
*
|
|
* This message allows the server to set the current free text
|
|
* message content. Sending this message with a non-empty "Text"
|
|
* field is equivalent to typing a new message (old contents are
|
|
* discarded) in to the WSJT-X free text message field or "Tx5"
|
|
* field (both are updated) and if the "Send" flag is set then
|
|
* clicking the "Now" radio button for the "Tx5" field if tab one
|
|
* is current or clicking the "Free msg" radio button if tab two
|
|
* is current.
|
|
*
|
|
* It is the responsibility of the sender to limit the length of
|
|
* the message text and to limit it to legal message
|
|
* characters. Despite this, it may be difficult for the sender
|
|
* to determine the maximum message length without reimplementing
|
|
* the complete message encoding protocol. Because of this is may
|
|
* be better to allow any reasonable message length and to let
|
|
* the WSJT-X application encode and possibly truncate the actual
|
|
* on-air message.
|
|
*
|
|
* If the message text is empty the meaning of the message is
|
|
* refined to send the current free text unchanged when the
|
|
* "Send" flag is set or to clear the current free text when the
|
|
* "Send" flag is unset. Note that this API does not include a
|
|
* command to determine the contents of the current free text
|
|
* message.
|
|
*
|
|
* WSPRDecode Out 10 quint32
|
|
* Id (unique key) utf8
|
|
* New bool
|
|
* Time QTime
|
|
* snr qint32
|
|
* Delta time (S) float (serialized as double)
|
|
* Frequency (Hz) quint64
|
|
* Drift (Hz) qint32
|
|
* Callsign utf8
|
|
* Grid utf8
|
|
* Power (dBm) qint32
|
|
*
|
|
* The decode message is sent when a new decode is completed, in
|
|
* this case the 'New' field is true. It is also used in response
|
|
* to a "Replay" message where each old decode in the "Band
|
|
* activity" window, that has not been erased, is sent in order
|
|
* as a one of these messages with the 'New' field set to
|
|
* false. See the "Replay" message below for details of usage.
|
|
*
|
|
*
|
|
*/
|
|
|
|
#include <QDataStream>
|
|
|
|
#include "pimpl_h.hpp"
|
|
|
|
class QIODevice;
|
|
class QByteArray;
|
|
class QString;
|
|
|
|
namespace NetworkMessage
|
|
{
|
|
// NEVER DELETE MESSAGE TYPES
|
|
enum Type
|
|
{
|
|
Heartbeat,
|
|
Status,
|
|
Decode,
|
|
Clear,
|
|
Reply,
|
|
QSOLogged,
|
|
Close,
|
|
Replay,
|
|
HaltTx,
|
|
FreeText,
|
|
WSPRDecode,
|
|
maximum_message_type_ // ONLY add new message types
|
|
// immediately before here
|
|
};
|
|
|
|
quint32 constexpr pulse {15}; // seconds
|
|
|
|
//
|
|
// NetworkMessage::Builder - build a message containing serialized Qt types
|
|
//
|
|
class Builder
|
|
: public QDataStream
|
|
{
|
|
public:
|
|
static quint32 constexpr magic {0xadbccbda}; // never change this
|
|
|
|
// increment this if a newer Qt schema is required and add decode
|
|
// logic to the Builder and Reader class implementations
|
|
#if QT_VERSION >= 0x050400
|
|
static quint32 constexpr schema_number {3};
|
|
#elif QT_VERSION >= 0x050200
|
|
static quint32 constexpr schema_number {2};
|
|
#else
|
|
// Schema 1 (Qt_5_0) is broken
|
|
#error "Qt version 5.2 or greater required"
|
|
#endif
|
|
|
|
explicit Builder (QIODevice *, Type, QString const& id, quint32 schema);
|
|
explicit Builder (QByteArray *, Type, QString const& id, quint32 schema);
|
|
Builder (Builder const&) = delete;
|
|
Builder& operator = (Builder const&) = delete;
|
|
|
|
private:
|
|
void common_initialization (Type type, QString const& id, quint32 schema);
|
|
};
|
|
|
|
//
|
|
// NetworkMessage::Reader - read a message containing serialized Qt types
|
|
//
|
|
// Message is as per NetworkMessage::Builder above, the schema()
|
|
// member may be used to determine the schema of the original
|
|
// message.
|
|
//
|
|
class Reader
|
|
: public QDataStream
|
|
{
|
|
public:
|
|
explicit Reader (QIODevice *);
|
|
explicit Reader (QByteArray const&);
|
|
Reader (Reader const&) = delete;
|
|
Reader& operator = (Reader const&) = delete;
|
|
~Reader ();
|
|
|
|
quint32 schema () const;
|
|
Type type () const;
|
|
QString id () const;
|
|
|
|
private:
|
|
class impl;
|
|
pimpl<impl> m_;
|
|
};
|
|
}
|
|
|
|
#endif
|