mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	Note that reverting to v1.7 will invalidate any saved working frequencies from v1.8 but proceeding to v1.8 again will present a reset set of working frequencies i.e. any user defined entries in v1.8 will be lost of a v1.8 -> v1.7 -> v1.8 transition is made. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8018 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef WSPR_BAND_HOPPING_HPP__
 | 
						|
#define WSPR_BAND_HOPPING_HPP__
 | 
						|
 | 
						|
#include <QObject>
 | 
						|
 | 
						|
#include "pimpl_h.hpp"
 | 
						|
 | 
						|
class QSettings;
 | 
						|
class Configuration;
 | 
						|
class QWidget;
 | 
						|
 | 
						|
//
 | 
						|
// WSPR Band Hopping Control
 | 
						|
//
 | 
						|
//  WSPR specifies  a globally  coordinated band hopping  schedule and
 | 
						|
//  this class implements that.
 | 
						|
//
 | 
						|
// Responsibilities
 | 
						|
//
 | 
						|
//  Provides a  maintenance dialog allowing  the user to  define which
 | 
						|
//  bands are allowed from the band hopping schedule as defined here:
 | 
						|
//
 | 
						|
//    http://physics.princeton.edu/pulsar/K1JT/doc/wspr/wspr-main.html
 | 
						|
//
 | 
						|
//  Along with selecting bands a flag  indicating that a short tune up
 | 
						|
//  signal is  required for specified  bands before they are  used for
 | 
						|
//  receive.
 | 
						|
//
 | 
						|
//  Provides a Qt property that holds  the Tx percentage which is used
 | 
						|
//  to generate a semi-randomized schedule of period to transmit. This
 | 
						|
//  schedule is random but adjusted to limit the number of consecutive
 | 
						|
//  transmission periods, it also adjusts  the schedule to ensure that
 | 
						|
//  the overall number of transmission periods in any two hour hopping
 | 
						|
//  schedule reflects the percentage provided.
 | 
						|
//
 | 
						|
// Collaborations
 | 
						|
//
 | 
						|
//  Settings including  the selected bands  with periods, the  tune up
 | 
						|
//  flags  and the  gray line  duration are  maintained in  persistent
 | 
						|
//  storage using the provided QSettings object instance.
 | 
						|
//
 | 
						|
//  A passed  in Configuration  object instance is  used to  query the
 | 
						|
//  FrequencyList_v2 model  to determine working frequencies  for each
 | 
						|
//  band. The  row index  of this  model is  returned by  this classes
 | 
						|
//  hopping scheduling method so it may be conveniently used to select
 | 
						|
//  a new working frequency by a client.
 | 
						|
//
 | 
						|
class WSPRBandHopping
 | 
						|
  : public QObject
 | 
						|
{
 | 
						|
  Q_OBJECT;
 | 
						|
  Q_PROPERTY (int tx_percent READ tx_percent WRITE set_tx_percent);
 | 
						|
 | 
						|
public:
 | 
						|
  WSPRBandHopping (QSettings *, Configuration const *, QWidget * parent = nullptr);
 | 
						|
  ~WSPRBandHopping ();
 | 
						|
 | 
						|
  // display the band hopping maintenance dialog
 | 
						|
  Q_SLOT void show_dialog (bool);
 | 
						|
 | 
						|
  // Property tx_percent implementation
 | 
						|
  int tx_percent () const;
 | 
						|
  Q_SLOT void set_tx_percent (int);
 | 
						|
 | 
						|
  // structure that defines the results of the next_hop() method
 | 
						|
  struct Hop
 | 
						|
  {
 | 
						|
    QString period_name_;
 | 
						|
    int frequencies_index_;     // may be -1 indicating no change
 | 
						|
    bool tune_required_;
 | 
						|
    bool tx_next_;
 | 
						|
  };
 | 
						|
  // return the next band parameters
 | 
						|
  Hop next_hop (bool tx_enabled);
 | 
						|
  // determine if the next period should be a transmit period
 | 
						|
  bool next_is_tx (bool simple_schedule = false);
 | 
						|
 | 
						|
private:
 | 
						|
  // implementation hidden from public interface
 | 
						|
  class impl;
 | 
						|
  pimpl<impl> m_;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |