mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-08-24 15:16:36 -04:00
This change is specifically to work around some surprising behaviour in the Elecraft K3[S] which suffers audio drop outs when null changes that might effect the internal DSP are processed. This manifests when a blind mode change is sent through Commander. Here we read the mode and only subsequently command a mode change if it is not what we expect. Blind mode changes were preferred with Commander until now since state queries through Commander are occasionally unreliable. This issue has been reported to Elecraft so may not be permanent if they can and will address it in the rig's firmware. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7565 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
#ifndef DX_LAB_SUITE_COMMANDER_TRANSCEIVER_HPP__
|
|
#define DX_LAB_SUITE_COMMANDER_TRANSCEIVER_HPP__
|
|
|
|
#include <memory>
|
|
|
|
#include "TransceiverFactory.hpp"
|
|
#include "PollingTransceiver.hpp"
|
|
|
|
class QTcpSocket;
|
|
class QByteArray;
|
|
class QString;
|
|
|
|
//
|
|
// DX Lab Suite Commander Interface
|
|
//
|
|
// Implemented as a Transceiver decorator because we may want the PTT
|
|
// services of another Transceiver type such as the HamlibTransceiver
|
|
// which can be enabled by wrapping a HamlibTransceiver instantiated
|
|
// as a "Hamlib Dummy" transceiver in the Transceiver factory method.
|
|
//
|
|
class DXLabSuiteCommanderTransceiver final
|
|
: public PollingTransceiver
|
|
{
|
|
Q_OBJECT; // for translation context
|
|
|
|
public:
|
|
static void register_transceivers (TransceiverFactory::Transceivers *, int id);
|
|
|
|
// takes ownership of wrapped Transceiver
|
|
explicit DXLabSuiteCommanderTransceiver (std::unique_ptr<TransceiverBase> wrapped,
|
|
QString const& address, bool use_for_ptt,
|
|
int poll_interval, QObject * parent = nullptr);
|
|
|
|
protected:
|
|
int do_start () override;
|
|
void do_stop () override;
|
|
void do_frequency (Frequency, MODE, bool no_ignore) override;
|
|
void do_tx_frequency (Frequency, MODE, bool no_ignore) override;
|
|
void do_mode (MODE) override;
|
|
void do_ptt (bool on) override;
|
|
|
|
void poll () override;
|
|
|
|
private:
|
|
MODE get_mode (bool no_debug = false);
|
|
void simple_command (QString const&, bool no_debug = false);
|
|
QString command_with_reply (QString const&, bool no_debug = false);
|
|
bool write_to_port (QString const&);
|
|
QString frequency_to_string (Frequency) const;
|
|
Frequency string_to_frequency (QString) const;
|
|
|
|
std::unique_ptr<TransceiverBase> wrapped_; // may be null
|
|
bool use_for_ptt_;
|
|
QString server_;
|
|
QTcpSocket * commander_;
|
|
QLocale locale_;
|
|
};
|
|
|
|
#endif
|