This class provides support for the Telnet protocol. This is useful for communication with legacy, terminal-based applications running on servers, devices, or locally.
39 |
40 |
--------------------------------------------------------------------------------
/qttelnet/doc/html/qttelnet.qch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/qttelnet/doc/html/qttelnet.qch
--------------------------------------------------------------------------------
/qttelnet/doc/images/qt-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/qttelnet/doc/images/qt-logo.png
--------------------------------------------------------------------------------
/qttelnet/doc/index.qdoc:
--------------------------------------------------------------------------------
1 | /*!
2 | \page index.html
3 | \title Telnet
4 |
5 | \section1 Description
6 |
7 | A client for the telnet protocol.
8 |
9 |
10 |
11 | This class provides support for the Telnet protocol.
12 | This is useful for communication with legacy,
13 | terminal-based applications running on servers, devices,
14 | or locally.
15 |
16 |
17 |
18 | \section1 Classes
19 | \list
20 | \i QtTelnet\endlist
21 |
22 |
23 |
24 |
25 |
26 |
27 | \section1 Tested platforms
28 | \list
29 | \i Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005
30 | \i Qt 4.4, 4.5 / Linux / gcc
31 | \i Qt 4.4, 4.5 / MacOS X 10.5 / gcc
32 | \endlist
33 |
34 |
35 |
36 |
37 | */
--------------------------------------------------------------------------------
/qttelnet/examples/examples.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 | SUBDIRS = simpleClient
3 |
4 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include "mainwindowimpl.h"
3 | //
4 | int main(int argc, char ** argv)
5 | {
6 | QApplication app( argc, argv );
7 | MainWindowImpl win;
8 | win.show();
9 | app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
10 | return app.exec();
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/mainwindow.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 598
10 | 388
11 |
12 |
13 |
14 | QTelnetPerso
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | Connect
24 |
25 |
26 |
27 |
28 |
29 |
30 | Dicsonnect
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | 0
42 | 0
43 | 598
44 | 20
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/mainwindowimpl.cpp:
--------------------------------------------------------------------------------
1 | #include "mainwindowimpl.h"
2 | #include
3 | //
4 | MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f) : QMainWindow(parent, f)
5 | {
6 | setupUi(this);
7 |
8 | mtw = new MyTelnetWidget(this);
9 | this->centralWidget()->layout()->addWidget(mtw);
10 | }
11 |
12 | void MainWindowImpl::on_connectButton_clicked()
13 | {
14 | mtw->connectToHost("dxc.k5jz.net");
15 | connect(mtw, SIGNAL(bellReceived()),this,SLOT(alert()));
16 | }
17 |
18 | void MainWindowImpl::on_disconnectButton_clicked()
19 | {
20 | // mtw->disconnectTelnet();
21 | }
22 |
23 | void MainWindowImpl::alert()
24 | {
25 | QApplication::beep();
26 |
27 | }
28 |
29 | //
30 |
31 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/mainwindowimpl.h:
--------------------------------------------------------------------------------
1 | #ifndef MAINWINDOWIMPL_H
2 | #define MAINWINDOWIMPL_H
3 | //
4 | #include
5 | #include "ui_mainwindow.h"
6 | //#include "../libs/src/mytelnetwidget.h"
7 | #include "mytelnetwidget.h"
8 | //
9 | class MainWindowImpl : public QMainWindow, public Ui::MainWindow
10 | {
11 | Q_OBJECT
12 |
13 | public:
14 | MainWindowImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
15 |
16 | private slots:
17 | void on_connectButton_clicked();
18 | void on_disconnectButton_clicked();
19 | void alert();
20 |
21 | private:
22 | MyTelnetWidget *mtw;
23 | };
24 | #endif
25 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/mytelnetwidget.h:
--------------------------------------------------------------------------------
1 | #ifndef _MYTELNETWIDGET_H_
2 | #define _MYTELNETWIDGET_H_
3 |
4 | #include
5 | #include "qttelnet.h"
6 | #include
7 |
8 | class MyTelnetWidget : public QPlainTextEdit
9 | {
10 | Q_OBJECT
11 |
12 | public:
13 | MyTelnetWidget(QWidget *parent = 0);
14 | ~MyTelnetWidget();
15 |
16 | void connectToHost(const QString &host, const quint16 port = 23);
17 | void closeSession();
18 |
19 | protected:
20 | void keyPressEvent(QKeyEvent *e);
21 | void mousePressEvent(QMouseEvent *me);
22 |
23 | signals:
24 | void connected();
25 | void disconnected();
26 | void alert();
27 |
28 | private slots:
29 | void sockConnected();
30 | void sockDisconnected();
31 | void processIncomingData(const QString &text);
32 |
33 | private:
34 | void simulateOverWriteMode(QString text);
35 |
36 | QtTelnet *t;
37 |
38 | };
39 |
40 | #endif // MYTELNETWIDGET_H
41 |
42 |
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/qtelnetperso:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/qttelnet/examples/qtelnetperso/qtelnetperso
--------------------------------------------------------------------------------
/qttelnet/examples/qtelnetperso/qtelnetperso.pro:
--------------------------------------------------------------------------------
1 | ######################################################################
2 | # Automatically generated by qmake (2.01a) Sat Apr 24 08:41:28 2010
3 | ######################################################################
4 |
5 | TEMPLATE = app
6 | include(../../src/qttelnet.pri)
7 |
8 | TARGET = qtelnetperso
9 | DEPENDPATH += .
10 | INCLUDEPATH += .
11 |
12 | # Input
13 | HEADERS += mainwindowimpl.h mytelnetwidget.h
14 | FORMS += mainwindow.ui
15 | SOURCES += main.cpp mainwindowimpl.cpp mytelnetwidget.cpp
16 |
--------------------------------------------------------------------------------
/qttelnet/examples/simpleClient/simpleClient:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/qttelnet/examples/simpleClient/simpleClient
--------------------------------------------------------------------------------
/qttelnet/examples/simpleClient/simpleClient.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = app
2 | DEFINES += QTTELNET_DEBUG
3 | include(../../src/qttelnet.pri)
4 |
5 | SOURCES += main-simpler.cpp
6 |
--------------------------------------------------------------------------------
/qttelnet/qttelnet.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE=subdirs
2 | CONFIG += ordered
3 | include(common.pri)
4 | qttelnet-uselib:SUBDIRS=buildlib
5 | SUBDIRS+=examples
6 |
--------------------------------------------------------------------------------
/qttelnet/src/QtTelnet:
--------------------------------------------------------------------------------
1 | #include "qttelnet.h"
2 |
--------------------------------------------------------------------------------
/qttelnet/src/qttelnet.pri:
--------------------------------------------------------------------------------
1 | include(../common.pri)
2 | INCLUDEPATH += $$PWD
3 | DEPENDPATH += $$PWD
4 |
5 | qttelnet-uselib:!qttelnet-buildlib {
6 | LIBS += -L$$QTTELNET_LIBDIR -l$$QTTELNET_LIBNAME
7 | } else {
8 | SOURCES += $$PWD/qttelnet.cpp
9 | HEADERS += $$PWD/qttelnet.h
10 | win32:LIBS += -lWs2_32
11 | }
12 | QT += network
13 |
14 | win32 {
15 | contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTTELNET_EXPORT
16 | else:qttelnet-uselib:DEFINES += QT_QTTELNET_IMPORT
17 | }
18 |
--------------------------------------------------------------------------------
/share/MASTER.DTA:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/MASTER.DTA
--------------------------------------------------------------------------------
/share/MASTERDX.DTA:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/MASTERDX.DTA
--------------------------------------------------------------------------------
/share/MASTERSS.DTA:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/MASTERSS.DTA
--------------------------------------------------------------------------------
/share/MASUSVE.DTA:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/MASUSVE.DTA
--------------------------------------------------------------------------------
/share/arrl.txt:
--------------------------------------------------------------------------------
1 | #ARRL/RAC sections
2 | AK
3 | AL
4 | AR
5 | AZ
6 | CO
7 | CT
8 | DE
9 | EB
10 | EMA;EM
11 | ENY
12 | EPA;EP
13 | EWA;EW
14 | GA
15 | IA
16 | ID
17 | IL
18 | IN
19 | KS
20 | KY
21 | LA
22 | LAX
23 | MDC;MD;DC
24 | ME
25 | MI
26 | MN
27 | MO
28 | MS
29 | MT
30 | NC
31 | ND
32 | NE
33 | NFL;NF
34 | NH
35 | NLI
36 | NM
37 | NNJ
38 | NNY
39 | NTX
40 | NV
41 | OH
42 | OK
43 | OR
44 | ORG
45 | PAC
46 | PR
47 | RI
48 | SB
49 | SC
50 | SCV
51 | SD
52 | SDG
53 | SF
54 | SFL
55 | SJV
56 | SNJ
57 | STX
58 | SV
59 | TN
60 | UT
61 | VA
62 | VI
63 | VT
64 | WCF
65 | WI
66 | WMA
67 | WNY
68 | WPA
69 | WTX
70 | WV
71 | WWA
72 | WY
73 | NB
74 | NL
75 | NS
76 | PE;PEI
77 | QC
78 | GH;GTA
79 | ONE
80 | ONN
81 | ONS
82 | MB
83 | SK
84 | AB
85 | BC
86 | TER;NT
87 |
--------------------------------------------------------------------------------
/share/arrl10.txt:
--------------------------------------------------------------------------------
1 | #ARRL 10m US states + DC(51)+ VE(14) + XE(32) = 97 total mults
2 | AL
3 | AK
4 | AZ
5 | AR
6 | CA
7 | CO
8 | CT
9 | DC
10 | DE
11 | FL
12 | GA
13 | HI
14 | ID
15 | IL
16 | IN
17 | IA
18 | KS
19 | KY
20 | LA
21 | ME
22 | MD
23 | MA
24 | MI
25 | MN
26 | MS
27 | MO
28 | MT
29 | NE
30 | NV
31 | NH
32 | NJ
33 | NM
34 | NY
35 | NC
36 | ND
37 | OH
38 | OK
39 | OR
40 | PA
41 | RI
42 | SC
43 | SD
44 | TN
45 | TX
46 | UT
47 | VT
48 | VA
49 | WA
50 | WV
51 | WI
52 | WY
53 | NB;VE9
54 | NS;VE1
55 | QC;VE2
56 | PE;PEI;VY2
57 | NL;NF;VO
58 | LB;VO2
59 | ON;VE3
60 | MB;VE4
61 | SK;VE5
62 | AB;VE6
63 | BC;VE7
64 | NT;NWT;VE8
65 | YT;YU;VY1
66 | NU;VY0
67 | AGS
68 | BAC
69 | BCS
70 | CAM
71 | CHI
72 | CHH
73 | COA
74 | COL
75 | DF;DFE
76 | DGO
77 | EMX
78 | GTO
79 | GRO
80 | HGO
81 | JAL
82 | MIC
83 | MOR
84 | NAY
85 | NLE
86 | OAX
87 | PUE
88 | QRO
89 | QUI
90 | SLP
91 | SIN
92 | SON
93 | TAB
94 | TAM
95 | TLX
96 | VER
97 | YUC
98 | ZAC
99 | #/MM mults. Warning: these MUST be specified in this order LAST in
100 | # this file!
101 | R3
102 | R2
103 | R1
104 |
--------------------------------------------------------------------------------
/share/arrldx.txt:
--------------------------------------------------------------------------------
1 | #ARRL DX mult file. US States + DC - AK, HI; VE prov., terr., plus LB (14 total)
2 | AL
3 | AZ
4 | AR
5 | CA
6 | CO
7 | CT
8 | DC
9 | DE
10 | FL
11 | GA
12 | ID
13 | IL
14 | IN
15 | IA
16 | KS
17 | KY
18 | LA
19 | ME
20 | MD
21 | MA
22 | MI
23 | MN
24 | MS
25 | MO
26 | MT
27 | NE
28 | NV
29 | NH
30 | NJ
31 | NM
32 | NY
33 | NC
34 | ND
35 | OH
36 | OK
37 | OR
38 | PA
39 | RI
40 | SC
41 | SD
42 | TN
43 | TX
44 | UT
45 | VT
46 | VA
47 | WA
48 | WV
49 | WI
50 | WY
51 | NB
52 | NS
53 | NL
54 | LB
55 | PE;PEI
56 | QC
57 | ON
58 | MB
59 | SK
60 | AB
61 | BC
62 | NT;NWT
63 | NU
64 | YT;YU
65 |
--------------------------------------------------------------------------------
/share/check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/check.png
--------------------------------------------------------------------------------
/share/contest_list.dat:
--------------------------------------------------------------------------------
1 | ARRL 10, arrl10.cfg
2 | ARRL 160 (DX), arrl160dx.cfg
3 | ARRL 160 (US/VE), arrl160.cfg
4 | ARRL DX (US/VE), arrldx.cfg
5 | ARRL DX (DX), arrldx-dx.cfg
6 | ARRL June VHF, arrl-june-vhf.cfg
7 | California QSO Party (CA), cqp_ca.cfg
8 | California QSO Party (outside CA), cqp.cfg
9 | CQ 160, cq160.cfg
10 | CQ WPX, wpx.cfg
11 | CQ WW, cqww.cfg
12 | CW OPS CWT, cwops.cfg
13 | DXpedition/general logging, dxped.cfg
14 | ARRL Field Day,fd.cfg
15 | ARRL Sweepstakes,ss.cfg
16 | IARU, iaru.cfg
17 | Kansas QSO Party (KS), kqp_ks.cfg
18 | Kansas QSO Party (outside KS), kqp.cfg
19 | Mississippi QSO PARTY (MS), msqp_ms.cfg
20 | Mississippi QSO PARTY (outside MS), msqp.cfg
21 | Pennsylvania QSO Party (PA), paqp_pa.cfg
22 | Pennsylvania QSO Party (outside PA), paqp.cfg
23 | North American QSO Party, naqp.cfg
24 | North American Sprint, nasprint.cfg
25 | NCCC Sprint, ns.cfg
26 | Stew Perry Topband, stew.cfg
27 | WW Digi, wwdigi.cfg
28 |
--------------------------------------------------------------------------------
/share/countries.dat:
--------------------------------------------------------------------------------
1 | 1A 1S 3A 3B6 3B9 3C 3C0 3D2/c 3D2/r 3DA 3V 3W 3X 3Y/b 3Y/p 4O 4U1I 4U1U 4U1V 4W 5A 5H 5N 5R 5T 5U 5V 5W 5X 5Z 6W 7O 7Q 8Q 8R 9G 9J 9L 9N 9Q 9U 9X A2 A3 A4 A5 A6 A7 A9 AP BS7 BV9P C2 C3 C5 C9 CE0X CE0Y CE0Z CE9 CY0 CY9 D2 D4 D6 E3 E4 E5/n E5/s E7 EP ET EX EY EZ FH FK/c FO/a FO/c FO/m FT/g FT/j FT/t FT/w FT/x FT/z FW GM/s H4 H40 HK0/a HK0/m HM IT9 J2 J5 JD/m JD/o JX JY JW/b KH1 KH3 KH4 KH5 KH8 KH9 KH5K KH7K KH8/s KP1 KP5 P2 P5 PY0S PY0F PY0T R1FJ R1MV S0 S2 S7 S9 ST SU SV/a T2 T30 T31 T32 T33 T5 T8 TA1 TI9 TJ TL TN TR TT TU TY TZ V2 V8 V6 V5 V7 VK0H VK0M VK9C VK9L VK9M VK9N VK9W VK9X VP6 VP6/d VP8/g VP8/h VP8/o VP8/s VU4 VU7 XT XU XW XX9 XZ YK YV0 Z2 Z8 ZD7 ZD8 ZD9 ZK2 ZK3 ZL7 ZL8 ZL9 ZS8
2 |
--------------------------------------------------------------------------------
/share/cq160.txt:
--------------------------------------------------------------------------------
1 | #CQ 160m mult file
2 | AL
3 | AZ
4 | AR
5 | CA
6 | CO
7 | CT
8 | DC
9 | DE
10 | FL
11 | GA
12 | ID
13 | IL
14 | IN
15 | IA
16 | KS
17 | KY
18 | LA
19 | ME
20 | MD
21 | MA
22 | MI
23 | MN
24 | MS
25 | MO
26 | MT
27 | NE
28 | NV
29 | NH
30 | NJ
31 | NM
32 | NY
33 | NC
34 | ND
35 | OH
36 | OK
37 | OR
38 | PA
39 | RI
40 | SC
41 | SD
42 | TN
43 | TX
44 | UT
45 | VT
46 | VA
47 | WA
48 | WV
49 | WI
50 | WY
51 | NB;VE9
52 | NS;VE1
53 | PEI;PE;VY2
54 | NF;NL;VO1
55 | LB;VO2
56 | QC;VE2
57 | ON;VE3
58 | MB;VE4
59 | SK;VE5
60 | AB;VE6
61 | BC;VE7
62 | NWT;NT;VE8
63 | YT;YUK;YU;VY1
64 | NU;VY0
65 |
--------------------------------------------------------------------------------
/share/cq_zone_latlong.dat:
--------------------------------------------------------------------------------
1 | #latitude and longitude for CQ zones for heading and sunrise/set
2 | # determination. This is used for prefixes that do not match the
3 | # standard CQ zone for that country.
4 | #
5 | # fields should be separated by spaces; all zones must be listed in
6 | # order
7 | #
8 | 1 61.227957 -149.780275
9 | 2 55.002826 -68.034669
10 | 3 41.442726 -123.142091
11 | 4 38.23818 -92.512208
12 | 5 40.513799 -73.930666
13 | 6 25.482951 -104.604494
14 | 7 13.496473 -86.147463
15 | 8 19.228177 -73.491213
16 | 9 6.751896 -64.174806
17 | 10 -9.275622 -75.776369
18 | 11 -11.264612 -50.903322
19 | 12 -34.885931 -71.64551
20 | 13 -35.029996 -58.637697
21 | 14 53.852527 6.298825
22 | 15 51.890054 20.024412
23 | 16 56.316537 38.833006
24 | 17 61.015725 69.931637
25 | 18 66.018018 97.705075
26 | 19 65.219894 144.111325
27 | 20 39.368279 34.423825
28 | 21 28.767659 52.529293
29 | 22 20.96144 78.369137
30 | 23 41.376809 102.099606
31 | 24 30.600094 112.294918
32 | 25 35.746512 139.716793
33 | 26 14.774883 100.341793
34 | 27 13.410994 129.521481
35 | 28 -2.284551 115.458981
36 | 29 -29.61167 115.649412
37 | 30 -30.751278 150.629881
38 | 31 20.303418 -156.650394
39 | 32 -37.439974 177.509762
40 | 33 31.503629 -7.236332
41 | 34 23.563987 25.107418
42 | 35 10.141932 3.134762
43 | 36 -3.162456 19.482418
44 | 37 -0.35156 38.642575
45 | 38 -33.431441 21.767575
46 | 39 -21.616579 54.462887
47 | 40 69.287257 -40.883791
48 |
--------------------------------------------------------------------------------
/share/cqp_ca.txt:
--------------------------------------------------------------------------------
1 | #California QSO party. US/VE Mults for CA stations
2 | CA
3 | AB
4 | AK
5 | AL
6 | AR
7 | AZ
8 | BC
9 | CO
10 | CT
11 | DE
12 | FL
13 | GA
14 | HI
15 | IA
16 | ID
17 | IL
18 | IN
19 | KS
20 | KY
21 | LA
22 | MA
23 | MB
24 | MD;DC;MDC
25 | ME
26 | MI
27 | MN
28 | MO
29 | MAR;MR;NB;NL;NS;PE;PEI
30 | MS
31 | MT
32 | NC
33 | ND
34 | NE
35 | NH
36 | NJ
37 | NM
38 | NT;NU;YU
39 | NV
40 | NY
41 | OH
42 | OK
43 | ON
44 | OR
45 | PA
46 | QC
47 | RI
48 | SC
49 | SD
50 | SK
51 | TN
52 | TX
53 | UT
54 | VA
55 | VT
56 | WA
57 | WI
58 | WV
59 | WY
60 |
--------------------------------------------------------------------------------
/share/cqp_county.txt:
--------------------------------------------------------------------------------
1 | #California QSO party. CA counties
2 | ALAM;ALAMEDA
3 | ALPI;ALPINE
4 | AMAD;AMADOR
5 | BUTT;BUTTE
6 | CALA;CALAVERAS
7 | CCOS;CONTRA COSTA
8 | COLU;COLUSA
9 | DELN;DEL NORTE
10 | ELDO;EL DORADO
11 | FRES;FRESNO
12 | GLEN;GLENN
13 | HUMB;HUMBOLDT
14 | IMPE;IMPERIAL
15 | INYO;INYO
16 | KERN;KERN
17 | KING;KINGS
18 | LAKE;LAKE
19 | LANG;LOS ANGELES
20 | LASS;LASSEN
21 | MADE;MADERA
22 | MARN;MARIN
23 | MARP;MARIPOSA
24 | MEND;MENDOCINO
25 | MERC;MERCED
26 | MODO;MODOC
27 | MONO;MONO
28 | MONT;MONTEREY
29 | NAPA;NAPA
30 | NEVA;NEVADA
31 | ORAN;ORANGE
32 | PLAC;PLACER
33 | PLUM;PLUMAS
34 | RIVE;RIVERSIDE
35 | SACR;SACRAMENTO
36 | SBAR;SANTA BARBARA
37 | SBEN;SAN BENITO
38 | SBER;SAN BERNARDINO
39 | SCLA;SANTA CLARA
40 | SCRU;SANTA CRUZ
41 | SDIE;SAN DIEGO
42 | SFRA;SAN FRANCISCO
43 | SHAS;SHASTA
44 | SIER;SIERRA
45 | SISK;SISKIYOU
46 | SJOA;SAN JOAQUIN
47 | SLUI;SAN LUIS OBISPO
48 | SMAT;SAN MATEO
49 | SOLA;SOLANO
50 | SONO;SONOMA
51 | STAN;STANISLAUS
52 | SUTT;SUTTER
53 | TEHA;TEHAMA
54 | TRIN;TRINITY
55 | TULA;TULARE
56 | TUOL;TUOLUMNE
57 | VENT;VENTURA
58 | YOLO;YOLO
59 | YUBA;YUBA
60 |
--------------------------------------------------------------------------------
/share/exclude_iaru.txt:
--------------------------------------------------------------------------------
1 | AARA ARA URA ABARS ARAB BARL BARC BARS BVIRL BDARA ARBF ARTJ ARAI ARAC ARAD DARCI RCD GRC EARA CARS FRA RSM CORA AGRA RSG GARS GARC CRAG ARGUI GARA RCH IRA ORARI IARS JARA RJRAS KARS RAL LARS LRAA ARM CRAM MARL MARS MRSF ARRAM LREM NARL ARANC NARS ROARS PARS LPRA PNGARS PIARA QARS ARAS SLARS SIRS RSSL RSS VRAS SSTARS TARC ASTRA LRT UARS EARS VARS VARC RSZ ZARS
2 |
--------------------------------------------------------------------------------
/share/help/afedri-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/afedri-setup.png
--------------------------------------------------------------------------------
/share/help/bandmap-controls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/bandmap-controls.png
--------------------------------------------------------------------------------
/share/help/bandscope_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/bandscope_dialog.png
--------------------------------------------------------------------------------
/share/help/contest_options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/contest_options.png
--------------------------------------------------------------------------------
/share/help/cw_messages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/cw_messages.png
--------------------------------------------------------------------------------
/share/help/cwdaemon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/cwdaemon.png
--------------------------------------------------------------------------------
/share/help/cwdevices.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/cwdevices.png
--------------------------------------------------------------------------------
/share/help/network-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/network-setup.png
--------------------------------------------------------------------------------
/share/help/new_contest_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/new_contest_dialog.png
--------------------------------------------------------------------------------
/share/help/radio_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/radio_dialog.png
--------------------------------------------------------------------------------
/share/help/settings_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/settings_dialog.png
--------------------------------------------------------------------------------
/share/help/so2r_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/so2r_dialog.png
--------------------------------------------------------------------------------
/share/help/so2sdr-bandmap-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/so2sdr-bandmap-setup.png
--------------------------------------------------------------------------------
/share/help/soundcard-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/soundcard-setup.png
--------------------------------------------------------------------------------
/share/help/station_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/station_dialog.png
--------------------------------------------------------------------------------
/share/help/voice_messages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/help/voice_messages.png
--------------------------------------------------------------------------------
/share/iaru.txt:
--------------------------------------------------------------------------------
1 | #IARU member societies (HQ stations)
2 | #
3 | # Note: some IARU societies have the same abbreviation
4 | # -not sure how this is handled, many rare ones have never been
5 | # activated in IARU contest
6 | #
7 | aara
8 | aarc
9 | aars
10 | abars
11 | ac
12 | afvl
13 | agra
14 | ara
15 | arab
16 | arabh
17 | arac
18 | arad
19 | arai
20 | aranc
21 | aras
22 | arat
23 | arbf
24 | arcot
25 | ari
26 | arm
27 | arram
28 | arrl
29 | arrsm
30 | argui
31 | arsb
32 | arsi
33 | arsk
34 | artj
35 | astra
36 | ba
37 | barc
38 | barl
39 | bars
40 | bdara
41 | bfra
42 | bfrr
43 | bvirl
44 | cars
45 | cora
46 | crac
47 | crag
48 | cram
49 | cras
50 | crc;crk
51 | cren
52 | crsa
53 | ctarl
54 | darc
55 | darci
56 | eara
57 | ears
58 | edr
59 | erau
60 | erasd
61 | fara
62 | fmre
63 | fra
64 | frc
65 | frr
66 | frra
67 | frs
68 | gara
69 | garc
70 | gars
71 | grc
72 | harts
73 | hrs
74 | iarc
75 | iars
76 | iaru
77 | ira
78 | irts
79 | jara
80 | jarl
81 | karl
82 | kars
83 | kffr
84 | labre
85 | lars
86 | lcra
87 | lpra
88 | lraa
89 | lral
90 | lrem
91 | lrmd
92 | lrt
93 | marp
94 | mars
95 | marts
96 | mrasz
97 | mrsf
98 | narg
99 | narl
100 | nars
101 | nrrl
102 | nzart
103 | orari
104 | ovsv;oevsv
105 | para
106 | pars
107 | piara
108 | pngars
109 | pzk
110 | qars
111 | r1
112 | r2
113 | r3
114 | raag
115 | rac
116 | ral
117 | rast
118 | rca
119 | rcb
120 | rcd
121 | rcch
122 | rccr
123 | rch
124 | rcp
125 | rcu
126 | rcv
127 | ref
128 | rep
129 | rjras
130 | rl
131 | roars
132 | rsb
133 | rsgb
134 | rsm
135 | rss
136 | rssl
137 | rstg
138 | rsz
139 | sara
140 | sarc
141 | sarl
142 | sarts
143 | shrak
144 | sirs
145 | slars
146 | sral
147 | srr
148 | srs
149 | ssa
150 | sstars
151 | svgrs
152 | szr
153 | tacars
154 | tarc
155 | tarl
156 | trac
157 | ttars
158 | uarl
159 | uba
160 | ura
161 | ure
162 | uska
163 | varc
164 | vars
165 | vras
166 | veron
167 | verona
168 | vrona
169 | wia
170 | zars
171 | zrs
172 |
--------------------------------------------------------------------------------
/share/icon24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/icon24x24.png
--------------------------------------------------------------------------------
/share/icon48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/icon48x48.png
--------------------------------------------------------------------------------
/share/kqp_county.txt:
--------------------------------------------------------------------------------
1 | #Multipliers for Kansas qso party, KS counties
2 | # these are mults for stations outside KS, but all count
3 | # for the "KS" state mult for stations within KS.
4 | ALL;ALLEN
5 | AND;ANDERSON
6 | ATC;ATCHISON
7 | BAR;BARBER
8 | BRT;BARTON
9 | BOU;BOURBON
10 | BRO;BROWN
11 | BUT;BUTLER
12 | CHS;CHASE
13 | CHT;CHAUTAUQUA
14 | CHE;CHEROKEE
15 | CHY;CHEYENNE
16 | CLK;CLARK
17 | CLY;CLAY
18 | CLO;CLOUD
19 | COF;COFFEY
20 | COM;COMANCHE
21 | COW;COWLEY
22 | CRA;CRAWFORD
23 | DEC;DECATUR
24 | DIC;DICKINSON
25 | DON;DONIPHAN
26 | DOU;DOUGLAS
27 | EDW;EDWARDS
28 | ELK;ELK
29 | ELL;ELLIS
30 | ELS;ELLSWORTH
31 | FIN;FINNEY
32 | FOR;FORD
33 | FRA;FRANKLIN
34 | GEA;GEARY
35 | GOV;GOVE
36 | GRM;GRAHAM
37 | GRT;GRANT
38 | GRY;GRAY
39 | GLY;GREELEY
40 | GRE;GREENWOOD
41 | HAM;HAMILTON
42 | HPR;HARPER
43 | HVY;HARVEY
44 | HAS;HASKELL
45 | HOG;HODGEMAN
46 | JAC;JACKSON
47 | JEF;JEFFERSON
48 | JEW;JEWELL
49 | JOH;JOHNSON
50 | KEA;KEARNY
51 | KIN;KINGMAN
52 | KIO;KIOWA
53 | LAB;LABETTE
54 | LAN;LANE
55 | LEA;LEAVENWORTH
56 | LCN;LINCOLN
57 | LIN;LINN
58 | LOG;LOGAN
59 | LYO;LYON
60 | MRN;MARION
61 | MSH;MARSHALL
62 | MCP;MCPHERSON
63 | MEA;MEADE
64 | MIA;MIAMI
65 | MIT;MITCHELL
66 | MGY;MONTGOMERY
67 | MOR;MORRIS
68 | MTN;MORTON
69 | NEM;NEMAHA
70 | NEO;NEOSHO
71 | NES;NESS
72 | NOR;NORTON
73 | OSA;OSAGE
74 | OSB;OSBORNE
75 | OTT;OTTAWA
76 | PAW;PAWNEE
77 | PHI;PHILLIPS
78 | POT;POTTAWATOMIE
79 | PRA;PRATT
80 | RAW;RAWLINS
81 | REN;RENO
82 | REP;REPUBLIC
83 | RIC;RICE
84 | RIL;RILEY
85 | ROO;ROOKS
86 | RUS;RUSH
87 | RSL;RUSSELL
88 | SAL;SALINE
89 | SCO;SCOTT
90 | SED;SEDGWICK
91 | SEW;SEWARD
92 | SHA;SHAWNEE
93 | SHE;SHERIDAN
94 | SMN;SHERMAN
95 | SMI;SMITH
96 | STA;STAFFORD
97 | STN;STANTON
98 | STE;STEVENS
99 | SUM;SUMNER
100 | THO;THOMAS
101 | TRE;TREGO
102 | WAB;WABAUNSEE
103 | WAL;WALLACE
104 | WAS;WASHINGTON
105 | WIC;WICHITA
106 | WIL;WILSON
107 | WOO;WOODSON
108 | WYA;WYANDOTTE
109 |
--------------------------------------------------------------------------------
/share/kqp_ks.txt:
--------------------------------------------------------------------------------
1 | #Multipliers for Kansas qso party, KS stations
2 | KS
3 | AB
4 | AK
5 | AL
6 | AR
7 | AZ
8 | BC
9 | CA
10 | CO
11 | CT
12 | DE
13 | DX
14 | FL
15 | GA
16 | HI
17 | IA
18 | ID
19 | IL
20 | IN
21 | KY
22 | LA
23 | MA
24 | MB
25 | MD;DC;MDC
26 | ME
27 | MI
28 | MN
29 | MO
30 | MS
31 | MT
32 | NB
33 | NC
34 | ND
35 | NE
36 | NH
37 | NJ
38 | NL
39 | NM
40 | NS
41 | NT
42 | NU
43 | NV
44 | NY
45 | OH
46 | OK
47 | ON
48 | OR
49 | PA
50 | PE;PEI
51 | QC
52 | RI
53 | SC
54 | SD
55 | SK
56 | TN
57 | TX
58 | UT
59 | VA
60 | VT
61 | WA
62 | WI
63 | WV
64 | WY
65 | YT;YU
66 |
--------------------------------------------------------------------------------
/share/msqp.txt:
--------------------------------------------------------------------------------
1 | #Multipliers for MS QSO party, stations outside of Mississippi
2 | ADA;ADAMS
3 | ALC;ALCORN
4 | AMI;AMITE
5 | ATT;ATTALA
6 | BEN;BENTON
7 | BOL;BOLIVAR
8 | CHI;CHICKASAW
9 | CHO;CHOCTAW
10 | CAL;CALHOUN
11 | CLB;CLAIBORNE
12 | CLA;CLAY
13 | CLK;CLARKE
14 | COA;COAHOMA
15 | COP;COPIAH
16 | COV;COVINGTON
17 | CAR;CARROLL
18 | DES;DESOTO
19 | FOR;FORREST
20 | FRA;FRANKLIN
21 | GEO;GEORGE
22 | GRN;GREENE
23 | GRE;GRENADA
24 | HAN;HANCOCK
25 | HAR;HARRISON
26 | HIN;HINDS
27 | HOL;HOLMES
28 | HUM;HUMPHREYS
29 | ISS;ISSAQUENA
30 | ITA;ITAWAMBA
31 | JAC;JACKSON
32 | JAS;JASPER
33 | JDV;JEFFERSON DAVIS
34 | JEF;JEFFERSON
35 | JON;JONES
36 | KEM;KEMPER
37 | LAF;LAFAYETTE
38 | LAM;LAMAR
39 | LAU;LAUDERDALE
40 | LAW;LAWRENCE
41 | LEA;LEAKE
42 | LEE;LEE
43 | LEF;LEFLORE
44 | LIN;LINCOLN
45 | LOW;LOWNDES
46 | MRN;MARION
47 | MAD;MADISON
48 | MGY;MONTGOMERY
49 | MON;MONROE
50 | MAR;MARSHALL
51 | NES;NESHOBA
52 | NEW;NEWTON
53 | NOX;NOXUBEE
54 | OKT;OKTIBBEHA
55 | PAN;PANOLA
56 | PER;PERRY
57 | PIK;PIKE
58 | PEA;PEARL RIVER
59 | PON;PONTOTOC
60 | PRE;PRENTISS
61 | QUI;QUITMAN
62 | RAN;RANKIN
63 | SCO;SCOTT
64 | SHA;SHARKEY
65 | SIM;SIMPSON
66 | SMI;SMITH
67 | STO;STONE
68 | SUN;SUNFLOWER
69 | TAL;TALLAHATCHIE
70 | TAT;TATE
71 | TIP;TIPPAH
72 | TIS;TISHOMINGO
73 | TUN;TUNICA
74 | UNI;UNION
75 | WAL;WALTHALL
76 | WAS;WASHINGTON
77 | WAY;WAYNE
78 | WEB;WEBSTER
79 | WIN;WINSTON
80 | WIL;WILKINSON
81 | WAR;WARREN
82 | YAL;YALOBUSHA
83 | YAZ;YAZOO
84 |
--------------------------------------------------------------------------------
/share/msqp_ms.txt:
--------------------------------------------------------------------------------
1 | #Multipliers for MS QSO party, stations in Mississippi
2 | # this includes
3 | # MS counties
4 | # US states, VE provinces
5 | ADA;ADAMS
6 | ALC;ALCORN
7 | AMI;AMITE
8 | ATT;ATTALA
9 | BEN;BENTON
10 | BOL;BOLIVAR
11 | CHI;CHICKASAW
12 | CHO;CHOCTAW
13 | CAL;CALHOUN
14 | CLB;CLAIBORNE
15 | CLA;CLAY
16 | CLK;CLARKE
17 | COA;COAHOMA
18 | COP;COPIAH
19 | COV;COVINGTON
20 | CAR;CARROLL
21 | DES;DESOTO
22 | FOR;FORREST
23 | FRA;FRANKLIN
24 | GEO;GEORGE
25 | GRN;GREENE
26 | GRE;GRENADA
27 | HAN;HANCOCK
28 | HAR;HARRISON
29 | HIN;HINDS
30 | HOL;HOLMES
31 | HUM;HUMPHREYS
32 | ISS;ISSAQUENA
33 | ITA;ITAWAMBA
34 | JAC;JACKSON
35 | JAS;JASPER
36 | JDV;JEFFERSON DAVIS
37 | JEF;JEFFERSON
38 | JON;JONES
39 | KEM;KEMPER
40 | LAF;LAFAYETTE
41 | LAM;LAMAR
42 | LAU;LAUDERDALE
43 | LAW;LAWRENCE
44 | LEA;LEAKE
45 | LEE;LEE
46 | LEF;LEFLORE
47 | LIN;LINCOLN
48 | LOW;LOWNDES
49 | MRN;MARION
50 | MAD;MADISON
51 | MGY;MONTGOMERY
52 | MON;MONROE
53 | MAR;MARSHALL
54 | NES;NESHOBA
55 | NEW;NEWTON
56 | NOX;NOXUBEE
57 | OKT;OKTIBBEHA
58 | PAN;PANOLA
59 | PER;PERRY
60 | PIK;PIKE
61 | PEA;PEARL RIVER
62 | PON;PONTOTOC
63 | PRE;PRENTISS
64 | QUI;QUITMAN
65 | RAN;RANKIN
66 | SCO;SCOTT
67 | SHA;SHARKEY
68 | SIM;SIMPSON
69 | SMI;SMITH
70 | STO;STONE
71 | SUN;SUNFLOWER
72 | TAL;TALLAHATCHIE
73 | TAT;TATE
74 | TIP;TIPPAH
75 | TIS;TISHOMINGO
76 | TUN;TUNICA
77 | UNI;UNION
78 | WAL;WALTHALL
79 | WAS;WASHINGTON
80 | WAY;WAYNE
81 | WEB;WEBSTER
82 | WIN;WINSTON
83 | WIL;WILKINSON
84 | WAR;WARREN
85 | YAL;YALOBUSHA
86 | YAZ;YAZOO
87 | AL
88 | AK
89 | AZ
90 | AR
91 | CA
92 | CO
93 | CT
94 | DE
95 | FL
96 | GA
97 | HI
98 | ID
99 | IL
100 | IN
101 | IA
102 | KS
103 | KY
104 | LA
105 | ME
106 | MD
107 | MA
108 | MI
109 | MN
110 | MO
111 | MT
112 | NE
113 | NV
114 | NH
115 | NJ
116 | NM
117 | NY
118 | NC
119 | ND
120 | OH
121 | OK
122 | OR
123 | PA
124 | RI
125 | SC
126 | SD
127 | TN
128 | TX
129 | UT
130 | VT
131 | VA
132 | WA
133 | WV
134 | WI
135 | WY
136 | NB;VE9
137 | NS;VE1
138 | PEI;VY2
139 | NL;VO1;VO2
140 | QC;VE2
141 | ON;VE3
142 | MB;VE4
143 | SK;VE5
144 | AB;VE6
145 | BC;VE7
146 | NWT;VE8
147 | YU;VY1
148 | NU;VY0
149 |
--------------------------------------------------------------------------------
/share/naqp.txt:
--------------------------------------------------------------------------------
1 | #NAQP mult file
2 | AL
3 | AK
4 | AZ
5 | AR
6 | CA
7 | CO
8 | CT
9 | DC
10 | DE
11 | FL
12 | GA
13 | HI
14 | ID
15 | IL
16 | IN
17 | IA
18 | KS
19 | KY
20 | LA
21 | ME
22 | MD
23 | MA
24 | MI
25 | MN
26 | MS
27 | MO
28 | MT
29 | NE
30 | NV
31 | NH
32 | NJ
33 | NM
34 | NY
35 | NC
36 | ND
37 | OH
38 | OK
39 | OR
40 | PA
41 | RI
42 | SC
43 | SD
44 | TN
45 | TX
46 | UT
47 | VT
48 | VA
49 | WA
50 | WV
51 | WI
52 | WY
53 | NB;VE9
54 | NS;VE1
55 | PE;PEI;VY2
56 | NL;VO1;VO2
57 | QC;VE2
58 | ON;VE3
59 | MB;VE4
60 | SK;VE5
61 | AB;VE6
62 | BC;VE7
63 | NT;NWT;VE8
64 | YT;YU;VY1
65 | NU;VY0
66 |
--------------------------------------------------------------------------------
/share/ns.txt:
--------------------------------------------------------------------------------
1 | #NS mult file
2 | AL
3 | AK
4 | AZ
5 | AR
6 | CA
7 | CO
8 | CT
9 | DC
10 | DE
11 | FL
12 | GA
13 | HI
14 | ID
15 | IL
16 | IN
17 | IA
18 | KS
19 | KY
20 | LA
21 | ME
22 | MD
23 | MA
24 | MI
25 | MN
26 | MS
27 | MO
28 | MT
29 | NE
30 | NV
31 | NH
32 | NJ
33 | NM
34 | NY
35 | NC
36 | ND
37 | OH
38 | OK
39 | OR
40 | PA
41 | RI
42 | SC
43 | SD
44 | TN
45 | TX
46 | UT
47 | VT
48 | VA
49 | WA
50 | WV
51 | WI
52 | WY
53 | NB;VE9
54 | NS;VE1
55 | PEI;VY2
56 | NL;VO1;VO2
57 | QC;VE2
58 | ON;VE3
59 | MB;VE4
60 | SK;VE5
61 | AB;VE6
62 | BC;VE7
63 | NWT;VE8
64 | YU;VY1
65 | NU;VY0
66 |
--------------------------------------------------------------------------------
/share/paqp_county.txt:
--------------------------------------------------------------------------------
1 | #Pennsylvania QSO party. PA counties
2 | ADA;Adams
3 | ALL;Allegheny
4 | ARM;Armstrong
5 | BEA;Beaver
6 | BED;Bedford
7 | BER;Berks
8 | BLA;Blair
9 | BRA;Bradford
10 | BUT;Butler
11 | BUX;Bucks
12 | CAR;Carbon
13 | CEN;Centre
14 | CHE;Chester
15 | CLA;Clarion
16 | CLE;Clearfield
17 | CLI;Clinton
18 | CMB;Cambria
19 | COL;Columbia
20 | CRA;Crawford
21 | CRN;Cameron
22 | CUM;Cumberland
23 | DAU;Dauphin
24 | DCO;Delaware
25 | ELK;Elk
26 | ERI;Erie
27 | Fay;Fayette
28 | FOR;Forest
29 | FRA;Franklin
30 | FUL;Fulton
31 | GRE;Greene
32 | HUN;Huntingdon
33 | INN;Indiana
34 | JEF;Jefferson
35 | JUN;Juniata
36 | LAC;Lackawanna
37 | LAN;Lancaster
38 | LAW;Lawrence
39 | LEB;Lebanon
40 | LEH;Lehigh
41 | LUZ;Luzerne
42 | LYC;Lycoming
43 | MCK;McKean
44 | MER;Mercer
45 | MGY;Montgomery
46 | MIF;Mifflin
47 | MOE;Monroe
48 | MTR;Montour
49 | NHA;Northhampton
50 | NUM;Northumberland
51 | PER;Perry
52 | PHI;Philadelphia
53 | PIK;Pike
54 | POT;Potter
55 | SCH;Schuylkill
56 | SNY;Snyder
57 | SOM;Somerset
58 | SUL;Sullivan
59 | SUS;Susquehanna
60 | TIO;Tioga
61 | UNI;Union
62 | VEN;Venango
63 | WAR;Warren
64 | WAS;Washington
65 | WAY;Wayne
66 | WES;Westmoreland
67 | WYO;Wyoming
68 | YOR;York
69 |
--------------------------------------------------------------------------------
/share/paqp_pa.txt:
--------------------------------------------------------------------------------
1 | #ARRL/RAC sections
2 | EPA
3 | WPA
4 | AK
5 | AL
6 | AR
7 | AZ
8 | CO
9 | CT
10 | DE
11 | EB
12 | EMA;EM
13 | ENY
14 | EWA;EW
15 | GA
16 | IA
17 | ID
18 | IL
19 | IN
20 | KS
21 | KY
22 | LA
23 | LAX
24 | MDC;MD;DC
25 | ME
26 | MI
27 | MN
28 | MO
29 | MS
30 | MT
31 | NC
32 | ND
33 | NE
34 | NFL;NF
35 | NH
36 | NLI
37 | NM
38 | NNJ
39 | NNY
40 | NT
41 | NTX
42 | NV
43 | OH
44 | OK
45 | OR
46 | ORG
47 | PAC
48 | PR
49 | QC
50 | RI
51 | SB
52 | SC
53 | SCV
54 | SD
55 | SDG
56 | SF
57 | SFL
58 | SJV
59 | SNJ
60 | STX
61 | SV
62 | TN
63 | UT
64 | VA
65 | VI
66 | VT
67 | WCF
68 | WI
69 | WMA
70 | WNY
71 | WTX
72 | WV
73 | WWA
74 | WY
75 | NS;VE1
76 | QC;VE2
77 | ON;VE3
78 | MB;VE4
79 | SK;VE5
80 | AB;VE6
81 | BC;VE7
82 | NT;VE8
83 | NB;VE9
84 | NL;VO1;VO2
85 | NU;VY0
86 | YT;VY1
87 | PE;VY2
88 |
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/afedri-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/afedri-setup.png
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/bandmap-controls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/bandmap-controls.png
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/network-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/network-setup.png
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/rtl-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/rtl-setup.png
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/so2sdr-bandmap-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/so2sdr-bandmap-setup.png
--------------------------------------------------------------------------------
/share/so2sdr-bandmap-help/soundcard-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/so2sdr-bandmap-help/soundcard-setup.png
--------------------------------------------------------------------------------
/share/sprint.txt:
--------------------------------------------------------------------------------
1 | #Sprint mult file
2 | AK
3 | AL
4 | AZ
5 | AR
6 | CA
7 | CO
8 | CT
9 | DC
10 | DE
11 | FL
12 | GA
13 | HI
14 | ID
15 | IL
16 | IN
17 | IA
18 | KS
19 | KY
20 | LA
21 | ME
22 | MD
23 | MA
24 | MI
25 | MN
26 | MS
27 | MO
28 | MT
29 | NE
30 | NV
31 | NH
32 | NJ
33 | NM
34 | NY
35 | NC
36 | ND
37 | OH
38 | OK
39 | OR
40 | PA
41 | RI
42 | SC
43 | SD
44 | TN
45 | TX
46 | UT
47 | VT
48 | VA
49 | WA
50 | WV
51 | WI
52 | WY
53 | NB;VE9
54 | NS;VE1
55 | PEI;VY2
56 | NL;VO1;VO2
57 | QC;VE2
58 | ON;VE3
59 | MB;VE4
60 | SK;VE5
61 | AB;VE6
62 | BC;VE7
63 | NWT;VE8
64 | YU;VY1
65 | NU;VY0
66 |
--------------------------------------------------------------------------------
/share/x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/share/x.png
--------------------------------------------------------------------------------
/so2sdr-bandmap/afedri.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef AFEDRI_H
20 | #define AFEDRI_H
21 |
22 | #include "network.h"
23 | #include
24 | #include
25 | #include
26 |
27 | #define TARGET_NAME "AFEDRI SDR Network"
28 | #define SERIAL_NUMBER "AN000102"
29 | #define IF_VERSION 0x101
30 | #define BOOT_CODE_VER 0x000
31 | #define APP_FW_VER 0x112
32 | #define HW_VER 0x000
33 | #define PRODUCT_ID 0x03524453L
34 |
35 | #define MAX_UDP_SIZE 1044
36 |
37 | const QString afedriNames[4] = {
38 | QStringLiteral("AFEDRI SDR-Net"), QStringLiteral("SDR-IP"),
39 | QStringLiteral("AFE822x SDR-Net"), QStringLiteral("Unknown")};
40 |
41 | class Afedri : public NetworkSDR {
42 | Q_OBJECT
43 | public:
44 | explicit Afedri(const QString &settingsFile, QObject *parent = nullptr);
45 | ~Afedri();
46 | unsigned int sampleRate() const override;
47 | bool isSlave() const override;
48 |
49 | public slots:
50 | void stop() override;
51 | void initialize() override;
52 | void setRfFreq(double f) override;
53 | void setRfFreqChannel(double f, int c) override;
54 |
55 | private slots:
56 | void readDatagram();
57 | void readTcp();
58 |
59 | private:
60 | void get_clock_freq();
61 | void get_real_sample_rate();
62 | void get_sdr_name();
63 | void set_broadcast_flag(bool);
64 | void set_freq(unsigned long frequency, int channel);
65 | void set_multichannel_mode(int channel);
66 | void set_sample_rate(unsigned long sample_rate);
67 | void stopAfedri();
68 |
69 | unsigned int clockFreq;
70 | unsigned int realSampleRate;
71 | QString name;
72 | };
73 |
74 | #endif // AFEDRI_H
75 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/afedrisetup.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef AFEDRISETUP_H
20 | #define AFEDRISETUP_H
21 |
22 | #include "bandoffsetsetup.h"
23 | #include "defines.h"
24 | #include "ui_afedrisetup.h"
25 | #include
26 | #include
27 |
28 | class AfedriSetup : public QDialog, public Ui::afedriSetup {
29 | Q_OBJECT
30 | public:
31 | explicit AfedriSetup(QSettings &s, QWidget *parent = nullptr);
32 | double offset(int band) const;
33 | bool invert(int band) const;
34 |
35 | signals:
36 | void afedriError(const QString &);
37 |
38 | public slots:
39 | void setFreq(unsigned int f) { clockFreqLabel->setText(QString::number(f)); }
40 | void setActualSampleRate(unsigned int f) {
41 | realSampleRateLabel->setText(QString::number(f));
42 | }
43 |
44 | private slots:
45 | void updateAfedri();
46 | void rejectChanges();
47 |
48 | private:
49 | QSettings &settings;
50 | void updateFromSettings();
51 | BandOffsetSetup *offsetSetup;
52 | };
53 |
54 | #endif // AFEDRISETUP_H
55 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/audioreader_portaudio.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef AUDIOREADER_PORTAUDIO_H
20 | #define AUDIOREADER_PORTAUDIO_H
21 |
22 | #include "sdrdatasource.h"
23 | #include
24 | #include
25 |
26 | /*!
27 | Low-level audio input using Portaudio
28 | */
29 | class AudioReaderPortAudio : public SdrDataSource {
30 | Q_OBJECT
31 |
32 | public:
33 | explicit AudioReaderPortAudio(const QString &settingsFile,
34 | QObject *parent = nullptr);
35 | ~AudioReaderPortAudio();
36 | unsigned int sampleRate() const override;
37 | bool isSlave() const override { return false; }
38 |
39 | protected:
40 | static int callback(const void *input, void *output, unsigned long frameCount,
41 | const PaStreamCallbackTimeInfo *timeInfo,
42 | PaStreamCallbackFlags statusFlags, void *userdata);
43 | public slots:
44 | void stop() override;
45 | void initialize() override;
46 | void setRfFreq(double f) override { Q_UNUSED(f) }
47 | void setRfFreqChannel(double f, int c) override {
48 | Q_UNUSED(f)
49 | Q_UNUSED(c)
50 | }
51 |
52 | private:
53 | PaStreamParameters inputParameters;
54 | PaError err;
55 | PaStream *stream;
56 | unsigned char *buff;
57 | unsigned char *ptr;
58 | unsigned int bpmax;
59 | unsigned int bptr;
60 | unsigned int iptr;
61 | unsigned long periodSize;
62 | int frameSize;
63 |
64 | void emitAudioReady();
65 | bool checkError(PaError err);
66 | void stopAudioreader();
67 | };
68 |
69 | #endif // AUDIOREADER_PORT_AUDIO_H
70 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/bandmap-tcp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef BANDMAPTCP_H
20 | #define BANDMAPTCP_H
21 |
22 | // bandmap TCP commands
23 | #define BANDMAP_CMD_SET_FREQ 0x66
24 | #define BANDMAP_CMD_SET_SDR_FREQ 0x68
25 | #define BANDMAP_CMD_QUIT 0x71
26 | #define BANDMAP_CMD_RX 0x72
27 | #define BANDMAP_CMD_TX 0x74
28 | #define BANDMAP_CMD_TERMINATE 0x0a
29 | #define BANDMAP_CMD_FIND_FREQ 0x67
30 | #define BANDMAP_CMD_SET_LOWER_FREQ 0x6C
31 | #define BANDMAP_CMD_SET_UPPER_FREQ 0x75
32 | #define BANDMAP_CMD_SET_ADD_OFFSET 0x6f
33 | #define BANDMAP_CMD_ADD_CALL 0x61
34 | #define BANDMAP_CMD_DELETE_CALL 0x64
35 | #define BANDMAP_CMD_DELETE_CALL_FREQ 0x65
36 | #define BANDMAP_CMD_SET_INVERT 0x69
37 | #define BANDMAP_CMD_CLEAR 0x78
38 | #define BANDMAP_CMD_QSY_UP 0x55
39 | #define BANDMAP_CMD_QSY_DOWN 0x44
40 | #define BANDMAP_CMD_SET_SDR_FREQ_CHANNEL 0x76
41 |
42 | #endif // BANDMAPTCP_H
43 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/bandmapdisplay.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef BandmapDisplay_H
20 | #define BandmapDisplay_H
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | /*!
27 | Low level BandmapDisplay of spectrum.
28 | */
29 | class BandmapDisplay : public QWidget {
30 | Q_OBJECT
31 |
32 | public:
33 | explicit BandmapDisplay(QWidget *parent = nullptr);
34 | ~BandmapDisplay();
35 | friend class So2sdrBandmap;
36 |
37 | void initialize(QSettings *s);
38 | bool invert() const;
39 | void setInvert(bool t);
40 | void setMark(bool b);
41 | void setScale(int s);
42 | void setVfoPos(int s);
43 | int y1() const { return cornery; }
44 | int y2() const { return (cornery + height()); }
45 |
46 | public slots:
47 | void plotSpectrum(unsigned char *, unsigned char);
48 | void setSampleRate(unsigned int f) { samplerate = f; }
49 |
50 | signals:
51 | void mouseClick();
52 | void displayMouseQSY(int);
53 |
54 | protected:
55 | void paintEvent(QPaintEvent *event);
56 | void resizeEvent(QResizeEvent *event);
57 | void mousePressEvent(QMouseEvent *event);
58 |
59 | private:
60 | int cornerx;
61 | int cornery;
62 | QPixmap pixmap;
63 | bool *cmap;
64 | bool _invert;
65 | bool mark;
66 | bool *markRgb0;
67 | bool *markRgb1;
68 | bool *markRgb2;
69 | int scale;
70 | int vfoPos;
71 | unsigned int samplerate;
72 | unsigned char *dataptr;
73 | QSettings *settings;
74 | };
75 |
76 | #endif
77 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/bandmapentry.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "bandmapentry.h"
20 |
21 | BandmapEntry::BandmapEntry() {
22 | call.clear();
23 | f = 0;
24 | createdTime = 0;
25 | dupe = false;
26 | }
27 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/bandmapentry.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef BANDMAPENTRY_H
20 | #define BANDMAPENTRY_H
21 | #include
22 |
23 | /*! Bandmap entry.
24 |
25 | - freq=frequency in Hz
26 | - y=y pixel position
27 | */
28 | class BandmapEntry {
29 | public:
30 | BandmapEntry();
31 |
32 | bool dupe;
33 | double f;
34 | qint64 createdTime;
35 | QByteArray call;
36 | };
37 |
38 | Q_DECLARE_TYPEINFO(BandmapEntry, Q_MOVABLE_TYPE);
39 |
40 | #endif // BANDMAPENTRY_H
41 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/call.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "call.h"
20 | Call::Call() {
21 | call.clear();
22 | freq = 0;
23 | rgbCall[0] = 0; // call black by default
24 | rgbCall[1] = 0;
25 | rgbCall[2] = 0;
26 | markRgb[0] = false;
27 | markRgb[1] = false;
28 | markRgb[2] = false;
29 | mark = false;
30 | }
31 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/call.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CALL_H
20 | #define CALL_H
21 | #include
22 |
23 | class Call {
24 | public:
25 | Call();
26 |
27 | QByteArray call;
28 | double freq;
29 | unsigned char rgbCall[3];
30 | bool markRgb[3];
31 | bool mark;
32 | };
33 |
34 | #endif // CALL_H
35 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/helpdialog.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "helpdialog.h"
20 | #include "utils.h"
21 | #include
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | HelpDialog::HelpDialog(QString fileName, QWidget *parent) : QDialog(parent) {
29 | setupUi(this);
30 | QCommonStyle style;
31 | connect(pushButton, SIGNAL(clicked()), this, SLOT(accept()));
32 | connect(homeButton, SIGNAL(clicked()), this, SLOT(home()));
33 | homeButton->setIcon(style.standardIcon(QStyle::SP_ArrowUp));
34 | connect(backButton, SIGNAL(clicked()), HelpTextEdit, SLOT(backward()));
35 | backButton->setIcon(style.standardIcon(QStyle::SP_ArrowBack));
36 | connect(forwardButton, SIGNAL(clicked()), HelpTextEdit, SLOT(forward()));
37 | forwardButton->setIcon(style.standardIcon(QStyle::SP_ArrowForward));
38 | HelpTextEdit->setSearchPaths(
39 | QStringList(dataDirectory() + "so2sdr-bandmap-help/"));
40 | QFile file(fileName);
41 | if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
42 | QTextStream ts(&file);
43 | HelpTextEdit->setText(ts.readAll());
44 | }
45 | file.close();
46 | }
47 |
48 | void HelpDialog::home() { HelpTextEdit->scrollToAnchor("top"); }
49 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/helpdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef HELPDIALOG_H
20 | #define HELPDIALOG_H
21 | #include "ui_helpdialog.h"
22 |
23 | /*!
24 | Displays help file
25 | */
26 | class HelpDialog : public QDialog, public Ui::HelpDialog {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit HelpDialog(QString fileName, QWidget *parent = nullptr);
31 |
32 | private slots:
33 | void home();
34 | };
35 | #endif
36 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/icon48x48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/so2sdr-bandmap/icon48x48.ico
--------------------------------------------------------------------------------
/so2sdr-bandmap/iqbalance.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef IQBALANCE_H
20 | #define IQBALANCE_H
21 | #include "ui_iqbalance.h"
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | const int IQ_PLOT_WIDTH = 512;
29 | const int IQ_PLOT_HEIGHT = 120;
30 |
31 | class IQBalance : public QWidget, public Ui::IQBalance {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit IQBalance(QWidget *parent = nullptr);
36 | ~IQBalance();
37 | friend class So2sdrBandmap;
38 |
39 | public slots:
40 | void clearPlots();
41 | void plotGainPoint(int bin, double y);
42 | void plotGainFunc(double, double, double, double);
43 | void plotPhasePoint(int bin, double y);
44 | void plotPhaseFunc(double, double, double, double);
45 | void setGainScale(double, double);
46 | void setPhaseScale(double, double);
47 |
48 | signals:
49 | void closed(bool);
50 | void restart();
51 |
52 | protected:
53 | void closeEvent(QCloseEvent *event);
54 |
55 | private slots:
56 | void restartIQ();
57 |
58 | private:
59 | double gainOffset;
60 | double gainScale;
61 | double phaseOffset;
62 | double phaseScale;
63 | QPixmap gainPixmap;
64 | QPixmap phasePixmap;
65 | };
66 |
67 | #endif
68 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/main.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "defines.h"
20 | #include "so2sdr-bandmap.h"
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | int main(int argc, char *argv[]) {
27 | // check for -s option. This option must be done before QApplication is created
28 | bool scale=false;
29 | for (int i=0;isetAttribute(Qt::WA_DeleteOnClose);
56 |
57 | if (main->so2sdrBandmapOk()) {
58 | return app.exec();
59 | } else {
60 | return -1;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/network.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #ifndef NETWORK_H
21 | #define NETWORK_H
22 | #include "sdrdatasource.h"
23 | #include
24 | #include
25 | #include
26 |
27 | class NetworkSDR : public SdrDataSource {
28 | Q_OBJECT
29 | public:
30 | explicit NetworkSDR(const QString &settingsFile, QObject *parent = nullptr);
31 | ~NetworkSDR();
32 | unsigned int sampleRate() const override;
33 | bool isSlave() const override { return false; }
34 |
35 | public slots:
36 | void stop() override;
37 | void initialize() override;
38 | void setRfFreq(double f) override;
39 | void setRfFreqChannel(double f, int c) override {
40 | Q_UNUSED(f)
41 | Q_UNUSED(c)
42 | }
43 |
44 | private slots:
45 | void readDatagram();
46 | void tcpError(QAbstractSocket::SocketError err);
47 | void readTcp();
48 |
49 | protected:
50 | void send_rx_command(int);
51 | void get_name();
52 | void stopNetwork();
53 |
54 | QTcpSocket tsocket;
55 | QUdpSocket usocket;
56 | unsigned char *buff;
57 | unsigned int bpmax;
58 | unsigned int bptr;
59 | unsigned int iptr;
60 |
61 | private:
62 | void set_sample_rate(unsigned long sample_rate);
63 | };
64 |
65 | #endif
66 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/networksetup.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef NETWORKSETUP_H
20 | #define NETWORKSETUP_H
21 |
22 | #include "bandoffsetsetup.h"
23 | #include "defines.h"
24 | #include "ui_networksetup.h"
25 | #include
26 | #include
27 |
28 | class NetworkSetup : public QDialog, public Ui::networkSetup {
29 | Q_OBJECT
30 | public:
31 | explicit NetworkSetup(QSettings &s, QWidget *parent = nullptr);
32 | ~NetworkSetup();
33 | double offset(int band) const;
34 | bool invert(int band) const;
35 |
36 | signals:
37 | void networkError(const QString &);
38 |
39 | private slots:
40 | void updateNetwork();
41 | void rejectChanges();
42 |
43 | private:
44 | QSettings &settings;
45 | void updateFromSettings();
46 | BandOffsetSetup *offsetSetup;
47 | };
48 |
49 | #endif // NETWORKSETUP_H
50 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/rtl.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #ifndef RTL_H
21 | #define RTL_H
22 | #include "sdrdatasource.h"
23 | #include
24 |
25 | class RtlSDR : public SdrDataSource {
26 | Q_OBJECT
27 |
28 | public:
29 | explicit RtlSDR(const QString &settingsFile, QObject *parent = nullptr);
30 | ~RtlSDR();
31 | unsigned int sampleRate() const override;
32 | bool isSlave() const override { return false; }
33 |
34 | public slots:
35 | void stop() override;
36 | void initialize() override;
37 | void setRfFreq(double f) override;
38 | void setRfFreqChannel(double f, int c) override {
39 | Q_UNUSED(f)
40 | Q_UNUSED(c)
41 | }
42 |
43 | private:
44 | void stopRtl();
45 | void stream();
46 | void streamx16();
47 |
48 | rtlsdr_dev_t *dev;
49 | unsigned char *buff;
50 | unsigned char *rawBuff;
51 | unsigned char *ptr;
52 | unsigned int bpmax;
53 | unsigned int bptr;
54 | unsigned int iptr;
55 | };
56 |
57 | #endif
58 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/rtlsetup.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef RTLSETUP_H
20 | #define RTLSETUP_H
21 |
22 | #include "bandoffsetsetup.h"
23 | #include "defines.h"
24 | #include "ui_rtlsetup.h"
25 | #include
26 | #include
27 |
28 | class RtlSetup : public QDialog, public Ui::rtlSetup {
29 | Q_OBJECT
30 | public:
31 | explicit RtlSetup(QSettings &s, QWidget *parent = nullptr);
32 | ~RtlSetup();
33 | double offset(int band) const;
34 | bool invert(int band) const;
35 |
36 | signals:
37 | void rtlError(const QString &);
38 |
39 | private slots:
40 | void updateRtl();
41 | void rejectChanges();
42 |
43 | private:
44 | QSettings &settings;
45 | void updateFromSettings();
46 | BandOffsetSetup *offsetSetup;
47 | };
48 |
49 | #endif // RTLSETUP_H
50 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/sdr-ip.h:
--------------------------------------------------------------------------------
1 | #ifndef SDRIP_H
2 | #define SDRIP_H
3 |
4 | // SDR-IP and Afedri TCP command definitions
5 | //
6 | // copied from "sdr-split" source v.6, http://www.afedri-sdr.com
7 | // not completely sure if some are Afedri-specific
8 |
9 | #define SET_CONTROL_ITEM 0
10 | #define REQUEST_CONTROL_ITEM 1
11 | #define REQUEST_CONTROL_ITEM_RANGE 2
12 | #define DATA_ITEM_ACK 3
13 | #define DATA_ITEM_0 4
14 | #define DATA_ITEM_1 5
15 | #define DATA_ITEM_2 6
16 | #define DATA_ITEM_3 7
17 | #define CI_TARGET_NAME 0x0001
18 | #define CI_TARGET_SERIAL_NUMBER 0x0002
19 | #define CI_INTERFACE_VERSION 0x0003
20 | #define CI_HW_FW_VERSION 0x0004
21 | #define CI_STATUS_ERROR_CODE 0x0005
22 | #define CI_PRODUCT_ID 0x0009
23 | #define CI_RECEIVER_STATE 0x0018
24 | #define RCV_START 2
25 | #define RCV_STOP 1
26 | #define CI_FREQUENCY 0x0020
27 | #define CI_RF_GAIN 0x0038
28 | #define CI_AF_GAIN 0x0048
29 | #define CI_RF_FILTER_SELECT 0x0044
30 | #define CI_AD_MODES 0x008A
31 | #define CI_INPUT_SYNC_MODES 0x00B4
32 | #define CI_DDC_SAMPLE_RATE 0x00B8
33 | #define CI_SAMPLE_RATE_CALIBRATION 0x00B0
34 | #define CI_CALIBRATION_DATA 0x00D0
35 | #define CI_PULSE_OUTPUT_MODE 0x00B6
36 | #define CI_DA_OUTPUT_MODE 0x012A
37 | #define CI_DATA_PACKET_SIZE 0x00C4
38 | #define CI_UDP_IP_PORT 0x00C5
39 | #define CI_RS232_OPEN 0x0200
40 | #define CI_RS232_CLOSE 0x0201
41 |
42 | #define CI_RF_ATT_0DB 0x00
43 | #define CI_RF_ATT_10DB 0xF6
44 | #define CI_RF_ATT_20DB 0xEC
45 | #define CI_RF_ATT_30DB 0xE2
46 |
47 | #define SDR_IDLE 0x0B
48 | #define SDR_BUSY 0x0B
49 |
50 | #endif // SDRIP_H
51 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/sdrdatasource.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #include "sdrdatasource.h"
21 |
22 | SdrDataSource::SdrDataSource(const QString &settingsFile, QObject *parent)
23 | : QObject(parent), stopFlag(false), running(false), rfFreq(0.0) {
24 | sizes.advance_size = 0;
25 | sizes.chunk_size = 0;
26 | settings = new QSettings(settingsFile, QSettings::IniFormat, this);
27 | }
28 |
29 | SdrDataSource::~SdrDataSource() { delete settings; }
30 |
31 | void SdrDataSource::setSampleSizes(sampleSizes s) { sizes = s; }
32 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/sdrdatasource.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SDRDATASOURCE_H
20 | #define SDRDATASOURCE_H
21 |
22 | #include "defines.h"
23 | #include
24 | #include
25 | #include
26 |
27 | class SdrDataSource : public QObject {
28 | Q_OBJECT
29 | public:
30 | explicit SdrDataSource(const QString &settingsFile, QObject *parent = nullptr);
31 | ~SdrDataSource();
32 | virtual unsigned int sampleRate() const = 0;
33 | void setSampleSizes(sampleSizes s);
34 | bool isRunning() { return running; }
35 | virtual bool isSlave() const = 0;
36 |
37 | signals:
38 | void error(const QString &);
39 | void ready(unsigned char *, unsigned int);
40 | void resetRfFlag();
41 | void stopped();
42 | void realSampleRateSignal(unsigned int);
43 | void clockFreqSignal(unsigned int);
44 |
45 | public slots:
46 | virtual void stop() = 0;
47 | virtual void initialize() = 0;
48 | virtual void setRfFreq(double f) = 0;
49 | virtual void setRfFreqChannel(double f, int c) = 0;
50 |
51 | protected:
52 | sampleSizes sizes;
53 | QSettings *settings;
54 | std::atomic stopFlag;
55 | std::atomic running;
56 | std::atomic rfFreq;
57 | };
58 |
59 | #endif // SDRDATASOURCE_H
60 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/sdrdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SDRDIALOG_H
20 | #define SDRDIALOG_H
21 |
22 | #include "afedrisetup.h"
23 | #include "defines.h"
24 | #include "networksetup.h"
25 | #include "rtlsetup.h"
26 | #include "soundcardsetup.h"
27 | #include "ui_sdrdialog.h"
28 | #include
29 | #include
30 | #include
31 | #include
32 |
33 | class SDRDialog : public QDialog, public Ui::SDRDialog {
34 | Q_OBJECT
35 |
36 | public:
37 | SDRDialog(QSettings &s, QWidget *parent = nullptr);
38 | ~SDRDialog();
39 | double offset(int band) const;
40 | bool invert(int band) const;
41 | int invertSign(int band) const;
42 | SoundCardSetup *soundcard;
43 | AfedriSetup *afedri;
44 | NetworkSetup *network;
45 | RtlSetup *rtl;
46 |
47 | signals:
48 | void setupErrors(const QString &);
49 | void update();
50 | void restartSdr();
51 |
52 | public slots:
53 | void updateSDR();
54 | void rejectChanges();
55 |
56 | private slots:
57 | void launchConfigure();
58 | void setRfAuto(int);
59 |
60 | private:
61 | QSettings &settings;
62 | void updateFromSettings();
63 | };
64 | #endif
65 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/signal.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "signal.h"
20 |
21 | Signal::Signal() {
22 | active = false;
23 | cnt = 0;
24 | n = 0;
25 | f = 0;
26 | fcq = 0;
27 | space = 0;
28 | fsum = 0;
29 | }
30 |
31 | void Signal::clear() {
32 | active = false;
33 | cnt = 0;
34 | f = 0;
35 | fcq = 0;
36 | fsum = 0;
37 | n = 0;
38 | space = 0;
39 | }
40 |
41 | CalibSignal::CalibSignal() {
42 | n = 0;
43 | zsum[0] = 0.;
44 | zsum[1] = 0.;
45 | z[0] = 0.;
46 | z[1] = 0.;
47 | gain = 1.0;
48 | phase = 0.;
49 | }
50 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/signal.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SIGNAL_H
20 | #define SIGNAL_H
21 |
22 | #include
23 |
24 | class Signal {
25 | public:
26 | Signal();
27 |
28 | void clear();
29 | bool active;
30 | int cnt;
31 | double f;
32 | double fcq;
33 | int n;
34 | int space;
35 | double fsum;
36 | };
37 | Q_DECLARE_TYPEINFO(Signal, Q_MOVABLE_TYPE);
38 |
39 | class CalibSignal {
40 | public:
41 | CalibSignal();
42 |
43 | double gain, phase;
44 | double z[2];
45 | double zsum[2];
46 | long long n;
47 | };
48 | Q_DECLARE_TYPEINFO(CalibSignal, Q_MOVABLE_TYPE);
49 |
50 | #endif // SIGNAL_H
51 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/so2sdr-bandmap.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | player_play.svg
4 | player_stop.svg
5 | exit.svg
6 | stock_properties.svg
7 |
8 |
9 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/so2sdr.rc:
--------------------------------------------------------------------------------
1 | IDI_ICON1 ICON DISCARDABLE "icon48x48.ico"
2 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/soundcardsetup.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SOUNDCARDSETUP_H
20 | #define SOUNDCARDSETUP_H
21 |
22 | #include "bandoffsetsetup.h"
23 | #include "defines.h"
24 | #include "ui_soundcard.h"
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 |
32 | class SoundCardSetup : public QDialog, public Ui::SoundCardSetup {
33 | Q_OBJECT
34 | public:
35 | explicit SoundCardSetup(QSettings &s, QWidget *parent = nullptr);
36 | ~SoundCardSetup();
37 | double offset(int band) const;
38 | bool invert(int band) const;
39 |
40 | signals:
41 | void PortAudioError(const QString &);
42 |
43 | private slots:
44 | void updateSoundCard();
45 | void rejectChanges();
46 | void updateDeviceList(int indx);
47 |
48 | private:
49 | QSettings &settings;
50 | int nAPI;
51 | int *nApiDevices;
52 | QIcon iconNOK;
53 | QIcon iconOK;
54 | QList *deviceOK;
55 | QList audioDevices;
56 | QList *nApiDeviceNames;
57 | BandOffsetSetup *offsetSetup;
58 | void updateFromSettings();
59 | };
60 |
61 | #endif // SOUNDCARDSETUP_H
62 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/utils.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "utils.h"
20 | #include
21 | #include
22 | #include
23 |
24 | /*! returns directory where program data is stored
25 | */
26 | QString dataDirectory() {
27 | // INSTALL_DIR is usually /usr/local
28 | return QString(INSTALL_DIR) + QString("/share/so2sdr/");
29 | }
30 |
31 | /*! returns directory where user data (station config, hamlib cache,...) are
32 | * stored
33 | */
34 | QString userDirectory() { return QDir::homePath() + "/.so2sdr"; }
35 |
--------------------------------------------------------------------------------
/so2sdr-bandmap/utils.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef UTILS_H
20 | #define UTILS_H
21 | #include
22 |
23 | QString dataDirectory();
24 | QString userDirectory();
25 |
26 | #endif // UTILS_H
27 |
--------------------------------------------------------------------------------
/so2sdr.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=SO2SDR
3 | Comment=Amateur radio contest logging application
4 | Type=Application
5 | Exec=so2sdr
6 | Categories=Audio;Network;HamRadio;
7 | Terminal=false
8 | Icon=so2sdr
9 |
--------------------------------------------------------------------------------
/so2sdr.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 | SUBDIRS = so2sdr so2sdr-bandmap
3 |
--------------------------------------------------------------------------------
/so2sdr/adifparse.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef ADIFPARSE_H
20 | #define ADIFPARSE_H
21 |
22 | #include "qso.h"
23 | #include
24 | #include
25 |
26 | class ADIFParse : public QObject {
27 | Q_OBJECT
28 | public:
29 | explicit ADIFParse(QObject *parent = nullptr);
30 | bool parse(QByteArray data, Qso *qso);
31 |
32 | signals:
33 |
34 | public slots:
35 |
36 | private:
37 | void parseBit(QByteArray in, QByteArray &key, QByteArray &val);
38 | };
39 |
40 | #endif // ADIFPARSE_H
41 |
--------------------------------------------------------------------------------
/so2sdr/bandmapentry.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "bandmapentry.h"
20 |
21 | BandmapEntry::BandmapEntry() {
22 | call.clear();
23 | f = 0;
24 | createdTime = 0;
25 | dupe = false;
26 | }
27 |
--------------------------------------------------------------------------------
/so2sdr/bandmapentry.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef BANDMAPENTRY_H
20 | #define BANDMAPENTRY_H
21 | #include
22 |
23 | /*! Bandmap entry.
24 |
25 | - freq=frequency in Hz
26 | - y=y pixel position
27 | */
28 | class BandmapEntry {
29 | public:
30 | BandmapEntry();
31 |
32 | bool dupe;
33 | double f;
34 | qint64 createdTime;
35 | QByteArray call;
36 | };
37 |
38 | Q_DECLARE_TYPEINFO(BandmapEntry, Q_MOVABLE_TYPE);
39 |
40 | #endif // BANDMAPENTRY_H
41 |
--------------------------------------------------------------------------------
/so2sdr/cabrillodialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CABRILLODIALOG_H
20 | #define CABRILLODIALOG_H
21 | #include "defines.h"
22 | #include "ui_cabrillo.h"
23 | #include
24 |
25 | class QComboBox;
26 | class QFile;
27 | class QLabel;
28 | class QLineEdit;
29 | class So2sdr;
30 |
31 | /*!
32 | Dialog for entering cabrillo data
33 | */
34 | class CabrilloDialog : public QDialog, public Ui::CabrilloDialog {
35 | Q_OBJECT
36 |
37 | public:
38 | explicit CabrilloDialog(QWidget *parent = nullptr);
39 | void initialize(QSettings *s1, QSettings *s2);
40 | void updateExch();
41 | void writeHeader(QFile *cbrFile, int score);
42 | friend class So2sdr;
43 |
44 | private:
45 | QLineEdit *sent[MAX_EXCH_FIELDS];
46 | QLabel *cabLabel[MAX_CAB_FIELDS];
47 | QComboBox *cabCombo[MAX_CAB_FIELDS];
48 | QSettings *stnSettings;
49 | QSettings *settings;
50 | };
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/so2sdr/centergrid.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | CenterGridForm
4 |
5 |
6 | Qt::ApplicationModal
7 |
8 |
9 |
10 | 0
11 | 0
12 | 200
13 | 74
14 |
15 |
16 |
17 |
18 | 0
19 | 0
20 |
21 |
22 |
23 |
24 | 100
25 | 30
26 |
27 |
28 |
29 |
30 | 200
31 | 74
32 |
33 |
34 |
35 | Center Grid
36 |
37 |
38 |
39 |
40 |
41 |
42 | 0
43 | 0
44 |
45 |
46 |
47 |
48 | 100
49 | 0
50 |
51 |
52 |
53 | Set center grid:
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 0
62 | 0
63 |
64 |
65 |
66 |
67 | 100
68 | 0
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/so2sdr/centergriddialog.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "centergriddialog.h"
20 | #include
21 | #include
22 |
23 | CenterGridDialog::CenterGridDialog(QWidget *parent) : QDialog(parent) {
24 | setupUi(this);
25 | connect(lineEdit, SIGNAL(editingFinished()), this, SLOT(emitgrid()));
26 |
27 | QFont font12("sans", 12);
28 | QFontMetricsF fm12(font12);
29 | label->setFixedHeight(qRound(fm12.height()));
30 | lineEdit->setFixedWidth(qRound(fm12.maxWidth() * 50));
31 | lineEdit->setFixedHeight(qRound(fm12.height()));
32 | adjustSize();
33 | setFixedSize(size());
34 | show();
35 | }
36 |
37 | void CenterGridDialog::setText(QByteArray s) { lineEdit->setText(s); }
38 |
39 | void CenterGridDialog::emitgrid() {
40 | QByteArray text = lineEdit->text().toLatin1();
41 | emit grid(text);
42 | close();
43 | }
44 |
--------------------------------------------------------------------------------
/so2sdr/centergriddialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CENTERGRIDDIALOG_H
20 | #define CENTERGRIDDIALOG_H
21 |
22 | #include "ui_centergrid.h"
23 | #include
24 | #include
25 | #include
26 |
27 | class CenterGridDialog : public QDialog, public Ui::CenterGridForm {
28 | Q_OBJECT
29 | public:
30 | explicit CenterGridDialog(QWidget *parent = nullptr);
31 | void setText(QByteArray s);
32 | signals:
33 | void grid(QByteArray);
34 |
35 | private slots:
36 | void emitgrid();
37 | };
38 |
39 | #endif // CENTERGRIDDIALOG_H
40 |
--------------------------------------------------------------------------------
/so2sdr/contest_arrl10.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_ARRL10_H
20 | #define CONTEST_ARRL10_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class ARRL10 : public Contest {
26 | public:
27 | ARRL10(QSettings &cs, QSettings &ss);
28 | ~ARRL10() override;
29 |
30 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
31 | bool validateExchange(Qso *qso) override;
32 | ContestType contestType() const override { return Arrl10_t; }
33 | void addQso(Qso *qso) override;
34 | QString bandLabel(int i) const override;
35 | bool bandLabelEnable(int i) const override;
36 | int fieldWidth(int col) const override;
37 | bool hasWorked() const override { return true; }
38 | int highlightBand(int b, ModeTypes modeType = CWType) const override;
39 | int nMultsColumn(int col, int ii) const override;
40 | int numberField() const override;
41 | unsigned int rcvFieldShown() const override;
42 | unsigned int sntFieldShown() const override;
43 | int Score() const override;
44 | bool showQsoPtsField() const override { return true; }
45 | int rstField() const override { return 0; }
46 | void workedMults(Qso *qso, unsigned int worked[MMAX]) const override;
47 | void workedQso(ModeTypes m, int band, unsigned int &worked) const override;
48 | };
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/so2sdr/contest_arrl160.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_ARRL160_H
20 | #define CONTEST_ARRL160_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class ARRL160 : public Contest {
26 | public:
27 | ARRL160(bool, QSettings &cs, QSettings &ss);
28 | ~ARRL160() override;
29 |
30 | QString bandLabel(int i) const override;
31 | bool bandLabelEnable(int i) const override;
32 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
33 | bool validateExchange(Qso *qso) override;
34 | ContestType contestType() const override { return Arrl160_t; }
35 | void addQso(Qso *qso) override;
36 | int fieldWidth(int col) const override;
37 | int numberField() const override;
38 | QByteArray prefillExchange(Qso *qso) override;
39 | unsigned int rcvFieldShown() const override;
40 | unsigned int sntFieldShown() const override;
41 | int Score() const override;
42 | bool showQsoPtsField() const override { return true; }
43 | int rstField() const override { return 0; }
44 |
45 | private:
46 | bool usVe;
47 | };
48 |
49 | #endif
50 |
--------------------------------------------------------------------------------
/so2sdr/contest_arrldx.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_ARRLDX_H
20 | #define CONTEST_ARRLDX_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class ARRLDX : public Contest {
26 | public:
27 | ARRLDX(bool usve, QSettings &cs, QSettings &ss);
28 | ~ARRLDX() override;
29 |
30 | QVariant columnName(int c) const override;
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | ContestType contestType() const override { return Arrldx_t; }
34 | void addQso(Qso *qso) override;
35 | int fieldWidth(int col) const override;
36 | int numberField() const override;
37 | QByteArray prefillExchange(Qso *qso) override;
38 | unsigned int rcvFieldShown() const override;
39 | unsigned int sntFieldShown() const override;
40 | bool showQsoPtsField() const override { return true; }
41 | int rstField() const override { return 0; }
42 |
43 | private:
44 | bool usVe;
45 | };
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/so2sdr/contest_cq160.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_CQ160_H
20 | #define CONTEST_CQ160_H
21 |
22 | #include "contest.h"
23 |
24 | class CQ160 : public Contest {
25 | public:
26 | CQ160(QSettings &cs, QSettings &ss);
27 | ~CQ160() override;
28 | QString bandLabel(int i) const override;
29 | bool bandLabelEnable(int i) const override;
30 | void addQso(Qso *qso) override;
31 | ContestType contestType() const override { return Cq160_t; }
32 | QByteArray prefillExchange(Qso *qso) override;
33 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
34 | bool validateExchange(Qso *qso) override;
35 | int fieldWidth(int col) const override;
36 | unsigned int rcvFieldShown() const override;
37 | int Score() const override;
38 | unsigned int sntFieldShown() const override;
39 | int numberField() const override;
40 | bool showQsoPtsField() const override { return true; }
41 | int rstField() const override { return 0; }
42 | };
43 |
44 | #endif // CONTEST_CQ160_H
45 |
--------------------------------------------------------------------------------
/so2sdr/contest_cqp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_CQP_H
20 | #define CONTEST_CQP_H
21 |
22 | #include "contest.h"
23 |
24 | class CQP : public Contest {
25 | public:
26 | CQP(QSettings &cs, QSettings &ss);
27 | ~CQP() override;
28 |
29 | QVariant columnName(int c) const override;
30 | ContestType contestType() const override { return Cqp_t; }
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | int numberField() const override;
36 | unsigned int rcvFieldShown() const override;
37 | unsigned int sntFieldShown() const override;
38 | void setWithinState(bool);
39 | bool showQsoPtsField() const override { return true; }
40 |
41 | private:
42 | bool withinState;
43 | };
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/so2sdr/contest_cqww.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_CQWW_H
20 | #define CONTEST_CQWW_H
21 |
22 | #include "contest.h"
23 |
24 | class CQWW : public Contest {
25 | public:
26 | CQWW(QSettings &cs, QSettings &ss);
27 | ~CQWW() override;
28 |
29 | void addQso(Qso *qso) override;
30 | ContestType contestType() const override { return Cqww_t; }
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | int fieldWidth(int col) const override;
34 | unsigned int rcvFieldShown() const override;
35 | unsigned int sntFieldShown() const override;
36 | int numberField() const override;
37 | bool showQsoPtsField() const override { return true; }
38 | int rstField() const override { return 0; }
39 | };
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_cwops.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_CWOPS_H
20 | #define CONTEST_CWOPS_H
21 |
22 | #include "contest.h"
23 |
24 | class Cwops : public Contest {
25 | public:
26 | Cwops(QSettings &cs, QSettings &ss);
27 | ~Cwops() override;
28 |
29 | void addQso(Qso *qso) override;
30 | ContestType contestType() const override { return Cwops_t; }
31 | int fieldWidth(int col) const override;
32 | int numberField() const override;
33 | void setupContest(QByteArray MultFile[2], const Cty *cty) override;
34 | unsigned int rcvFieldShown() const override;
35 | bool validateExchange(Qso *qso) override;
36 | bool showQsoPtsField() const override { return false; }
37 | };
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/so2sdr/contest_dxped.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_DXPED_H
20 | #define CONTEST_DXPED_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class Dxped : public Contest {
26 | public:
27 | Dxped(QSettings &cs, QSettings &ss);
28 | ~Dxped() override;
29 |
30 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
31 | bool validateExchange(Qso *qso) override;
32 | ContestType contestType() const override { return Dxped_t; }
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | int numberField() const override;
36 | unsigned int rcvFieldShown() const override;
37 | int Score() const override;
38 | QByteArray prefillExchange(Qso *qso) override;
39 | bool showQsoPtsField() const override { return false; }
40 | int rstField() const override { return 0; }
41 | };
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/so2sdr/contest_fd.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_FD_H
20 | #define CONTEST_FD_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class FD : public Contest {
26 | public:
27 | FD(QSettings &cs, QSettings &ss);
28 | ~FD() override;
29 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
30 | bool validateExchange(Qso *qso) override;
31 | QVariant columnName(int c) const override;
32 | ContestType contestType() const override { return Fd_t; }
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | int numberField() const override;
36 | unsigned int rcvFieldShown() const override;
37 | int Score() const override;
38 | bool showQsoPtsField() const override { return true; }
39 | };
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_iaru.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_IARU_H
20 | #define CONTEST_IARU_H
21 |
22 | #include "contest.h"
23 |
24 | class IARU : public Contest {
25 | public:
26 | IARU(QSettings &cs, QSettings &ss);
27 | ~IARU() override;
28 |
29 | void addQso(Qso *qso) override;
30 | ContestType contestType() const override { return Iaru_t; }
31 | int fieldWidth(int col) const override;
32 | int nMultsWorked() const override;
33 | int numberField() const override;
34 | unsigned int rcvFieldShown() const override;
35 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
36 | bool validateExchange(Qso *qso) override;
37 | bool showQsoPtsField() const override { return true; }
38 | int rstField() const override { return 0; }
39 | };
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_junevhf.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_JUNEVHF_H
20 | #define CONTEST_JUNEVHF_H
21 |
22 | #include "contest.h"
23 | #include "defines.h"
24 |
25 | class JuneVHF : public Contest {
26 | public:
27 | JuneVHF(QSettings &cs, QSettings &ss);
28 | ~JuneVHF() override;
29 |
30 | QString bandLabel(int i) const override;
31 | bool bandLabelEnable(int i) const override;
32 | int highlightBand(int b, ModeTypes modeType = CWType) const override;
33 | int nMultsColumn(int col, int ii) const override;
34 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
35 | bool validateExchange(Qso *qso) override;
36 | QVariant columnName(int c) const override;
37 | ContestType contestType() const override { return JuneVHF_t; }
38 | void addQso(Qso *qso) override;
39 | int fieldWidth(int col) const override;
40 | int numberField() const override { return -1; }
41 | unsigned int rcvFieldShown() const override { return 1; }
42 | bool showQsoPtsField() const override { return true; }
43 | };
44 |
45 | #endif // CONTEST_JUNEVHF_H
46 |
--------------------------------------------------------------------------------
/so2sdr/contest_kqp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_KQP_H
20 | #define CONTEST_KQP_H
21 |
22 | #include "contest.h"
23 |
24 | class KQP : public Contest {
25 | public:
26 | KQP(QSettings &cs, QSettings &ss);
27 | ~KQP() override;
28 |
29 | ContestType contestType() const override { return Kqp_t; }
30 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
31 | bool validateExchange(Qso *qso) override;
32 | void addQso(Qso *qso) override;
33 | int fieldWidth(int col) const override;
34 | int numberField() const override;
35 | unsigned int rcvFieldShown() const override;
36 | bool showQsoPtsField() const override { return true; }
37 | void setWithinState(bool);
38 |
39 | private:
40 | bool withinState;
41 | };
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/so2sdr/contest_msqp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_MSQP_H
20 | #define CONTEST_MSQP_H
21 |
22 | #include "contest.h"
23 |
24 | // Mississippi QSO party; updated for 2019 rules
25 |
26 | class MSQP : public Contest {
27 | public:
28 | MSQP(QSettings &cs, QSettings &ss);
29 | ~MSQP() override;
30 |
31 | ContestType contestType() const override { return Msqp_t; }
32 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
33 | bool validateExchange(Qso *qso) override;
34 | void addQso(Qso *qso) override;
35 | int fieldWidth(int col) const override;
36 | int numberField() const override;
37 | unsigned int rcvFieldShown() const override;
38 | bool showQsoPtsField() const override { return true; }
39 | void setWithinState(bool);
40 |
41 | private:
42 | bool withinState;
43 | };
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/so2sdr/contest_naqp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_NAQP_H
20 | #define CONTEST_NAQP_H
21 |
22 | #include "contest.h"
23 | #include "cty.h"
24 |
25 | class Naqp : public Contest {
26 | public:
27 | Naqp(QSettings &cs, QSettings &ss);
28 | ~Naqp() override;
29 |
30 | ContestType contestType() const override { return Naqp_t; }
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | int numberField() const override;
36 | unsigned int rcvFieldShown() const override;
37 | bool showQsoPtsField() const override { return false; }
38 | };
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/so2sdr/contest_paqp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_PAQP_H
20 | #define CONTEST_PAQP_H
21 |
22 | #include "contest.h"
23 | #include
24 | #include
25 |
26 | class PAQP : public Contest {
27 | public:
28 | PAQP(QSettings &cs, QSettings &ss);
29 | ~PAQP() override;
30 |
31 | QVariant columnName(int c) const override;
32 | ContestType contestType() const override { return Paqp_t; }
33 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
34 | bool validateExchange(Qso *qso) override;
35 | void addQso(Qso *qso) override;
36 | int fieldWidth(int col) const override;
37 | int numberField() const override;
38 | unsigned int rcvFieldShown() const override;
39 | unsigned int sntFieldShown() const override;
40 | void setWithinState(bool);
41 | bool showQsoPtsField() const override { return true; }
42 |
43 | private:
44 | bool withinState;
45 | static QList EPA_counties;
46 | };
47 |
48 | #endif
49 |
--------------------------------------------------------------------------------
/so2sdr/contest_sprint.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_SPRINT_H
20 | #define CONTEST_SPRINT_H
21 |
22 | #include "contest.h"
23 |
24 | class Sprint : public Contest {
25 | public:
26 | Sprint(QSettings &cs, QSettings &ss);
27 | ~Sprint() override;
28 |
29 | ContestType contestType() const override { return Sprint_t; }
30 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
31 | bool validateExchange(Qso *qso) override;
32 | void addQso(Qso *qso) override;
33 | int fieldWidth(int col) const override;
34 | int numberField() const override;
35 | unsigned int rcvFieldShown() const override;
36 | bool showQsoPtsField() const override { return false; }
37 | unsigned int sntFieldShown() const override;
38 | QVariant columnName(int c) const override;
39 | };
40 |
41 | #endif // CONTEST_SPRINT_H
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_stew.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_STEW_H
20 | #define CONTEST_STEW_H
21 |
22 | #include "contest.h"
23 |
24 | class Stew : public Contest {
25 | public:
26 | Stew(QSettings &cs, QSettings &ss);
27 | ~Stew() override;
28 |
29 | void addQso(Qso *qso) override;
30 | ContestType contestType() const override { return Stew_t; }
31 | QByteArray prefillExchange(Qso *qso) override;
32 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
33 | bool validateExchange(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | unsigned int rcvFieldShown() const override;
36 | int Score() const override;
37 | bool showQsoPtsField() const override { return true; }
38 | int numberField() const override;
39 | };
40 |
41 | #endif // CONTEST_STEW_H
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_sweepstakes.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_SWEEPSTAKES_H
20 | #define CONTEST_SWEEPSTAKES_H
21 |
22 | #include "contest.h"
23 |
24 | class Sweepstakes : public Contest {
25 | public:
26 | Sweepstakes(QSettings &cs, QSettings &ss);
27 | ~Sweepstakes() override;
28 |
29 | QVariant columnName(int c) const override;
30 | ContestType contestType() const override { return Sweepstakes_t; }
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | int numberField() const override;
36 | unsigned int rcvFieldShown() const override;
37 | bool showQsoPtsField() const override { return false; }
38 | unsigned int sntFieldShown() const override;
39 | };
40 |
41 | #endif // CONTEST_SWEEPSTAKES_H
42 |
--------------------------------------------------------------------------------
/so2sdr/contest_wpx.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_WPX_H
20 | #define CONTEST_WPX_H
21 |
22 | #include "contest.h"
23 |
24 | class WPX : public Contest {
25 | public:
26 | WPX(QSettings &cs, QSettings &ss);
27 | ~WPX() override;
28 |
29 | QVariant columnName(int c) const override;
30 | ContestType contestType() const override { return Wpx_t; }
31 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
32 | bool validateExchange(Qso *qso) override;
33 | void addQso(Qso *qso) override;
34 | int fieldWidth(int col) const override;
35 | unsigned int rcvFieldShown() const override;
36 | unsigned int sntFieldShown() const override;
37 | int numberField() const override;
38 | bool showQsoPtsField() const override { return true; }
39 | int rstField() const override { return 0; }
40 | void workedMults(QByteArray Call, int mult, unsigned int &worked);
41 | void wpxPrefix(QByteArray call, QByteArray &pfx);
42 | };
43 |
44 | #endif // CONTEST_WPX
45 |
--------------------------------------------------------------------------------
/so2sdr/contest_wwdigi.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTEST_WWDIGI_H
20 | #define CONTEST_WWDIGI_H
21 |
22 | #include "contest.h"
23 | #include "defines.h"
24 |
25 | class WWDigi : public Contest {
26 | public:
27 | WWDigi(QSettings &cs, QSettings &ss);
28 | ~WWDigi() override;
29 |
30 | void setupContest(QByteArray MultFile[MMAX], const Cty *cty) override;
31 | bool validateExchange(Qso *qso) override;
32 | QVariant columnName(int c) const override;
33 | ContestType contestType() const override { return WWDigi_t; }
34 | void addQso(Qso *qso) override;
35 | int fieldWidth(int col) const override;
36 | int numberField() const override { return -1; }
37 | unsigned int rcvFieldShown() const override { return 1; }
38 | bool showQsoPtsField() const override { return true; }
39 | };
40 |
41 | #endif // CONTEST_WWDIGI_H
42 |
--------------------------------------------------------------------------------
/so2sdr/contestoptdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CONTESTOPTDIALOG_H
20 | #define CONTESTOPTDIALOG_H
21 |
22 | #include "defines.h"
23 | #include "ui_contestoptdialog.h"
24 | #include
25 | #include
26 |
27 | /*!
28 | Dialog for setting misc program options
29 | */
30 | class ContestOptionsDialog : public QDialog, public Ui::ContestOptDialog {
31 | Q_OBJECT
32 |
33 | public:
34 | friend class So2sdr;
35 | explicit ContestOptionsDialog(QWidget *parent = nullptr);
36 | ~ContestOptionsDialog();
37 | void initialize(QSettings *s);
38 |
39 | public slots:
40 | void updateOptions();
41 | void rejectChanges();
42 | signals:
43 | void rescore();
44 | void multiModeChanged();
45 | void updateOffTime();
46 |
47 | private:
48 | void setOptions();
49 | QIntValidator *offValidator;
50 | QSettings *settings;
51 | QLineEdit *sent[MAX_EXCH_FIELDS];
52 | QLabel *sentName[MAX_EXCH_FIELDS];
53 | };
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/so2sdr/cty.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CTY_H
20 | #define CTY_H
21 | /*! reads CTY country database file, provides prefix/country/zone lookups, beam
22 | headings
23 |
24 | */
25 | #include "defines.h"
26 | #include "qso.h"
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 |
33 | class Cty : public QObject {
34 | Q_OBJECT
35 |
36 | public:
37 | explicit Cty(QSettings &s);
38 | ~Cty();
39 |
40 | int findPfx(const QByteArray &prefix, int &zone, Cont &continent, bool &o) const;
41 | int idPfx(Qso *qso, bool &qsy) const;
42 | void initialize(double la, double lo, int ZoneType);
43 | QString mySunTimes() const;
44 | int nCountries() const;
45 | QByteArray pfxName(int indx) const;
46 | void readCtyFile(QByteArray cty_file);
47 |
48 | signals:
49 | void ctyError(const QString &);
50 |
51 | private:
52 | int nARRLCty;
53 | int nCQCty;
54 | int usaIndx;
55 | QList countryList;
56 | QList CallE;
57 | QList pfxList;
58 | QList portId;
59 | QList portIdMM;
60 | QList portIdMobile;
61 | QList portIdRover;
62 | QSettings &settings;
63 | QString mySun;
64 | QList zoneBearing;
65 | QList zoneSun;
66 |
67 | int checkException(const QByteArray &call, int &zone, QString &sun) const;
68 | int idPfx2(Qso *qso, int sz) const;
69 | bool isDigit(char c) const;
70 | void sunTimes(double lat, double lon, QString &suntime);
71 | };
72 | #endif // CTY_H
73 |
--------------------------------------------------------------------------------
/so2sdr/cwdaemon.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CWDAEMON_H
20 | #define CWDAEMON_H
21 |
22 | #include "defines.h"
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | /*!
29 | cwdaemon support class
30 | */
31 | class Cwdaemon : public QObject {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit Cwdaemon(QSettings &s, QObject *parent = nullptr);
36 | ~Cwdaemon();
37 | void loadbuff(QByteArray msg);
38 | bool isSending() const;
39 | void sendcw();
40 | void switchTransmit(int nrig);
41 | void setSpeed(int speed);
42 | void setUdpPort(int nrig, int p);
43 | bool isOpen(int nrig) const;
44 |
45 | signals:
46 | void cwCanceled();
47 | void finished();
48 | void textSent(const QString &t, int);
49 | void version(int ver);
50 | void tx(bool, int);
51 | void error(const QString &);
52 |
53 | public slots:
54 | void cancelcw();
55 | void open();
56 |
57 | private slots:
58 | void receive1();
59 | void receive2();
60 |
61 | private:
62 | bool sending;
63 | bool open_[NRIG];
64 | bool sendingCmd;
65 | int rigNum;
66 | int txRig;
67 | int udpPort[NRIG];
68 | QByteArray sendBuff;
69 | QString sent;
70 | QSettings &settings;
71 | QUdpSocket socket[NRIG];
72 | void close();
73 | };
74 |
75 | #endif // CWDAEMON_H
76 |
--------------------------------------------------------------------------------
/so2sdr/cwdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CWDIALOG_H
20 | #define CWDIALOG_H
21 |
22 | #include "cwmanager.h"
23 | #include "ui_cwdialog.h"
24 | #include
25 |
26 | class QString;
27 |
28 | /*!
29 | Dialog for winkey parameters
30 | */
31 | class CWDialog : public QDialog, public Ui::CwDialog {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit CWDialog(QSettings &s, QWidget *parent = nullptr);
36 | ~CWDialog();
37 | signals:
38 | void setType(cwtype);
39 | void startCw();
40 |
41 | public slots:
42 | void setWinkeyVersionLabel(int version);
43 | void rejectChanges();
44 | void updateCW();
45 |
46 | private:
47 | QSettings &settings;
48 | };
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/so2sdr/cwmanager.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CWMANAGER_H
20 | #define CWMANAGER_H
21 |
22 | #include "cwdaemon.h"
23 | #include "defines.h"
24 | #include "winkey.h"
25 | #include
26 | #include
27 | #include
28 | #include
29 |
30 | class CWManager : public QObject {
31 | Q_OBJECT
32 | public:
33 | explicit CWManager(QSettings &s, QObject *parent = nullptr);
34 | ~CWManager();
35 | cwtype cwDevice() const { return mode; }
36 | void loadbuff(QByteArray msg);
37 | bool isSending() const;
38 | void sendcw();
39 | void switchTransmit(int nrig);
40 | void setEchoMode(bool b);
41 | void setSpeed(int speed);
42 | QString textStatus() const;
43 |
44 | signals:
45 | void cwCanceled();
46 | void finished();
47 | void textSent(const QString &t, int);
48 | void winkeyVersion(int ver);
49 | void tx(bool, int);
50 | void CWError(const QString &);
51 | void so2rMiniCancelCW();
52 | void so2rMiniLoadbuff(const QByteArray &);
53 | void so2rMiniSendCW();
54 | void so2rMiniSpeed(int);
55 |
56 | public slots:
57 | void cancelcw();
58 | void open();
59 | void setType(cwtype t);
60 | void so2rMiniSetSending(bool b, int i) {
61 | Q_UNUSED(i)
62 | miniSending = b;
63 | }
64 |
65 | private:
66 | bool miniSending;
67 | cwtype mode;
68 | QSettings &settings;
69 | Winkey *winkey;
70 | Cwdaemon *cwdaemon;
71 | };
72 |
73 | #endif // CWMANAGER_H
74 |
--------------------------------------------------------------------------------
/so2sdr/cwmessagedialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef CWMESSAGEDIALOG_H
20 | #define CWMESSAGEDIALOG_H
21 |
22 | #include "defines.h"
23 | #include "ui_cwmessagedialog.h"
24 | #include "utils.h"
25 | #include
26 | #include
27 | #include
28 |
29 | class QLineEdit;
30 | class So2sdr;
31 |
32 | /*!
33 | Dialog for entering CW messages
34 | */
35 | class CWMessageDialog : public QDialog, public Ui::CWMessageDialog {
36 | Q_OBJECT
37 |
38 | public:
39 | CWMessageDialog(ModeTypes modetype, QWidget *parent = nullptr);
40 | ~CWMessageDialog();
41 | void initialize(QSettings *s);
42 | friend class So2sdr;
43 |
44 | public slots:
45 | void updateCWMsg();
46 | void rejectChanges();
47 |
48 | private:
49 | int m;
50 | QByteArray cqCtrlF[N_FUNC];
51 | QByteArray cqF[N_FUNC];
52 | QByteArray cqShiftF[N_FUNC];
53 | QByteArray excF[N_FUNC];
54 | QLineEdit *ctrlFuncEditPtr[N_FUNC];
55 | QLineEdit *excFuncEditPtr[N_FUNC];
56 | QLineEdit *funcEditPtr[N_FUNC];
57 | QLineEdit *shiftFuncEditPtr[N_FUNC];
58 | UpperValidator *upperValidate;
59 | QSettings *settings;
60 | };
61 |
62 | #endif
63 |
--------------------------------------------------------------------------------
/so2sdr/detailededit.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #ifndef DETAILEDEDIT_H
21 | #define DETAILEDEDIT_H
22 |
23 | #include "serial.h"
24 | #include "ui_detailededit.h"
25 | #include
26 | #include
27 |
28 | /*!
29 | Dialog for detailed qso editing
30 | */
31 | class DetailedEdit : public QDialog, public Ui::DetailedQSOEdit {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit DetailedEdit(QWidget *parent = nullptr);
36 | void loadRecord(const QSqlRecord &r, int nexchange);
37 | private slots:
38 | void updateRecord();
39 | signals:
40 | void editedRecord(QSqlRecord &);
41 |
42 | private:
43 | QSqlRecord rec;
44 | };
45 |
46 | #endif
47 |
--------------------------------------------------------------------------------
/so2sdr/dupesheet.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef DUPESHEET_H
20 | #define DUPESHEET_H
21 | #include "defines.h"
22 | #include "ui_dupesheet.h"
23 |
24 | /*!
25 | Class for visible dupesheet
26 | */
27 | class DupeSheet : public QDialog, public Ui::Dupesheet {
28 | Q_OBJECT
29 |
30 | public:
31 | explicit DupeSheet(QWidget *parent = nullptr);
32 | ~DupeSheet();
33 | int band() const;
34 | void setBand(int);
35 | void clear();
36 | void updateDupesheet(QByteArray call);
37 |
38 | signals:
39 | void closed(bool);
40 |
41 | protected:
42 | void closeEvent(QCloseEvent *event);
43 | void keyPressEvent(QKeyEvent *event);
44 |
45 | private:
46 | QList dupeCallsKey[dsColumns];
47 | QList dupeCalls[dsColumns];
48 | int band_;
49 | };
50 | #endif
51 |
--------------------------------------------------------------------------------
/so2sdr/filedownloader.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | This class derived from code at https://wiki.qt.io/Download_Data_from_URL
19 | */
20 | #include "filedownloader.h"
21 |
22 | FileDownloader::FileDownloader(QUrl imageUrl, QObject *parent)
23 | : QObject(parent) {
24 | connect(&m_WebCtrl, SIGNAL(finished(QNetworkReply *)), this,
25 | SLOT(fileDownloaded(QNetworkReply *)));
26 | QNetworkRequest request(imageUrl);
27 | request.setHeader(QNetworkRequest::UserAgentHeader, QVariant("Wget/1.19"));
28 | m_WebCtrl.get(request);
29 | }
30 |
31 | FileDownloader::~FileDownloader() {}
32 |
33 | void FileDownloader::fileDownloaded(QNetworkReply *pReply) {
34 | m_DownloadedData = pReply->readAll();
35 | pReply->deleteLater();
36 | emit downloaded();
37 | }
38 |
39 | QByteArray FileDownloader::downloadedData() const { return m_DownloadedData; }
40 |
--------------------------------------------------------------------------------
/so2sdr/filedownloader.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | This class derived from code at https://wiki.qt.io/Download_Data_from_URL
19 | */
20 | #ifndef FILEDOWNLOADER_H
21 | #define FILEDOWNLOADER_H
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | class FileDownloader : public QObject {
30 | Q_OBJECT
31 | public:
32 | explicit FileDownloader(QUrl imageUrl, QObject *parent = nullptr);
33 | virtual ~FileDownloader();
34 | QByteArray downloadedData() const;
35 |
36 | signals:
37 | void downloaded();
38 |
39 | private slots:
40 | void fileDownloaded(QNetworkReply *pReply);
41 |
42 | private:
43 | QNetworkAccessManager m_WebCtrl;
44 | QByteArray m_DownloadedData;
45 | };
46 |
47 | #endif // FILEDOWNLOADER_H
48 |
--------------------------------------------------------------------------------
/so2sdr/helpdialog.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "helpdialog.h"
20 | #include "utils.h"
21 | #include
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | HelpDialog::HelpDialog(QString fileName, QWidget *parent)
30 | : QDialog(parent) {
31 | setupUi(this);
32 | QCommonStyle style;
33 | connect(pushButton, SIGNAL(clicked()), this, SLOT(accept()));
34 | connect(homeButton, SIGNAL(clicked()), this, SLOT(home()));
35 | homeButton->setIcon(style.standardIcon(QStyle::SP_ArrowUp));
36 | connect(backButton, SIGNAL(clicked()), HelpTextEdit, SLOT(backward()));
37 | backButton->setIcon(style.standardIcon(QStyle::SP_ArrowBack));
38 | connect(forwardButton, SIGNAL(clicked()), HelpTextEdit, SLOT(forward()));
39 | forwardButton->setIcon(style.standardIcon(QStyle::SP_ArrowForward));
40 | HelpTextEdit->setSearchPaths(QStringList(dataDirectory() + "help/"));
41 | QFile file(fileName);
42 | if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
43 | QTextStream ts(&file);
44 | HelpTextEdit->setText(ts.readAll());
45 | }
46 | file.close();
47 | }
48 |
49 | void HelpDialog::home() { HelpTextEdit->scrollToAnchor("top"); }
50 |
--------------------------------------------------------------------------------
/so2sdr/helpdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef HELPDIALOG_H
20 | #define HELPDIALOG_H
21 | #include "ui_helpdialog.h"
22 |
23 | /*!
24 | Displays help file
25 | */
26 | class HelpDialog : public QDialog, public Ui::HelpDialog {
27 | Q_OBJECT
28 |
29 | public:
30 | HelpDialog(QString fileName, QWidget *parent = nullptr);
31 |
32 | private slots:
33 | void home();
34 | };
35 | #endif
36 |
--------------------------------------------------------------------------------
/so2sdr/history.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #ifndef HISTORY_H
21 | #define HISTORY_H
22 |
23 | #include "qso.h"
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | /*!
30 | exchange history database
31 | */
32 | class History : public QObject {
33 | Q_OBJECT
34 | public:
35 | explicit History(QSettings &csettings, QObject *parent = nullptr);
36 | ~History();
37 | void fillExchange(Qso *qso, const QByteArray &part);
38 | void startHistory();
39 | bool isOpen();
40 |
41 | signals:
42 | void message(const QString &, int);
43 |
44 | public slots:
45 | void addQso(const Qso *qso);
46 |
47 | private:
48 | QSettings &csettings;
49 | bool isopen;
50 | };
51 |
52 | #endif // HISTORY_H
53 |
--------------------------------------------------------------------------------
/so2sdr/icon48x48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/so2sdr/icon48x48.ico
--------------------------------------------------------------------------------
/so2sdr/inpout32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/n4ogw/so2sdr/7a3ab91fd8d948f549509c2adc58074d17b240b9/so2sdr/inpout32.dll
--------------------------------------------------------------------------------
/so2sdr/keyboardhandler.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef KEYBOARDHANDLER_H
20 | #define KEYBOARDHANDLER_H
21 |
22 | #include
23 | #include
24 |
25 | class KeyboardHandler : public QObject {
26 | Q_OBJECT
27 | public:
28 | explicit KeyboardHandler(const QString &deviceName, QObject *parent = nullptr);
29 | void quitHandler();
30 | void setDevice(const QString &);
31 |
32 | signals:
33 | void readKey(int code, bool shift, bool ctrl, bool alt);
34 |
35 | public slots:
36 | void run();
37 |
38 | private:
39 | QString device;
40 | std::atomic quitFlag;
41 | int fd;
42 | };
43 |
44 | #endif // KEYBOARDHANDLER_H
45 |
--------------------------------------------------------------------------------
/so2sdr/lineedit.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "lineedit.h"
20 | #include
21 |
22 | LineEdit::LineEdit(QWidget *parent) : QLineEdit(parent) {
23 | myFocus = false;
24 | installEventFilter(this);
25 | }
26 |
27 | void LineEdit::setMyFocus(bool b) {
28 | myFocus = b;
29 | if (b) {
30 | QCoreApplication::postEvent(this, new QEvent(QEvent::FocusIn));
31 | } else {
32 | QCoreApplication::postEvent(this, new QEvent(QEvent::FocusOut));
33 | }
34 | }
35 |
36 | bool LineEdit::eventFilter(QObject *o, QEvent *e) {
37 | if (myFocus && e->type() == QEvent::FocusOut) {
38 | return true;
39 | } else
40 | return QLineEdit::eventFilter(o, e);
41 | }
42 |
--------------------------------------------------------------------------------
/so2sdr/lineedit.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef LINEEDIT_H
20 | #define LINEEDIT_H
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | /* modified QLinedEdit for the callsign and exchange entry windows.
27 | * modifications allow controlling focus while in two keyboard mode
28 | */
29 |
30 | class LineEdit : public QLineEdit {
31 | public:
32 | explicit LineEdit(QWidget *parent);
33 | void setMyFocus(bool b);
34 |
35 | protected:
36 | bool eventFilter(QObject *, QEvent *e);
37 |
38 | private:
39 | bool myFocus;
40 | };
41 |
42 | #endif // LINEEDIT_H
43 |
--------------------------------------------------------------------------------
/so2sdr/linux_pp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef LINUX_PP_H
20 | #define LINUX_PP_H
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | /*! Parallel port access under Linux
27 |
28 | bit to pin mapping
29 | Bit: 7 6 5 4 3 2 1 0
30 |
31 | Base (Data port) Pin: 9 8 7 6 5 4 3 2
32 |
33 | Base+1 (Status port) Pin: ~11 10 12 13 15
34 |
35 | Base+2 (Control port) Pin: ~17 16 ~14 ~1
36 |
37 | */
38 | class ParallelPort : public QObject {
39 | Q_OBJECT
40 |
41 | public:
42 | explicit ParallelPort(QSettings &s);
43 | ~ParallelPort();
44 | void switchAudio(int r);
45 | void toggleStereoPin();
46 | void switchTransmit(int r);
47 | bool stereoActive() const;
48 |
49 | public slots:
50 | void initialize();
51 |
52 | signals:
53 | void parallelPortError(const QString &);
54 |
55 | private:
56 | bool initialized;
57 | bool stereoPinStatus;
58 |
59 | int parallelFD;
60 |
61 | void PinLow(const int p);
62 | void PinHigh(const int p);
63 | QSettings &settings;
64 | };
65 | #endif
66 |
--------------------------------------------------------------------------------
/so2sdr/logedit.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef LOGEDIT_H
20 | #define LOGEDIT_H
21 |
22 | #include "utils.h"
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | #include
33 | #include
34 |
35 | /*!
36 | subclass of QSqlTableModel needed to specify flags separately for
37 | each column, and specify checkbox for qso valid column
38 | */
39 | class tableModel : public QSqlTableModel {
40 | Q_OBJECT
41 |
42 | public:
43 | tableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase());
44 |
45 | protected:
46 | virtual Qt::ItemFlags flags(const QModelIndex &index) const;
47 | virtual QVariant data(const QModelIndex &index, int role) const;
48 | virtual bool setData(const QModelIndex &index, const QVariant &value,
49 | int role);
50 | };
51 |
52 | /*!
53 | derived line editor class for editing log cells
54 | */
55 | class LogQLineEdit : public QLineEdit {
56 | Q_OBJECT
57 |
58 | public:
59 | explicit LogQLineEdit(QWidget *w);
60 |
61 | private slots:
62 | void fixSelect();
63 |
64 | protected:
65 | bool eventFilter(QObject *, QEvent *);
66 |
67 | private:
68 | QString undoText;
69 | };
70 |
71 | #endif // LOGEDIT_H
72 |
--------------------------------------------------------------------------------
/so2sdr/main.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "menustyle.h"
20 | #include "so2sdr.h"
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | int main(int argc, char *argv[]) {
27 | QApplication app(argc, argv);
28 | QApplication::setApplicationName("so2sdr");
29 | QApplication::setApplicationVersion(Version);
30 |
31 | QCommandLineParser parser;
32 | parser.setApplicationDescription(
33 | "so2sdr: a contest logging program, https://github.com/n4ogw/so2sdr");
34 | parser.addHelpOption();
35 | parser.addVersionOption();
36 | parser.addPositionalArgument("configfile",
37 | "(optional) configuration file with full path");
38 | parser.process(app);
39 | const QStringList args = parser.positionalArguments();
40 |
41 | // set style that prevents menubar from grabbing focus when Alt pressed
42 | app.setStyle(new MenuStyle());
43 |
44 | So2sdr *main = new So2sdr(args);
45 | QObject::connect(main->actionQuit, SIGNAL(triggered()), &app, SLOT(quit()));
46 |
47 | // calls So2sdr destructor on app exit
48 | main->setAttribute(Qt::WA_DeleteOnClose);
49 |
50 | if (main->so2sdrOk()) {
51 | return app.exec();
52 | } else {
53 | return -1;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/so2sdr/master.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef MASTER_H
20 | #define MASTER_H
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | /*!
27 | Class for supercheck partial lookups (MASTER.DTA)
28 |
29 | based on code from Alex Shovkoplyas VE3NEA
30 | */
31 | class Master : public QObject {
32 | Q_OBJECT
33 |
34 | public:
35 | Master();
36 | ~Master();
37 | void initialize(QFile &file);
38 | void search(QByteArray partial, QByteArray &CallList);
39 |
40 | signals:
41 | void masterError(const QString &);
42 |
43 | private:
44 | bool initialized;
45 | char *CallData;
46 | int *index;
47 | int indexBytes;
48 | int indexSize;
49 | int nchars;
50 | QByteArray chars;
51 | qint64 fileSize;
52 | };
53 |
54 | #endif // MASTER_H
55 |
--------------------------------------------------------------------------------
/so2sdr/menustyle.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef MENUSTYLE_H
20 | #define MENUSTYLE_H
21 | #include
22 | #include
23 | #include
24 | #include
25 | #include
26 |
27 | // used to prevent menubar from grabbing focus when Alt pressed. See
28 | //
29 | // https://bugreports.qt.io/browse/QTBUG-77355
30 | //
31 | // this workaround is from
32 | //
33 | // https://stackoverflow.com/questions/37020992/qt-prevent-menubar-from-grabbing-focus-after-alt-pressed-on-windows
34 |
35 | class MenuStyle : public QProxyStyle {
36 | public:
37 | int styleHint(StyleHint stylehint, const QStyleOption *opt,
38 | const QWidget *widget, QStyleHintReturn *returnData) const {
39 | if (stylehint == QStyle::SH_MenuBar_AltKeyNavigation)
40 | return 0;
41 |
42 | return QProxyStyle::styleHint(stylehint, opt, widget, returnData);
43 | }
44 | };
45 |
46 | #endif // MENUSTYLE_H
47 |
--------------------------------------------------------------------------------
/so2sdr/microham.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef MICROHAM_H
20 | #define MICROHAM_H
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | /*
27 | * Support for microHam Control Protocol enabled devices
28 | *
29 | * -Commands: FT1, FT2, FR1, FR2, and FRS commands
30 | * -does not receive any data from the device, only sends out commands
31 | * -connection settings fixed at 9600N81
32 | * -tested on MK2R/+ device (NO3M)
33 | */
34 |
35 | class MicroHam : public QObject {
36 | Q_OBJECT
37 |
38 | public:
39 | explicit MicroHam(QSettings &s, QObject *parent = nullptr);
40 | ~MicroHam();
41 | bool MicroHamIsOpen() const;
42 | void switchAudio(int nr);
43 | void toggleStereo(int nr);
44 | void switchTransmit(int nr);
45 | bool stereoActive() const;
46 | void sendCommand(QByteArray command);
47 | signals:
48 | void microhamError(const QString &);
49 |
50 | public slots:
51 | void openMicroHam();
52 |
53 | private:
54 | bool MicroHamOpen;
55 | bool stereo;
56 | QSerialPort *MicroHamPort;
57 | QSettings &settings;
58 | void closeMicroHam();
59 | };
60 |
61 | #endif // MICROHAM_H
62 |
--------------------------------------------------------------------------------
/so2sdr/multdisplay.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef MULTDISPLAY_H
20 | #define MULTDISPLAY_H
21 |
22 | #include
23 | #include
24 | #include
25 | #include
26 |
27 | /*! widget to display multipliers. Has extra features for grid square display
28 | *
29 | */
30 | class MultDisplay : public QTextEdit {
31 | Q_OBJECT
32 |
33 | public:
34 | MultDisplay(QWidget *parent = nullptr);
35 | void setGridMode(bool);
36 | void drawGrids();
37 | void updateMults();
38 | public slots:
39 | void setCenterGrid(QByteArray);
40 | void setMults(QList list) { mults = list; }
41 | void setNeededMults(QList list) { neededMults = list; }
42 |
43 | protected:
44 | bool eventFilter(QObject *, QEvent *e);
45 |
46 | private:
47 | bool gridMode;
48 | QByteArray centerGrid;
49 | QList mults;
50 | QList neededMults;
51 | char centerField1;
52 | char centerField2;
53 | char centerNr1;
54 | char centerNr2;
55 | char upperLeft[4];
56 | };
57 |
58 | #endif // MULTDISPLAY_H
59 |
--------------------------------------------------------------------------------
/so2sdr/mytableview.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 rec. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "mytableview.h"
20 | #include
21 | #include
22 | #include
23 |
24 | MyTableView::MyTableView(QWidget *w) : QTableView(w) {
25 | installEventFilter(this);
26 | }
27 |
28 | /*! event filter for log display delegate
29 | */
30 | bool MyTableView::eventFilter(QObject *obj, QEvent *event) {
31 | if (event->type() == QEvent::KeyPress) {
32 | QKeyEvent *kev = static_cast(event);
33 | if (kev->key() == Qt::Key_Escape) {
34 | return false;
35 | }
36 | }
37 | return QTableView::eventFilter(obj, event);
38 | }
39 |
--------------------------------------------------------------------------------
/so2sdr/mytableview.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 rec. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdrec.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdrec. If not, see .
17 |
18 | */
19 | #ifndef MYTABLEVIEW_H
20 | #define MYTABLEVIEW_H
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | /*!
27 | Derived class for log display
28 | */
29 | class MyTableView : public QTableView {
30 | Q_OBJECT
31 |
32 | public:
33 | explicit MyTableView(QWidget *);
34 |
35 | protected:
36 | bool eventFilter(QObject *, QEvent *);
37 | };
38 |
39 | #endif // MYTABLEVIEW_H
40 |
--------------------------------------------------------------------------------
/so2sdr/newcontestdialog.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "newcontestdialog.h"
20 | #include
21 | #include
22 |
23 | NewDialog::NewDialog(QWidget *parent) : QDialog(parent) {
24 | setupUi(this);
25 | configFiles.clear();
26 | }
27 |
28 | QString NewDialog::selectedContest() {
29 | return (configFiles.at(NewContestComboBox->currentIndex()));
30 | }
31 |
32 | bool NewDialog::readContestList(QString fileName) {
33 | QFile file(fileName);
34 | if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
35 | emit newContestError("Can't open contest list file at " + fileName);
36 | return (false);
37 | }
38 | while (!file.atEnd()) {
39 | QByteArray buffer = file.readLine();
40 | int i = buffer.indexOf(",");
41 | QByteArray name = buffer.mid(0, i).trimmed();
42 | NewContestComboBox->addItem(name);
43 | configFiles.append(buffer.right(buffer.size() - i - 1).trimmed());
44 | }
45 | file.close();
46 | return (true);
47 | }
48 |
--------------------------------------------------------------------------------
/so2sdr/newcontestdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef NEWCONTESTDIALOG_H
20 | #define NEWCONTESTDIALOG_H
21 |
22 | #include "ui_newcontestdialog.h"
23 | #include
24 | #include
25 | #include
26 |
27 | /*!
28 | New contest selection dialog
29 | */
30 | class NewDialog : public QDialog, public Ui::NewContestDialog {
31 | Q_OBJECT
32 |
33 | public:
34 | NewDialog(QWidget *parent = nullptr);
35 | bool readContestList(QString fileName);
36 | QString selectedContest();
37 | signals:
38 | void newContestError(const QString &);
39 |
40 | private:
41 | QList configFiles;
42 | };
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/so2sdr/notedialog.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "notedialog.h"
20 | #include
21 |
22 | NoteDialog::NoteDialog(QWidget *parent) : QDialog(parent) {
23 | setupUi(this);
24 | connect(NoteButtonBox, SIGNAL(accepted()), this, SLOT(writeNotes()));
25 | }
26 |
27 | /*!
28 | called to open note dialog
29 | */
30 | void NoteDialog::enterNote(QString fname, const QString &dir,
31 | const QString &time, bool grab) {
32 | show();
33 | NoteLineEdit->setFocus();
34 | if (grab)
35 | NoteLineEdit->grabKeyboard();
36 | NoteLineEdit->setText(time + ":");
37 | noteFile = fname.remove("cfg") + "txt";
38 | noteDir = dir;
39 | }
40 |
41 | /*!
42 | append note to file
43 |
44 | @todo File write error not handled
45 | */
46 | void NoteDialog::writeNotes() {
47 | QDir directory;
48 | directory.setCurrent(noteDir);
49 | QFile file(noteFile);
50 | if (file.open(QIODevice::Append | QIODevice::Text)) {
51 | file.write(NoteLineEdit->text().toLatin1().data());
52 | file.write("\n");
53 | file.close();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/so2sdr/notedialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef NOTEDIALOG_H
20 | #define NOTEDIALOG_H
21 |
22 | #include "ui_notedialog.h"
23 | #include
24 |
25 | /*!
26 | Dialog to enter log notes
27 | */
28 | class NoteDialog : public QDialog, public Ui::NoteDialog {
29 | Q_OBJECT
30 |
31 | public:
32 | explicit NoteDialog(QWidget *parent = nullptr);
33 | void enterNote(QString fname, const QString &dir, const QString &time,
34 | bool grab = false);
35 |
36 | private slots:
37 | void writeNotes();
38 |
39 | private:
40 | QString noteDir;
41 | QString noteFile;
42 | };
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/so2sdr/otrsp.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef OTRSP_H
20 | #define OTRSP_H
21 | #include
22 | #include
23 | #include
24 |
25 | /*
26 | * Support for OTRSP (Open Two Radio Switching Protocol) devices
27 | *
28 | * -limited support at present: only uses RX1, RX2, TX1, TX2, and RX1S commands
29 | * -does not receive any data from the device, only sends out commands
30 | * -connection settings fixed at 9600N81
31 | * -tested on SO2RDUINO device (N4OGW)
32 | */
33 |
34 | class OTRSP : public QObject {
35 | Q_OBJECT
36 |
37 | public:
38 | OTRSP(QSettings &s, int n, QObject *parent = nullptr);
39 | ~OTRSP();
40 | QByteArray name() const;
41 | bool OTRSPIsOpen() const;
42 | void switchAudio(int nr);
43 | void toggleStereo(int nr);
44 | void switchTransmit(int nr);
45 | bool stereoActive() const;
46 | void sendCommand(QByteArray command);
47 | signals:
48 | void otrspError(const QString &);
49 | void otrspNameSet(QByteArray, int);
50 |
51 | public slots:
52 | void openOTRSP();
53 |
54 | private:
55 | int nr;
56 | bool OTRSPOpen;
57 | bool stereo;
58 | QSerialPort *OTRSPPort;
59 | QSettings &settings;
60 | QByteArray deviceName;
61 | void closeOTRSP();
62 | };
63 |
64 | #endif // OTRSP_H
65 |
--------------------------------------------------------------------------------
/so2sdr/qso.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef QSO_H
20 | #define QSO_H
21 | #include "defines.h"
22 | #include "hamlib/rig.h"
23 | #include
24 | #include
25 |
26 | /*!
27 | qso data structure
28 | */
29 | class Qso {
30 | public:
31 | explicit Qso(int n = 1);
32 | ~Qso();
33 | void clear();
34 | void setExchangeType(int, FieldTypes);
35 |
36 | bool dupe;
37 | bool externalQso;
38 | bool isMM;
39 | bool isMobile;
40 | bool isRover;
41 | bool valid;
42 | bool secondRadioQsy;
43 | int band;
44 | int bandColumn;
45 | double freq;
46 | double qsyFreq;
47 | int mult[MMAX];
48 | int newmult[MMAX];
49 | bool isnewmult[MMAX];
50 | int nr;
51 | int number;
52 | int pts;
53 | QByteArray call;
54 | QByteArray *rcv_exch;
55 | QByteArray *snt_exch;
56 | QDateTime time;
57 | rmode_t mode;
58 | rmode_t qsyMode;
59 | ModeTypes modeType;
60 |
61 | bool isamult[MMAX];
62 | Cont continent;
63 | FieldTypes *exchange_type;
64 | int bearing;
65 | int country;
66 | int distance;
67 | int n_exchange;
68 | int zone;
69 | QByteArray adifMode;
70 | QByteArray country_name;
71 | QByteArray exch;
72 | QByteArray mult_name;
73 | QByteArray PfxName;
74 | QByteArray prefill;
75 | QString sun;
76 | unsigned int worked;
77 | };
78 |
79 | #endif // QSO_H
80 |
--------------------------------------------------------------------------------
/so2sdr/radiodialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef RADIODIALOG_H
20 | #define RADIODIALOG_H
21 |
22 | #include "defines.h"
23 | #include "serial.h"
24 | #include "ui_radiodialog.h"
25 | #include
26 | #include
27 |
28 | class QComboBox;
29 | class QLineEdit;
30 |
31 | /*!
32 | Radio serial communication parameters
33 | */
34 | class RadioDialog : public QDialog, public Ui::RadioDialog {
35 | Q_OBJECT
36 |
37 | public:
38 | RadioDialog(QSettings &s, RigSerial &cat, QWidget *parent = nullptr);
39 | ~RadioDialog();
40 |
41 | signals:
42 | void startRadios();
43 |
44 | public slots:
45 | void rejectChanges();
46 | void updateRadio();
47 |
48 | private slots:
49 | void populateModels1(int);
50 | void populateModels2(int);
51 | void rigctld1Checked(bool);
52 | void rigctld2Checked(bool);
53 |
54 | private:
55 | void populateModelCombo(int, int);
56 | void updateFromSettings();
57 |
58 | QComboBox *radioBaudComboBox[NRIG];
59 | QComboBox *radioMfgComboBox[NRIG];
60 | QComboBox *radioModelComboBox[NRIG];
61 | QComboBox *radioPttComboBox[NRIG];
62 | QLineEdit *radioDevEdit[NRIG];
63 | QLineEdit *radioPollTimeEdit[NRIG];
64 | QLineEdit *radioIFEdit[NRIG];
65 | QSettings &settings;
66 | RigSerial &catptr;
67 | };
68 |
69 | #endif
70 |
--------------------------------------------------------------------------------
/so2sdr/sdrdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SDRDIALOG_H
20 | #define SDRDIALOG_H
21 |
22 | #include "defines.h"
23 | #include "ui_sdrdialog.h"
24 | #include
25 | #include
26 |
27 | class QCheckBox;
28 |
29 | /*!
30 | Visible bandmap parameters
31 | */
32 | class SDRDialog : public QDialog, public Ui::SDRDialog {
33 | Q_OBJECT
34 |
35 | public:
36 | SDRDialog(QSettings &s, QWidget *parent = nullptr);
37 | ~SDRDialog();
38 |
39 | signals:
40 | void updateCQLimits();
41 |
42 | public slots:
43 | void updateSDR();
44 | void rejectChanges();
45 |
46 | private slots:
47 | void findExeFile1();
48 | void findExeFile2();
49 | void findConfig1();
50 | void findConfig2();
51 |
52 | private:
53 | void fileGetter(QString msg, QString path, QString files, QString key,
54 | QLabel *label);
55 | QString shortName(QString s);
56 | void updateFromSettings();
57 | QLabel *pathLabel[NRIG];
58 | QLineEdit *ipPtr[NRIG];
59 | QLineEdit *portPtr[NRIG];
60 | QLabel *configLabel[NRIG];
61 | QSettings &settings;
62 | };
63 | #endif
64 |
--------------------------------------------------------------------------------
/so2sdr/settingsdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SETTINGSDIALOG_H
20 | #define SETTINGSDIALOG_H
21 |
22 | #include "defines.h"
23 | #include "ui_settingsdialog.h"
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | class SettingsDialog : public QDialog, public Ui::SettingsDialog {
30 | Q_OBJECT
31 |
32 | public:
33 | SettingsDialog(QSettings &s, QWidget *parent = nullptr);
34 | ~SettingsDialog();
35 | friend class So2sdr;
36 |
37 | public slots:
38 | void updateSettings();
39 | void rejectChanges();
40 |
41 | signals:
42 | void settingsUpdate();
43 |
44 | private:
45 | QSettings &settings;
46 | void loadSettings();
47 | };
48 |
49 | #endif // SETTINGSDIALOG_H
50 |
--------------------------------------------------------------------------------
/so2sdr/signal.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "signal.h"
20 |
21 | Signal::Signal() {
22 | active = false;
23 | cnt = 0;
24 | n = 0;
25 | f = 0;
26 | fcq = 0;
27 | space = 0;
28 | fsum = 0;
29 | }
30 |
31 | void Signal::clear() {
32 | active = false;
33 | cnt = 0;
34 | f = 0;
35 | fcq = 0;
36 | fsum = 0;
37 | n = 0;
38 | space = 0;
39 | }
40 |
41 | CalibSignal::CalibSignal() {
42 | n = 0;
43 | zsum[0] = 0.;
44 | zsum[1] = 0.;
45 | z[0] = 0.;
46 | z[1] = 0.;
47 | gain = 1.0;
48 | phase = 0.;
49 | }
50 |
--------------------------------------------------------------------------------
/so2sdr/signal.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SIGNAL_H
20 | #define SIGNAL_H
21 |
22 | #include "defines.h"
23 |
24 | class Signal {
25 | public:
26 | Signal();
27 |
28 | void clear();
29 | bool active;
30 | int cnt;
31 | int f;
32 | int fcq;
33 | int n;
34 | int space;
35 | long fsum;
36 | };
37 | Q_DECLARE_TYPEINFO(Signal, Q_MOVABLE_TYPE);
38 |
39 | class CalibSignal {
40 | public:
41 | CalibSignal();
42 |
43 | double gain, phase;
44 | double z[NRIG];
45 | double zsum[NRIG];
46 | long long n;
47 | };
48 | Q_DECLARE_TYPEINFO(CalibSignal, Q_MOVABLE_TYPE);
49 |
50 | #endif // SIGNAL_H
51 |
--------------------------------------------------------------------------------
/so2sdr/so2rdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SO2RDIALOG_H
20 | #define SO2RDIALOG_H
21 |
22 | #include "ui_so2rdialog.h"
23 | #include
24 | #include
25 |
26 | class QComboBox;
27 | class QLineEdit;
28 |
29 | /*!
30 | Radio serial communication parameters
31 | */
32 | class So2rDialog : public QDialog, public Ui::So2rDialog {
33 | Q_OBJECT
34 |
35 | public:
36 | So2rDialog(QSettings &s, QWidget *parent = nullptr);
37 | ~So2rDialog();
38 |
39 | signals:
40 | void setParallelPort();
41 | void setOTRSP();
42 | void setMicroHam();
43 | void setMini();
44 |
45 | public slots:
46 | void rejectChanges();
47 | void updateSo2r();
48 | void setOtrspName(QByteArray name, int nr);
49 | void setMiniName(QByteArray name);
50 |
51 | private:
52 | void updateFromSettings();
53 | QSettings &settings;
54 | };
55 |
56 | #endif
57 |
--------------------------------------------------------------------------------
/so2sdr/so2rmini.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef SO2RMINI_H
20 | #define SO2RMINI_H
21 | #include
22 | #include
23 | #include
24 |
25 | /*
26 | * Support for So2rMini device (with N6TR firmware)
27 | *
28 | */
29 | class SO2RMini : public QObject {
30 | Q_OBJECT
31 |
32 | public:
33 | SO2RMini(QSettings &s, QObject *parent = nullptr);
34 | ~SO2RMini();
35 | void cancelcw();
36 | void loadbuff(QByteArray msg);
37 | void sendcw();
38 | bool SO2RMiniIsOpen() const;
39 | void switchAudio(int nr);
40 | void toggleStereo(int nr);
41 | void setSpeed(int s);
42 | void switchTransmit(int nr);
43 | bool stereoActive() const;
44 | void sendCommand(QByteArray command);
45 |
46 | signals:
47 | void finished();
48 | void miniError(const QString &);
49 | void miniName(const QByteArray &);
50 | void textSent(const QString &t, int);
51 | void tx(bool, int);
52 |
53 | public slots:
54 | void openSO2RMini();
55 |
56 | private slots:
57 | void receive();
58 |
59 | private:
60 | char relayBits;
61 | bool SO2RMiniOpen;
62 | bool sending;
63 | bool stereo;
64 | int txRig;
65 | QSerialPort *SO2RMiniPort;
66 | QSettings &settings;
67 | QByteArray buffer;
68 | QByteArray bufferSent;
69 | QByteArray deviceName;
70 | void closeSO2RMini();
71 | };
72 |
73 | #endif // SO2RMINI_H
74 |
--------------------------------------------------------------------------------
/so2sdr/so2sdr.rc:
--------------------------------------------------------------------------------
1 | IDI_ICON1 ICON DISCARDABLE "icon48x48.ico"
2 |
--------------------------------------------------------------------------------
/so2sdr/stationdialog.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef STATIONDIALOG_H
20 | #define STATIONDIALOG_H
21 |
22 | #include "ui_stationdialog.h"
23 | #include
24 | #include
25 | #include
26 | #include
27 | /*!
28 | Station parameters dialog
29 | */
30 | class StationDialog : public QDialog, public Ui::StationDialog {
31 | Q_OBJECT
32 |
33 | public:
34 | StationDialog(QSettings &s, QWidget *parent = nullptr);
35 | ~StationDialog();
36 | friend class So2sdr;
37 |
38 | double lat() const;
39 | double lon() const;
40 |
41 | public slots:
42 | void updateStation();
43 | void rejectChanges();
44 |
45 | signals:
46 | void stationUpdate();
47 |
48 | private:
49 | double Lat;
50 | double Lon;
51 | QSettings &settings;
52 | };
53 |
54 | #endif
55 |
--------------------------------------------------------------------------------
/so2sdr/telnet.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef TELNET_H
20 | #define TELNET_H
21 |
22 | #include "ui_telnet.h"
23 | #include
24 |
25 | class QtTelnet;
26 |
27 | /*!
28 | DX Cluster Telnet window
29 | */
30 | class Telnet : public QWidget, public Ui::TelnetDialog {
31 | Q_OBJECT
32 |
33 | public:
34 | Telnet(QSettings &s, QWidget *parent = nullptr);
35 | ~Telnet();
36 |
37 | signals:
38 | void done(bool);
39 | void dxSpot(QByteArray, double);
40 |
41 | protected:
42 | void closeEvent(QCloseEvent *event);
43 |
44 | private slots:
45 | void connectTelnet();
46 | void disconnectTelnet();
47 | void sendText();
48 | void showText(QString txt);
49 |
50 | private:
51 | QList hosts;
52 | QString buffer;
53 | QSettings &settings;
54 | QtTelnet *telnet;
55 | };
56 | #endif // TELNET_H
57 |
--------------------------------------------------------------------------------
/so2sdr/utils.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef UTILS_H
20 | #define UTILS_H
21 |
22 | #include "hamlib/rig.h"
23 | #include "defines.h"
24 | #include
25 | #include
26 |
27 | /*!
28 | upper-case validator: converts all input to upper case
29 | */
30 | class UpperValidator : public QValidator {
31 | public:
32 | explicit UpperValidator(QObject *parent = nullptr);
33 | QValidator::State validate(QString &input, int &pos) const;
34 | };
35 |
36 | /*!
37 | time validator: requires time in format 0000 - 2359
38 | */
39 | class TimeValidator : public QValidator {
40 | public:
41 | explicit TimeValidator(QObject *parent = nullptr);
42 | void fixup(QString &input) const;
43 | QValidator::State validate(QString &input, int &pos) const;
44 | };
45 |
46 | int getBand(double f);
47 | QString dataDirectory();
48 | QString userDirectory();
49 | QByteArray getAdifMode(rmode_t mode);
50 | ModeTypes getAdifModeType(const QByteArray &mode);
51 | ModeTypes getModeType(rmode_t mode);
52 |
53 | #endif // UTILS_H
54 |
--------------------------------------------------------------------------------
/so2sdr/winkey.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef WINKEY_H
20 | #define WINKEY_H
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | /*!
27 | Winkey support class
28 | */
29 | class Winkey : public QObject {
30 | Q_OBJECT
31 |
32 | public:
33 | explicit Winkey(QSettings &s, QObject *parent = nullptr);
34 | ~Winkey();
35 | void loadbuff(QByteArray msg);
36 | bool isSending() const;
37 | void sendcw();
38 | void switchTransmit(int nrig);
39 | void setEchoMode(bool b);
40 | void setSpeed(int speed);
41 | bool winkeyIsOpen() const;
42 |
43 | signals:
44 | void cwCanceled();
45 | void finished();
46 | void textSent(const QString &t, int);
47 | void version(int ver);
48 | void winkeyTx(bool, int);
49 | void winkeyError(const QString &);
50 |
51 | public slots:
52 | void cancelcw();
53 | void openWinkey();
54 |
55 | private slots:
56 | void receive();
57 | void receiveInit();
58 |
59 | private:
60 | QSerialPort *winkeyPort;
61 | bool echoMode;
62 | bool ignoreEcho;
63 | bool sending;
64 | bool winkeyOpen;
65 | bool winkeySendingCmd;
66 | int nchar;
67 | int rigNum;
68 | int txPtr;
69 | int txRig;
70 | int winkeySpeedPot;
71 | int winkeyVersion;
72 | QByteArray sendBuff;
73 | QByteArray sent;
74 | QSettings &settings;
75 | void closeWinkey();
76 | void openWinkey2();
77 | void processEcho(unsigned char byte);
78 | };
79 |
80 | #endif // WINKEY_H
81 |
--------------------------------------------------------------------------------
/so2sdr/wsjtxdelegate.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 |
20 | #ifndef WSJTXDELEGATE_H
21 | #define WSJTXDELEGATE_H
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 |
29 | /*!
30 | subclass of delegate for displaying log in main window
31 | */
32 | class wsjtxDelegate : public QStyledItemDelegate {
33 | Q_OBJECT
34 |
35 | public:
36 | wsjtxDelegate();
37 |
38 | protected:
39 | void paint(QPainter *painter, const QStyleOptionViewItem &option,
40 | const QModelIndex &index) const;
41 | };
42 |
43 | #endif // WSJTXDELEGATE_H
44 |
--------------------------------------------------------------------------------
/so2sdr/wsjtxmessage.cpp:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #include "wsjtxmessage.h"
20 |
21 | WsjtxMessage::WsjtxMessage(QByteArray *data, QIODevice::OpenMode mode)
22 | : QDataStream(data, mode) {
23 | schema = 2;
24 | }
25 |
26 | void WsjtxMessage::startMessage(WsjtxMessageType type) {
27 | if (schema <= 1) {
28 | this->setVersion(QDataStream::Qt_5_0);
29 | }
30 | #if QT_VERSION >= 0x050200
31 | else if (schema <= 2) {
32 | this->setVersion(QDataStream::Qt_5_2);
33 | }
34 | #endif
35 | #if QT_VERSION >= 0x050400
36 | else if (schema <= 3) {
37 | this->setVersion(QDataStream::Qt_5_4);
38 | }
39 | #endif
40 | *this << magic << schema << static_cast(type)
41 | << QByteArray("SO2SDR");
42 | }
43 |
--------------------------------------------------------------------------------
/so2sdr/wsjtxmessage.h:
--------------------------------------------------------------------------------
1 | /*! Copyright 2010-2025 R. Torsten Clay N4OGW
2 |
3 | This file is part of so2sdr.
4 |
5 | so2sdr is free software: you can redistribute it and/or modify
6 | it under the terms of the GNU General Public License as published by
7 | the Free Software Foundation, either version 3 of the License, or
8 | any later version.
9 |
10 | so2sdr is distributed in the hope that it will be useful,
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | GNU General Public License for more details.
14 |
15 | You should have received a copy of the GNU General Public License
16 | along with so2sdr. If not, see .
17 |
18 | */
19 | #ifndef WSJTXMESSAGE_H
20 | #define WSJTXMESSAGE_H
21 |
22 | #include "udpreader.h"
23 | #include
24 | #include
25 | #include
26 |
27 | // for sending UDP data stream to wsjtx
28 | class WsjtxMessage : public QDataStream {
29 | public:
30 | explicit WsjtxMessage(QByteArray *data, QIODevice::OpenMode mode);
31 | void startMessage(WsjtxMessageType type);
32 | void setSchema(quint32 s) { schema = s; }
33 |
34 | private:
35 | quint32 schema;
36 | };
37 |
38 | #endif // WSJTXMESSAGE_H
39 |
--------------------------------------------------------------------------------
/windows/so2sdr-bandmap-2.0.5:
--------------------------------------------------------------------------------
1 | Name "so2sdr-bandmap-2.0.5"
2 |
3 | OutFile "so2sdr-bandmap-2.0.5.exe"
4 | InstallDir $PROGRAMFILES\so2sdr
5 |
6 | DirText "This will install so2sdr-bandmap on your computer. Choose a directory"
7 |
8 |
9 | Section "" ;No components page, name is not important
10 | SetOutPath $INSTDIR
11 | File so2sdr-bandmap/release/so2sdr-bandmap.exe
12 | File share/check.png
13 | File share/icon24x24.png
14 | File share/icon48x48.png
15 | File share/license.html
16 | File share/x.png
17 |
18 | SetOutPath $INSTDIR\so2sdr-bandmap-help
19 | File share/so2sdr-bandmap-help/afedri-setup.png
20 | File share/so2sdr-bandmap-help/bandmap-controls.png
21 | File share/so2sdr-bandmap-help/network-setup.png
22 | File share/so2sdr-bandmap-help/so2sdr-bandmap-help.html
23 | File share/so2sdr-bandmap-help/so2sdr-bandmap-setup.png
24 | File share/so2sdr-bandmap-help/soundcard-setup.png
25 |
26 |
27 | WriteUninstaller $INSTDIR\Uninstall.exe
28 | CreateDirectory "$SMPROGRAMS\N4OGW"
29 | CreateShortCut "$SMPROGRAMS\N4OGW\SO2SDR-Bandmap.lnk" "$INSTDIR\so2sdr-bandmap.exe"
30 |
31 | SectionEnd
32 |
33 | Section "Uninstall"
34 |
35 | Delete $INSTDIR\Uninstall.exe
36 | Delete $INSTDIR\so2sdr-bandmap.exe
37 | Delete $INSTDIR\check.png
38 | Delete $INSTDIR\icon24x24.png
39 | Delete $INSTDIR\icon48x48.png
40 | Delete $INSTDIR\license.html
41 | Delete $INSTDIR\x.png
42 |
43 | Delete $INSTDIR\so2sdr-bandmap-help
44 | Delete $INSTDIR\so2sdr-bandmap-help\afedri-setup.png
45 | Delete $INSTDIR\so2sdr-bandmap-help\bandmap-controls.png
46 | Delete $INSTDIR\so2sdr-bandmap-help\network-setup.png
47 | Delete $INSTDIR\so2sdr-bandmap-help\so2sdr-bandmap-help.html
48 | Delete $INSTDIR\so2sdr-bandmap-help\so2sdr-bandmap-setup.png
49 | Delete $INSTDIR\so2sdr-bandmap-help\soundcard-setup.png
50 | RMDIR $INSTDIR\so2sdr-bandmap-help
51 |
52 | RMDIR $INSTDIR
53 | Delete "$SMPROGRAMS\N4OGW\SO2SDR-Bandmap.lnk"
54 | RMDIR "$SMPROGRAMS\N4OGW"
55 |
56 | SectionEnd
57 |
--------------------------------------------------------------------------------