The MessageClient and MessageServer classes now agree a maximum common
schema number for the protocol described in NetworkMessage.hpp. this
is achieved by the client sending a Heartbeat message specifying the
highest schema number supported, the server responds with messages
using the minimum of its highest supported schema number and the
highest schema number sent by the client in its initial Heartbeat
message. This mechanism enables clients and servers built with
different generations of the message schema to interoperate with
minimum loss of functionality.
It should be noted that messages may be extended with new fields on
the end of the current definition so long as the meaning of the
original fields are unchanged. Such an extension does not need the
schema number to be incremented. On the other hand, using a newer
version of the underlying Qt QDataStream::Version should always
increment the schema number since the NetworkMessage::Builder and
NetworkMessage::Reader classes need to know which QDataStream::Version
to use.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5991 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This message now has the ability to simply change the free text
message or to change the message and send it ASAP.
The message_aggregator reference UDP server application exercises this
feature by sending a new free text message on any edit and requesting
it be sent by WSJT-X when editing is finished i,e, RETURN pressed or
focus moved away.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5445 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
By providing safe defaults for expected input fields that are not
present in messages from older version senders, it is now possible to
mix versions of clients and servers. This relies on fields never
changing meaning or content, new fields may be safely added to the end
of existing messages.
Merged from the wsjtx-1.5 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5338 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
The reply can now be used to turn off auto Tx or to halt Tx
immediately. Also enforced the accept UDP requests setting for halt Tx
and set free text message replies.
Merged from the wsjtx-1.5 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5336 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Also added Tx status to status UDP message.
Added the above features to the reference UDP server
message_aggregator.
Merged from the wsjtx-1.5 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5334 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
To facilitate interaction with other applications WSJT-X now sends
status updates to a predefined UDP server or multicast group
address. The status updates include the information currently posted
to the decodes.txt and wsjtx_status.txt files. An optional back
communications channel is also implemented allowing the UDP server
application to control some basic actions in WSJT-X.
A reference implementaion of a typical UDP server written in C++ using
Qt is provided to demonstrate these facilities. This application is
not intended as a user tool but only as an example of how a third
party application may interact with WSJT-X.
The UDP messages Use QDataStream based serialization. Messages are
documented in NetworkMessage.hpp along with some helper classes that
simplify the building and decoding of messages.
Two message handling classes are introduced, MessageClient and
MessageServer. WSJT-X uses the MessageClient class to manage outgoing
and incoming UDP messages that allow communication with other
applications. The MessageServer class implements the kind of code
that a potential cooperating application might use. Although these
classes use Qt serialization facilities, the message formats are
easily read and written by applications that do not use the Qt
framework.
MessageAggregator is a demonstration application that uses
MessageServer and presents a GUI that displays messages from one or
more WSJT-X instances and allows sending back a CQ or QRZ reply
invocation by double clicking a decode. This application is not
intended as a user facing tool but rather as a demonstration of the
WSJT-X UDP messaging facility. It also demonstrates being a multicast
UDP server by allowing multiple instances to run concurrently. This is
enabled by using an appropriate multicast group address as the server
address. Cooperating applications need not implement multicast
techniques but it is recomended otherwise only a single appliaction
can act as a broadcast message (from WSJT-X) recipient.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5225 ab8295b8-cf94-4d9e-aec4-7959e3be5d79