mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-01 08:07:10 -04:00
2d640afe7b
Enhanced TransceiverBase error exception type to allow for language translatable messages. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4033 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
63 lines
1.7 KiB
C++
63 lines
1.7 KiB
C++
#ifndef POLLING_TRANSCEIVER_HPP__
|
|
#define POLLING_TRANSCEIVER_HPP__
|
|
|
|
#include <QObject>
|
|
|
|
#include "TransceiverBase.hpp"
|
|
|
|
#include "pimpl_h.hpp"
|
|
|
|
//
|
|
// Polling Transceiver
|
|
//
|
|
// Helper base class that encapsulates the emulation of continuous
|
|
// update and caching of a transceiver state.
|
|
//
|
|
// Collaborations
|
|
//
|
|
// Implements the TransceiverBase post action interface and provides
|
|
// the abstract poll() operation for sub-classes to implement. The
|
|
// pol operation is invoked every poll_interval milliseconds.
|
|
//
|
|
// Responsibilities
|
|
//
|
|
// Because some rig interfaces don't immediately update after a state
|
|
// change request; this class allows a rig a few polls to stabilise
|
|
// to the requested state before signalling the change. This means
|
|
// that clients don't see intermediate states that are sometimes
|
|
// inaccurate, e.g. changing the split TX frequency on Icom rigs
|
|
// requires a VFO switch and polls while switched will return the
|
|
// wrong current frequency.
|
|
//
|
|
class PollingTransceiver
|
|
: public TransceiverBase
|
|
{
|
|
Q_OBJECT; // for translation context
|
|
|
|
protected:
|
|
explicit PollingTransceiver (int poll_interval); // in milliseconds
|
|
|
|
public:
|
|
~PollingTransceiver ();
|
|
|
|
protected:
|
|
void do_sync (bool /* force_signal */) override final;
|
|
|
|
// Sub-classes implement this and fetch what they can from the rig
|
|
// in a non-intrusive manner.
|
|
virtual void poll () = 0;
|
|
|
|
void do_post_start () override final;
|
|
void do_post_stop () override final;
|
|
void do_post_frequency (Frequency) override final;
|
|
void do_post_tx_frequency (Frequency) override final;
|
|
void do_post_mode (MODE) override final;
|
|
bool do_pre_update () override final;
|
|
|
|
private:
|
|
class impl;
|
|
pimpl<impl> m_;
|
|
};
|
|
|
|
#endif
|