mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	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
 |