mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	This option defaults to on but may be unchecked in settings. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6359 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, MODE) 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 (bool /* reset_split */) noexcept override {wrapped_->stop (false); 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
 |