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