mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	RIGCTRL is defined as a log channel for rig control messages and the appropriate logger is made available to children of the Transceiver class. Use Transceiver::logger() to access the logger. Switched existing rig control QDebug messages to Boost logging.
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 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
 | |
| {
 | |
|   Q_OBJECT
 | |
| 
 | |
| public:
 | |
|   // takes ownership of wrapped Transceiver
 | |
|   explicit EmulateSplitTransceiver (logger_type *,
 | |
|                                     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
 |