mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-10-31 15:47:10 -04:00
03c9852dee
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.4@4572 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
54 lines
1.7 KiB
C++
54 lines
1.7 KiB
C++
#ifndef EMULATE_SPLIT_TRANSCEIVER_HPP__
|
|
#define EMULATE_SPLIT_TRANSCEIVER_HPP__
|
|
|
|
#include <memory>
|
|
|
|
#include "Transceiver.hpp"
|
|
|
|
//
|
|
// Emulate Split Transceiver
|
|
//
|
|
// Helper decorator class that encapsulates the emulation of split TX
|
|
// operation.
|
|
//
|
|
// Responsibilities
|
|
//
|
|
// Delegates all but setting of other (split) frequency to the
|
|
// wrapped Transceiver instance. Also routes failure signals from the
|
|
// wrapped Transceiver instance to this instances failure signal.
|
|
//
|
|
// Intercepts status updates from the wrapped Transceiver instance
|
|
// and re-signals it with the emulated status.
|
|
//
|
|
// Generates a status update signal if the other (split) frequency is
|
|
// changed, this is necessary since the wrapped transceiver instance
|
|
// never receives other frequency changes.
|
|
//
|
|
class EmulateSplitTransceiver final
|
|
: public Transceiver
|
|
{
|
|
public:
|
|
// takes ownership of wrapped Transceiver
|
|
explicit EmulateSplitTransceiver (std::unique_ptr<Transceiver> wrapped);
|
|
|
|
void start () noexcept override;
|
|
void frequency (Frequency) noexcept override;
|
|
void tx_frequency (Frequency, bool rationalise_mode) noexcept override;
|
|
void ptt (bool on) noexcept override;
|
|
|
|
// forward everything else to wrapped Transceiver
|
|
void stop () noexcept override {wrapped_->stop (); Q_EMIT finished ();}
|
|
void mode (MODE m, bool /* rationalise */) noexcept override {wrapped_->mode (m, false);}
|
|
void sync (bool force_signal) noexcept override {wrapped_->sync (force_signal);}
|
|
|
|
private:
|
|
void handle_update (TransceiverState);
|
|
|
|
std::unique_ptr<Transceiver> wrapped_;
|
|
Frequency frequency_[2]; // [0] <- RX, [1] <- other
|
|
Frequency pre_tx_frequency_; // return to this on switching to Rx
|
|
bool tx_;
|
|
};
|
|
|
|
#endif
|