1 #ifndef OMNI_RIG_TRANSCEIVER_HPP__ 2 #define OMNI_RIG_TRANSCEIVER_HPP__ 3 4 #include <memory> 5 6 #include <QScopedPointer> 7 #include <QString> 8 #include <QTimer> 9 10 #include "TransceiverFactory.hpp" 11 #include "TransceiverBase.hpp" 12 13 #include "OmniRig.h" 14 15 // 16 // OmniRig Transceiver Interface 17 // 18 // Implemented as a Transceiver decorator because we may want the PTT 19 // services of another Transceiver type such as the HamlibTransceiver 20 // which can be enabled by wrapping a HamlibTransceiver instantiated 21 // as a "Hamlib Dummy" transceiver in the Transceiver factory method. 22 // 23 class OmniRigTransceiver final 24 : public TransceiverBase 25 { 26 Q_OBJECT; 27 28 public: 29 static void register_transceivers (logger_type *, TransceiverFactory::Transceivers *, unsigned id1, unsigned id2); 30 31 enum RigNumber {One = 1, Two}; 32 33 // takes ownership of wrapped Transceiver 34 explicit OmniRigTransceiver (logger_type *, std::unique_ptr<TransceiverBase> wrapped, 35 RigNumber, TransceiverFactory::PTTMethod ptt_type, 36 QString const& ptt_port, QObject * parent = nullptr); 37 ~OmniRigTransceiver (); 38 39 int do_start () override; 40 void do_stop () override; 41 void do_frequency (Frequency, MODE, bool no_ignore) override; 42 void do_tx_frequency (Frequency, MODE, bool no_ignore) override; 43 void do_mode (MODE) override; 44 void do_ptt (bool on) override; 45 46 private: 47 Q_SLOT void handle_COM_exception (int, QString, QString, QString); 48 Q_SLOT void handle_visible_change (); 49 Q_SLOT void handle_rig_type_change (int rig_number); 50 Q_SLOT void handle_status_change (int rig_number); 51 Q_SLOT void handle_params_change (int rig_number, int params); 52 Q_SLOT void handle_custom_reply (int, QVariant const& command, QVariant const& reply); 53 54 MODE map_mode (OmniRig::RigParamX param); 55 OmniRig::RigParamX map_mode (MODE mode); 56 57 std::unique_ptr<TransceiverBase> wrapped_; // may be null 58 bool use_for_ptt_; 59 TransceiverFactory::PTTMethod ptt_type_; 60 QScopedPointer<OmniRig::OmniRigX> omni_rig_; 61 RigNumber rig_number_; 62 QScopedPointer<OmniRig::RigX> rig_; 63 QScopedPointer<OmniRig::PortBits> port_; 64 QString rig_type_; 65 int readable_params_; 66 int writable_params_; 67 QScopedPointer<QTimer> offline_timer_; 68 bool send_update_signal_; 69 bool reversed_; // some rigs can reverse VFOs 70 }; 71 72 #endif 73