mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2026-06-05 15:34:39 -04:00
Merge branch 'ft9_refactor' into feat-refactor
# Conflicts: # CMakeLists.txt # lib/ft4/getcandidates4.f90 # lib/ft4/sync4d.f90
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
// takes ownership of wrapped Transceiver
|
||||
explicit EmulateSplitTransceiver (std::unique_ptr<Transceiver> wrapped,
|
||||
QObject * parent = nullptr);
|
||||
|
||||
void set (TransceiverState const&,
|
||||
unsigned sequence_number) noexcept override;
|
||||
|
||||
// forward everything else to wrapped Transceiver
|
||||
void start (unsigned sequence_number) noexcept override {wrapped_->start (sequence_number);}
|
||||
void stop () noexcept override {wrapped_->stop ();}
|
||||
|
||||
private:
|
||||
void handle_update (TransceiverState const&, unsigned seqeunce_number);
|
||||
|
||||
std::unique_ptr<Transceiver> wrapped_;
|
||||
Frequency rx_frequency_; // requested Rx frequency
|
||||
Frequency tx_frequency_; // requested Tx frequency
|
||||
bool split_; // requested split state
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user