forked from jtdx-project/jtdx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Configuration.hpp
377 lines (340 loc) · 11.6 KB
/
Configuration.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
// last time modified by Igor UA3DJY on 20200207
#ifndef CONFIGURATION_HPP_
#define CONFIGURATION_HPP_
#include <QObject>
#include <QFont>
#include "Radio.hpp"
#include "IARURegions.hpp"
#include "AudioDevice.hpp"
#include "Transceiver.hpp"
#include "JTDXDateTime.h"
#include "pimpl_h.hpp"
class QSettings;
class QWidget;
class QAudioDeviceInfo;
class QString;
class QDir;
class Bands;
class FrequencyList_v2;
class StationList;
class QStringListModel;
class QHostAddress;
//
// Class Configuration
//
// Encapsulates the control, access and, persistence of user defined
// settings for the wsjtx GUI. Setting values are accessed through a
// QDialog window containing concept orientated tab windows.
//
// Responsibilities
//
// Provides management of the CAT and PTT rig interfaces, providing
// control access via a minimal generic set of Qt slots and status
// updates via Qt signals. Internally the rig control capability is
// farmed out to a separate thread since many of the rig control
// functions are blocking.
//
// All user settings required by the wsjtx GUI are exposed through
// query methods. Settings only become visible once they have been
// accepted by the user which is done by clicking the "OK" button on
// the settings dialog.
//
// The QSettings instance passed to the constructor is used to read
// and write user settings.
//
// Pointers to three QAbstractItemModel objects are provided to give
// access to amateur band information, user working frequencies and,
// user operating band information. These porovide consistent data
// models that can be used in GUI lists or tables or simply queried
// for user defined bands, default operating frequencies and, station
// descriptions.
//
class Configuration final
: public QObject
{
Q_OBJECT;
Q_ENUMS (DataMode Type2MsgGen);
public:
using MODE = Transceiver::MODE;
using TransceiverState = Transceiver::TransceiverState;
using Frequency = Radio::Frequency;
using port_type = quint16;
enum DataMode {data_mode_none, data_mode_USB, data_mode_data};
enum Type2MsgGen {type_2_msg_1_full, type_2_msg_3_full, type_2_msg_5_only};
explicit Configuration (QSettings * settings, QWidget * parent = nullptr);
~Configuration ();
int exec ();
bool is_active () const;
QDir temp_dir () const;
QDir doc_dir () const;
QDir data_dir () const;
QAudioDeviceInfo const& audio_input_device () const;
AudioDevice::Channel audio_input_channel () const;
QAudioDeviceInfo const& audio_output_device () const;
AudioDevice::Channel audio_output_channel () const;
// These query methods should be used after a call to exec() to
// determine if either the audio input or audio output stream
// parameters have changed. The respective streams should be
// re-opened if they return true.
bool restart_audio_input () const;
bool restart_audio_output () const;
QString my_callsign () const;
QString my_grid () const;
QString timeFrom () const;
QString content () const;
QString countries () const;
QString callsigns () const;
QFont decoded_text_font () const;
qint32 id_interval () const;
qint32 ntrials() const;
qint32 ntrials10() const;
qint32 ntrialsrxf10() const;
qint32 npreampass() const;
qint32 aggressive() const;
qint32 harmonicsdepth() const;
qint32 nsingdecatt() const;
qint32 ntopfreq65() const;
qint32 nAnswerCQCounter() const;
qint32 nAnswerInCallCounter() const;
qint32 nSentRReportCounter() const;
qint32 nSentRR7373Counter() const;
double txDelay() const;
bool fmaskact() const;
bool answerCQCount() const;
bool answerInCallCount() const;
bool sentRReportCount() const;
bool sentRR7373Count() const;
bool strictdirCQ() const;
bool halttxreplyother() const;
bool hidefree() const;
bool hide2ndHash() const;
bool showcq() const;
bool showcqrrr73() const;
bool showcq73() const;
bool enableContent() const;
bool enableCountryFilter() const;
bool enableCallsignFilter() const;
bool do_snr() const;
bool do_pwr() const;
bool rig_power() const;
bool id_after_73 () const;
bool tx_QSY_allowed () const;
bool spot_to_psk_reporter () const;
bool spot_to_dxsummit () const;
bool prevent_spotting_false () const;
bool filterUDP () const;
bool send_to_eqsl () const;
QString eqsl_username () const;
QString eqsl_passwd () const;
QString eqsl_nickname () const;
bool usesched() const;
QString sched_hh_1 () const;
QString sched_mm_1 () const;
QString sched_band_1 () const;
bool sched_mix_1 () const;
QString sched_hh_2 () const;
QString sched_mm_2 () const;
QString sched_band_2 () const;
bool sched_mix_2 () const;
QString sched_hh_3 () const;
QString sched_mm_3 () const;
QString sched_band_3 () const;
bool sched_mix_3 () const;
QString sched_hh_4 () const;
QString sched_mm_4 () const;
QString sched_band_4 () const;
bool sched_mix_4 () const;
QString sched_hh_5 () const;
QString sched_mm_5 () const;
QString sched_band_5 () const;
bool sched_mix_5 () const;
bool monitor_off_at_startup () const;
bool monitor_last_used () const;
bool log_as_RTTY () const;
bool report_in_comments () const;
bool prompt_to_log () const;
bool autolog () const;
bool insert_blank () const;
bool useDarkStyle () const;
bool countryName () const;
bool countryPrefix () const;
bool callNotif () const;
bool gridNotif () const;
bool otherMessagesMarker () const;
bool RR73Marker () const;
bool redMarker () const;
bool blueMarker () const;
bool txtColor () const;
bool workedStriked () const;
bool workedUnderlined () const;
bool workedColor () const;
bool workedDontShow () const;
bool newCQZ () const;
bool newCQZBand () const;
bool newCQZBandMode () const;
bool newITUZ () const;
bool newITUZBand () const;
bool newITUZBandMode () const;
bool newDXCC () const;
bool newDXCCBand () const;
bool newDXCCBandMode () const;
bool newPx () const;
bool newPxBand () const;
bool newPxBandMode () const;
bool newCall () const;
bool newCallBand () const;
bool newCallBandMode () const;
bool newGrid () const;
bool newGridBand () const;
bool newGridBandMode () const;
bool newPotential() const;
QString hideContinents() const;
bool clear_DX () const;
bool clear_DX_exit () const;
bool miles () const;
int watchdog () const;
int tunetimer () const;
bool TX_messages () const;
bool hide_TX_messages () const;
bool split_mode () const;
bool decode_at_52s () const;
bool beepOnMyCall () const;
bool beepOnNewCQZ () const;
bool beepOnNewITUZ () const;
bool beepOnNewDXCC () const;
bool beepOnNewGrid () const;
bool beepOnNewPx () const;
bool beepOnNewCall () const;
bool beepOnFirstMsg () const;
bool post_decodes () const;
QString udp_server_name () const;
port_type udp_server_port () const;
QString udp2_server_name () const;
port_type udp2_server_port () const;
QString tcp_server_name () const;
port_type tcp_server_port () const;
bool valid_udp2 () const;
bool accept_udp_requests () const;
bool enable_udp1_adif_sending () const;
bool enable_udp2_broadcast () const;
bool enable_tcp_connection () const;
bool write_decoded () const;
bool write_decoded_debug () const;
bool udpWindowToFront () const;
bool udpWindowRestore () const;
Bands * bands ();
Bands const * bands () const;
IARURegions::Region region () const;
FrequencyList_v2 * frequencies ();
FrequencyList_v2 const * frequencies () const;
StationList * stations ();
StationList const * stations () const;
QStringListModel * macros ();
QStringListModel const * macros () const;
QDir save_directory () const;
QString rig_name () const;
Type2MsgGen type_2_msg_gen () const;
QColor color_CQ () const;
QColor color_MyCall () const;
QColor color_TxMsg () const;
QColor color_NewCQZ () const;
QColor color_NewCQZBand () const;
QColor color_NewITUZ () const;
QColor color_NewITUZBand () const;
QColor color_NewDXCC () const;
QColor color_NewDXCCBand () const;
QColor color_NewCall () const;
QColor color_NewCallBand () const;
QColor color_NewPx () const;
QColor color_NewPxBand () const;
QColor color_NewGrid () const;
QColor color_NewGridBand () const;
QColor color_StandardCall () const;
QColor color_WorkedCall () const;
bool pwrBandTxMemory () const;
bool pwrBandTuneMemory () const;
// This method queries if a CAT and PTT connection is operational.
bool is_transceiver_online () const;
// Start the rig connection, safe and normal to call when rig is
// already open.
bool transceiver_online ();
// check if a real rig is configured
bool is_dummy_rig () const;
// Frequency resolution of the rig
//
// 0 - 1Hz
// 1 - 10Hz rounded
// -1 - 10Hz truncated
// 2 - 100Hz rounded
// -2 - 100Hz truncated
int transceiver_resolution () const;
// Close down connection to rig.
void transceiver_offline ();
void add_callsign_hideFilter (QString);
void set_jtdxtime (JTDXDateTime*);
// Set transceiver frequency in Hertz.
Q_SLOT void transceiver_frequency (Frequency);
// Setting a non zero TX frequency means split operation
// rationalise_mode means ensure TX uses same mode as RX.
Q_SLOT void transceiver_tx_frequency (Frequency = 0u);
// Set transceiver mode.
//
// Rationalise means ensure TX uses same mode as RX.
Q_SLOT void transceiver_mode (MODE);
// Set/unset PTT.
//
// Note that this must be called even if VOX PTT is selected since
// the "Emulate Split" mode requires PTT information to coordinate
// frequency changes.
Q_SLOT void transceiver_ptt (bool = true);
// Set/unset Fast_mode for polling tranceiver for FT4.
//
Q_SLOT void transceiver_ft4_mode (bool = false);
// Attempt to (re-)synchronise transceiver state.
//
// Force signal guarantees either a transceiver_update or a
// transceiver_failure signal.
//
// The enforce_mode_and_split parameter ensures that future
// transceiver updates have the correct mode and split setting
// i.e. the transceiver is ready for use.
Q_SLOT void sync_transceiver (bool force_signal = false, bool enforce_mode_and_split = false);
//
// This signal indicates that a font has been selected and accepted
// for the decoded text.
//
Q_SIGNAL void decoded_text_font_changed (QFont);
//
// This signal is emitted when the UDP server changes
//
Q_SIGNAL void udp_server_changed (QString const& udp_server);
Q_SIGNAL void udp_server_port_changed (port_type server_port);
Q_SIGNAL void tcp_server_changed (QString const& tcp_server);
Q_SIGNAL void tcp_server_port_changed (port_type server_port);
//
// These signals are emitted and reflect transceiver state changes
//
// signals a change in one of the TransceiverState members
Q_SIGNAL void transceiver_update (Transceiver::TransceiverState const&) const;
// Signals a failure of a control rig CAT or PTT connection.
//
// A failed rig CAT or PTT connection is fatal and the underlying
// connections are closed automatically. The connections can be
// re-established with a call to transceiver_online(true) assuming
// the fault condition has been rectified or is transient.
Q_SIGNAL void transceiver_failure (QString const& reason) const;
private:
class impl;
pimpl<impl> m_;
};
Q_DECLARE_METATYPE (Configuration::DataMode);
Q_DECLARE_METATYPE (Configuration::Type2MsgGen);
#if !defined (QT_NO_DEBUG_STREAM)
ENUM_QDEBUG_OPS_DECL (Configuration, DataMode);
ENUM_QDEBUG_OPS_DECL (Configuration, Type2MsgGen);
#endif
ENUM_QDATASTREAM_OPS_DECL (Configuration, DataMode);
ENUM_QDATASTREAM_OPS_DECL (Configuration, Type2MsgGen);
ENUM_CONVERSION_OPS_DECL (Configuration, DataMode);
ENUM_CONVERSION_OPS_DECL (Configuration, Type2MsgGen);
#endif