kopia lustrzana https://gitlab.com/eliggett/wfview
Merge branch 'master' into QT6.2
commit
0d9c7b5e30
|
@ -12,7 +12,7 @@ aboutbox::aboutbox(QWidget *parent) :
|
|||
ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
|
||||
ui->logoBtn->setStyleSheet("Text-align:left");
|
||||
|
||||
ui->topText->setText("wfview version 1.2d");
|
||||
ui->topText->setText("wfview version " + QString(WFVIEW_VERSION));
|
||||
|
||||
QString head = QString("<html><head></head><body>");
|
||||
QString copyright = QString("Copyright 2017-2021 Elliott H. Liggett, W6EL. All rights reserved. wfview source code is <a href=\"https://gitlab.com/eliggett/wfview/-/blob/master/LICENSE\">licensed</a> under the GNU GPLv3.");
|
||||
|
|
22
main.cpp
22
main.cpp
|
@ -37,7 +37,12 @@ int main(int argc, char *argv[])
|
|||
QString currentArg;
|
||||
|
||||
|
||||
const QString helpText = QString("\nUsage: -p --port /dev/port, -h --host remotehostname, -c --civ 0xAddr, -l --logfile filename.log, -s --settings filename.ini, -d --debug\n"); // TODO...
|
||||
const QString helpText = QString("\nUsage: -p --port /dev/port, -h --host remotehostname, -c --civ 0xAddr, -l --logfile filename.log, -s --settings filename.ini, -d --debug, -v --version\n"); // TODO...
|
||||
const QString version = QString("wfview version: %1 (Git:%2 on %3 at %4 by %5@%6)\nOperating System: %7 (%8)\nBuild Qt Version %9. Current Qt Version: %10\n")
|
||||
.arg(QString(WFVIEW_VERSION))
|
||||
.arg(GITSHORT).arg(__DATE__).arg(__TIME__).arg(UNAME).arg(HOST)
|
||||
.arg(QSysInfo::prettyProductName()).arg(QSysInfo::buildCpuArchitecture())
|
||||
.arg(QT_VERSION_STR).arg(qVersion());
|
||||
|
||||
for(int c=1; c<argc; c++)
|
||||
{
|
||||
|
@ -88,12 +93,21 @@ int main(int argc, char *argv[])
|
|||
c += 1;
|
||||
}
|
||||
}
|
||||
else if ((currentArg == "--help"))
|
||||
else if ((currentArg == "-?") || (currentArg == "--help"))
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
QMessageBox::information(0, "wfview help", helpText);
|
||||
#else
|
||||
std::cout << helpText.toStdString();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
else if ((currentArg == "-v") || (currentArg == "--version"))
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
QMessageBox::information(0, "wfview version", version);
|
||||
#else
|
||||
std::cout << version.toStdString();
|
||||
#endif
|
||||
return 0;
|
||||
} else {
|
||||
|
@ -117,9 +131,7 @@ int main(int argc, char *argv[])
|
|||
// Set handler
|
||||
qInstallMessageHandler(messageHandler);
|
||||
|
||||
qInfo(logSystem()) << QString("Starting wfview: build %1 on %2 at %3 by %5@%6").arg(GITSHORT).arg(__DATE__).arg(__TIME__).arg(UNAME).arg(HOST);
|
||||
qInfo(logSystem()) << QString("Operating System: %1 (%2)").arg(QSysInfo::prettyProductName()).arg(QSysInfo::buildCpuArchitecture());
|
||||
qInfo(logSystem()) << QString("Build Qt Version %1. Current Qt Version: %2").arg(QT_VERSION_STR).arg(qVersion());
|
||||
qInfo(logSystem()) << version;
|
||||
qDebug(logSystem()) << QString("SerialPortCL as set by parser: %1").arg(serialPortCL);
|
||||
qDebug(logSystem()) << QString("remote host as set by parser: %1").arg(hostCL);
|
||||
qDebug(logSystem()) << QString("CIV as set by parser: %1").arg(civCL);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
QToolTip {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
background-color: #5A7566;
|
||||
color: white;
|
||||
padding: 0px; /*remove padding, for fix combobox tooltip.*/
|
||||
|
@ -8,7 +8,7 @@ QToolTip {
|
|||
|
||||
QWidget {
|
||||
color: #eff0f1;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
selection-background-color: #3daee9;
|
||||
selection-color: #eff0f1;
|
||||
background-clip: border;
|
||||
|
@ -34,7 +34,7 @@ QCheckBox {
|
|||
}
|
||||
|
||||
QCheckBox:disabled {
|
||||
color: #76797C;
|
||||
color: #767676;
|
||||
}
|
||||
|
||||
QCheckBox::indicator,
|
||||
|
@ -105,7 +105,7 @@ QRadioButton {
|
|||
}
|
||||
|
||||
QRadioButton:disabled {
|
||||
color: #76797C;
|
||||
color: #767676;
|
||||
}
|
||||
|
||||
QRadioButton::indicator {
|
||||
|
@ -149,7 +149,7 @@ QRadioButton::indicator:unchecked:disabled {
|
|||
}
|
||||
|
||||
QMenuBar {
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
color: #eff0f1;
|
||||
}
|
||||
|
||||
|
@ -159,11 +159,11 @@ QMenuBar::item {
|
|||
|
||||
QMenuBar::item:selected {
|
||||
background: transparent;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QMenuBar::item:pressed {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
background-color: #3daee9;
|
||||
color: #eff0f1;
|
||||
margin-bottom: -1px;
|
||||
|
@ -171,7 +171,7 @@ QMenuBar::item:pressed {
|
|||
}
|
||||
|
||||
QMenu {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
color: #eff0f1;
|
||||
margin: 2px;
|
||||
}
|
||||
|
@ -248,11 +248,11 @@ QMenu::right-arrow {
|
|||
|
||||
QWidget:disabled {
|
||||
color: #454545;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
}
|
||||
|
||||
QAbstractItemView {
|
||||
alternate-background-color: #31363b;
|
||||
alternate-background-color: #313131;
|
||||
color: #eff0f1;
|
||||
border: 1px solid #3A3939;
|
||||
border-radius: 2px;
|
||||
|
@ -274,7 +274,7 @@ QLineEdit {
|
|||
background-color: #232629;
|
||||
padding: 5px;
|
||||
border-style: solid;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-radius: 2px;
|
||||
color: #eff0f1;
|
||||
}
|
||||
|
@ -284,7 +284,7 @@ QAbstractItemView QLineEdit {
|
|||
}
|
||||
|
||||
QGroupBox {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-radius: 2px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
@ -299,7 +299,7 @@ QGroupBox::title {
|
|||
|
||||
QAbstractScrollArea {
|
||||
border-radius: 2px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
@ -426,7 +426,7 @@ QScrollBar::sub-page:vertical {
|
|||
QTextEdit {
|
||||
background-color: #232629;
|
||||
color: #eff0f1;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QPlainTextEdit {
|
||||
|
@ -434,14 +434,14 @@ QPlainTextEdit {
|
|||
;
|
||||
color: #eff0f1;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #76797C;
|
||||
background-color: #767676;
|
||||
color: #eff0f1;
|
||||
padding: 5px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QSizeGrip {
|
||||
|
@ -451,24 +451,24 @@ QSizeGrip {
|
|||
}
|
||||
|
||||
QMainWindow::separator {
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
color: white;
|
||||
padding-left: 4px;
|
||||
spacing: 2px;
|
||||
border: 1px dashed #76797C;
|
||||
border: 1px dashed #767676;
|
||||
}
|
||||
|
||||
QMainWindow::separator:hover {
|
||||
background-color: #787876;
|
||||
color: white;
|
||||
padding-left: 4px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
spacing: 2px;
|
||||
}
|
||||
|
||||
QMenu::separator {
|
||||
height: 1px;
|
||||
background-color: #76797C;
|
||||
background-color: #767676;
|
||||
color: white;
|
||||
padding-left: 4px;
|
||||
margin-left: 10px;
|
||||
|
@ -477,12 +477,12 @@ QMenu::separator {
|
|||
|
||||
QFrame {
|
||||
border-radius: 2px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QFrame[frameShape="0"] {
|
||||
border-radius: 2px;
|
||||
border: 1px transparent #76797C;
|
||||
border: 1px transparent #767676;
|
||||
}
|
||||
|
||||
QStackedWidget {
|
||||
|
@ -491,7 +491,7 @@ QStackedWidget {
|
|||
|
||||
QToolBar {
|
||||
border: 1px transparent #393838;
|
||||
background: 1px solid #31363b;
|
||||
background: 1px solid #313131;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
@ -512,14 +512,14 @@ QToolBar::separator:vertical {
|
|||
}
|
||||
|
||||
QToolButton#qt_toolbar_ext_button {
|
||||
background: #58595a
|
||||
background: #585858
|
||||
}
|
||||
|
||||
QPushButton {
|
||||
color: #eff0f1;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
border-width: 1px;
|
||||
border-color: #76797C;
|
||||
border-color: #767676;
|
||||
border-style: solid;
|
||||
padding: 5px;
|
||||
border-radius: 2px;
|
||||
|
@ -527,7 +527,7 @@ QPushButton {
|
|||
}
|
||||
|
||||
QPushButton:disabled {
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
border-width: 1px;
|
||||
border-color: #454545;
|
||||
border-style: solid;
|
||||
|
@ -553,14 +553,14 @@ QPushButton:pressed {
|
|||
QComboBox {
|
||||
selection-background-color: #3daee9;
|
||||
border-style: solid;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-radius: 2px;
|
||||
padding: 5px;
|
||||
min-width: 75px;
|
||||
}
|
||||
|
||||
QPushButton:checked {
|
||||
background-color: #76797C;
|
||||
background-color: #767676;
|
||||
border-color: #6A6969;
|
||||
}
|
||||
|
||||
|
@ -585,7 +585,7 @@ QComboBox:on {
|
|||
QComboBox QAbstractItemView {
|
||||
background-color: #232629;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
selection-background-color: #18465d;
|
||||
}
|
||||
|
||||
|
@ -612,7 +612,7 @@ QComboBox::down-arrow:focus {
|
|||
|
||||
QAbstractSpinBox {
|
||||
padding: 5px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
background-color: #232629;
|
||||
color: #eff0f1;
|
||||
border-radius: 2px;
|
||||
|
@ -664,7 +664,7 @@ QTabWidget {
|
|||
}
|
||||
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
@ -702,9 +702,9 @@ QTabBar::close-button:pressed {
|
|||
|
||||
QTabBar::tab:top {
|
||||
color: #eff0f1;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-bottom: 1px transparent black;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
padding: 5px;
|
||||
min-width: 50px;
|
||||
border-top-left-radius: 2px;
|
||||
|
@ -714,7 +714,7 @@ QTabBar::tab:top {
|
|||
QTabBar::tab:top:selected {
|
||||
color: #eff0f1;
|
||||
background-color: #54575B;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-bottom: 2px solid #3daee9;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
|
@ -729,9 +729,9 @@ QTabBar::tab:top:!selected:hover {
|
|||
|
||||
QTabBar::tab:bottom {
|
||||
color: #eff0f1;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-top: 1px transparent black;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
padding: 5px;
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
|
@ -741,7 +741,7 @@ QTabBar::tab:bottom {
|
|||
QTabBar::tab:bottom:selected {
|
||||
color: #eff0f1;
|
||||
background-color: #54575B;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-top: 2px solid #3daee9;
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
|
@ -756,9 +756,9 @@ QTabBar::tab:bottom:!selected:hover {
|
|||
|
||||
QTabBar::tab:left {
|
||||
color: #eff0f1;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-left: 1px transparent black;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
padding: 5px;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
|
@ -768,7 +768,7 @@ QTabBar::tab:left {
|
|||
QTabBar::tab:left:selected {
|
||||
color: #eff0f1;
|
||||
background-color: #54575B;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-left: 2px solid #3daee9;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
|
@ -783,9 +783,9 @@ QTabBar::tab:left:!selected:hover {
|
|||
|
||||
QTabBar::tab:right {
|
||||
color: #eff0f1;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-right: 1px transparent black;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
padding: 5px;
|
||||
border-top-left-radius: 2px;
|
||||
border-bottom-left-radius: 2px;
|
||||
|
@ -795,7 +795,7 @@ QTabBar::tab:right {
|
|||
QTabBar::tab:right:selected {
|
||||
color: #eff0f1;
|
||||
background-color: #54575B;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-right: 2px solid #3daee9;
|
||||
border-top-left-radius: 2px;
|
||||
border-bottom-left-radius: 2px;
|
||||
|
@ -822,7 +822,7 @@ QTabBar QToolButton::left-arrow:disabled {
|
|||
}
|
||||
|
||||
QDockWidget {
|
||||
background: #31363b;
|
||||
background: #313131;
|
||||
border: 1px solid #403F3F;
|
||||
titlebar-close-icon: url(:/qss_icons/rc/close.png);
|
||||
titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
|
||||
|
@ -848,7 +848,7 @@ QDockWidget::float-button:pressed {
|
|||
|
||||
QTreeView,
|
||||
QListView {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
background-color: #232629;
|
||||
}
|
||||
|
||||
|
@ -980,7 +980,7 @@ QSlider::handle:vertical {
|
|||
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
border: 1px transparent #76797C;
|
||||
border: 1px transparent #767676;
|
||||
border-radius: 2px;
|
||||
margin: 3px;
|
||||
padding: 5px;
|
||||
|
@ -990,7 +990,7 @@ QToolButton[popupMode="1"] {
|
|||
/* only for MenuButtonPopup */
|
||||
padding-right: 20px;
|
||||
/* make way for the popup button */
|
||||
border: 1px #76797C;
|
||||
border: 1px #767676;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
|
@ -998,7 +998,7 @@ QToolButton[popupMode="2"] {
|
|||
/* only for InstantPopup */
|
||||
padding-right: 10px;
|
||||
/* make way for the popup button */
|
||||
border: 1px #76797C;
|
||||
border: 1px #767676;
|
||||
}
|
||||
|
||||
QToolButton:hover,
|
||||
|
@ -1030,7 +1030,7 @@ QToolButton::menu-indicator {
|
|||
/* the subcontrols below are used only in the MenuButtonPopup mode */
|
||||
|
||||
QToolButton::menu-button {
|
||||
border: 1px transparent #76797C;
|
||||
border: 1px transparent #767676;
|
||||
border-top-right-radius: 6px;
|
||||
border-bottom-right-radius: 6px;
|
||||
/* 16px width + 4px for border = 20px allocated above */
|
||||
|
@ -1043,7 +1043,7 @@ QToolButton::menu-arrow {
|
|||
}
|
||||
|
||||
QToolButton::menu-arrow:open {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QPushButton::menu-indicator {
|
||||
|
@ -1053,8 +1053,8 @@ QPushButton::menu-indicator {
|
|||
}
|
||||
|
||||
QTableView {
|
||||
border: 1px solid #76797C;
|
||||
gridline-color: #31363b;
|
||||
border: 1px solid #767676;
|
||||
gridline-color: #313131;
|
||||
background-color: #232629;
|
||||
}
|
||||
|
||||
|
@ -1078,7 +1078,7 @@ QListView::item:selected:active {
|
|||
}
|
||||
|
||||
QHeaderView {
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
border: 1px transparent;
|
||||
border-radius: 0px;
|
||||
margin: 0px;
|
||||
|
@ -1086,17 +1086,17 @@ QHeaderView {
|
|||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
color: #eff0f1;
|
||||
padding: 5px;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-radius: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
QHeaderView::section::vertical::first,
|
||||
QHeaderView::section::vertical::only-one {
|
||||
border-top: 1px solid #76797C;
|
||||
border-top: 1px solid #767676;
|
||||
}
|
||||
|
||||
QHeaderView::section::vertical {
|
||||
|
@ -1105,7 +1105,7 @@ QHeaderView::section::vertical {
|
|||
|
||||
QHeaderView::section::horizontal::first,
|
||||
QHeaderView::section::horizontal::only-one {
|
||||
border-left: 1px solid #76797C;
|
||||
border-left: 1px solid #767676;
|
||||
}
|
||||
|
||||
QHeaderView::section::horizontal {
|
||||
|
@ -1129,8 +1129,8 @@ QHeaderView::up-arrow {
|
|||
}
|
||||
|
||||
QTableCornerButton::section {
|
||||
background-color: #31363b;
|
||||
border: 1px transparent #76797C;
|
||||
background-color: #313131;
|
||||
border: 1px transparent #767676;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
|
@ -1141,9 +1141,9 @@ QToolBox {
|
|||
|
||||
QToolBox::tab {
|
||||
color: #eff0f1;
|
||||
background-color: #31363b;
|
||||
border: 1px solid #76797C;
|
||||
border-bottom: 1px transparent #31363b;
|
||||
background-color: #313131;
|
||||
border: 1px solid #767676;
|
||||
border-bottom: 1px transparent #313131;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
@ -1151,7 +1151,7 @@ QToolBox::tab {
|
|||
QToolBox::tab:selected {
|
||||
/* italicize selected tabs */
|
||||
font: italic;
|
||||
background-color: #31363b;
|
||||
background-color: #313131;
|
||||
border-color: #3daee9;
|
||||
}
|
||||
|
||||
|
@ -1161,16 +1161,16 @@ QStatusBar::item {
|
|||
|
||||
QFrame[height="3"],
|
||||
QFrame[width="3"] {
|
||||
background-color: #76797C;
|
||||
background-color: #767676;
|
||||
}
|
||||
|
||||
QSplitter::handle {
|
||||
border: 1px dashed #76797C;
|
||||
border: 1px dashed #767676;
|
||||
}
|
||||
|
||||
QSplitter::handle:hover {
|
||||
background-color: #787876;
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
}
|
||||
|
||||
QSplitter::handle:horizontal {
|
||||
|
@ -1182,7 +1182,7 @@ QSplitter::handle:vertical {
|
|||
}
|
||||
|
||||
QProgressBar {
|
||||
border: 1px solid #76797C;
|
||||
border: 1px solid #767676;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
rigCommander::rigCommander()
|
||||
{
|
||||
rigState.mutex = new QMutex();
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.filter = 0;
|
||||
rigState.mode = 0;
|
||||
rigState.ptt = 0;
|
||||
|
@ -33,6 +35,7 @@ rigCommander::rigCommander()
|
|||
rigCommander::~rigCommander()
|
||||
{
|
||||
closeComm();
|
||||
delete rigState.mutex;
|
||||
}
|
||||
|
||||
|
||||
|
@ -569,12 +572,16 @@ void rigCommander::setFrequency(unsigned char vfo, freqt freq)
|
|||
|
||||
cmdPayload.append(freqPayload);
|
||||
if (vfo == 0) {
|
||||
rigState.mutex->lock();
|
||||
rigState.vfoAFreq = freq;
|
||||
rigState.mutex->unlock();
|
||||
cmdPayload.prepend('\x00');
|
||||
}
|
||||
else
|
||||
{
|
||||
rigState.mutex->lock();
|
||||
rigState.vfoBFreq = freq;
|
||||
rigState.mutex->unlock();
|
||||
cmdPayload.prepend(vfo);
|
||||
cmdPayload.prepend('\x25');
|
||||
}
|
||||
|
@ -702,6 +709,8 @@ void rigCommander::setMode(mode_info m)
|
|||
payload.append(m.filter);
|
||||
|
||||
prepDataAndSend(payload);
|
||||
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.mode = m.reg;
|
||||
rigState.filter = m.filter;
|
||||
}
|
||||
|
@ -733,6 +742,7 @@ void rigCommander::setMode(unsigned char mode, unsigned char modeFilter)
|
|||
}
|
||||
|
||||
prepDataAndSend(payload);
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.mode = mode;
|
||||
rigState.filter = modeFilter;
|
||||
|
||||
|
@ -753,6 +763,7 @@ void rigCommander::setDataMode(bool dataOn, unsigned char filter)
|
|||
payload.append("\x00\x00", 2); // data mode off, bandwidth not defined per ICD.
|
||||
}
|
||||
prepDataAndSend(payload);
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.datamode = dataOn;
|
||||
}
|
||||
|
||||
|
@ -1020,6 +1031,7 @@ void rigCommander::setPTT(bool pttOn)
|
|||
QByteArray payload("\x1C\x00", 2);
|
||||
payload.append((char)pttOn);
|
||||
prepDataAndSend(payload);
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.ptt = pttOn;
|
||||
}
|
||||
}
|
||||
|
@ -1241,16 +1253,22 @@ void rigCommander::parseCommand()
|
|||
break;
|
||||
case '\x0F':
|
||||
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
|
||||
rigState.mutex->lock();
|
||||
rigState.duplex = (duplexMode)(unsigned char)payloadIn[1];
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x11':
|
||||
emit haveAttenuator((unsigned char)payloadIn.at(1));
|
||||
rigState.mutex->lock();
|
||||
rigState.attenuator = (unsigned char)payloadIn.at(1);
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x12':
|
||||
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));
|
||||
rigState.mutex->lock();
|
||||
rigState.antenna = (unsigned char)payloadIn.at(1);
|
||||
rigState.rxAntenna = (bool)payloadIn.at(2);
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x14':
|
||||
// read levels
|
||||
|
@ -1346,7 +1364,6 @@ void rigCommander::parseLevels()
|
|||
// "INDEX: 00 01 02 03 04 "
|
||||
// "DATA: 14 02 00 78 fd "
|
||||
|
||||
|
||||
if(payloadIn[0] == '\x14')
|
||||
{
|
||||
switch(payloadIn[1])
|
||||
|
@ -1355,18 +1372,24 @@ void rigCommander::parseLevels()
|
|||
// AF level - ignore if LAN connection.
|
||||
if (udp == Q_NULLPTR) {
|
||||
emit haveAfGain(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.afGain = level;
|
||||
rigState.mutex->unlock();
|
||||
}
|
||||
break;
|
||||
case '\x02':
|
||||
// RX RF Gain
|
||||
emit haveRfGain(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.rfGain = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x03':
|
||||
// Squelch level
|
||||
emit haveSql(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.squelch = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x07':
|
||||
// Twin BPF Inner, or, IF-Shift level
|
||||
|
@ -1385,12 +1408,16 @@ void rigCommander::parseLevels()
|
|||
case '\x0A':
|
||||
// TX RF level
|
||||
emit haveTxPower(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.txPower = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x0B':
|
||||
// Mic Gain
|
||||
emit haveMicGain(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.micGain = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x0C':
|
||||
// CW Keying Speed - ignore for now
|
||||
|
@ -1401,7 +1428,9 @@ void rigCommander::parseLevels()
|
|||
case '\x0E':
|
||||
// compressor level
|
||||
emit haveCompLevel(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.compLevel = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x12':
|
||||
// NB level - ignore for now
|
||||
|
@ -1409,17 +1438,23 @@ void rigCommander::parseLevels()
|
|||
case '\x15':
|
||||
// monitor level
|
||||
emit haveMonitorLevel(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.monitorLevel = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x16':
|
||||
// VOX gain
|
||||
emit haveVoxGain(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.voxGain = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x17':
|
||||
// anti-VOX gain
|
||||
emit haveAntiVoxGain(level);
|
||||
rigState.mutex->lock();
|
||||
rigState.antiVoxGain = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1437,42 +1472,58 @@ void rigCommander::parseLevels()
|
|||
case '\x02':
|
||||
// S-Meter
|
||||
emit haveMeter(meterS, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.sMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x04':
|
||||
// Center (IC-R8600)
|
||||
emit haveMeter(meterCenter, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.sMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x11':
|
||||
// RF-Power meter
|
||||
emit haveMeter(meterPower, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.powerMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x12':
|
||||
// SWR
|
||||
emit haveMeter(meterSWR, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.swrMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x13':
|
||||
// ALC
|
||||
emit haveMeter(meterALC, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.alcMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x14':
|
||||
// COMP dB reduction
|
||||
emit haveMeter(meterComp, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.compMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x15':
|
||||
// VD (12V)
|
||||
emit haveMeter(meterVoltage, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.voltageMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x16':
|
||||
// ID
|
||||
emit haveMeter(meterCurrent, level);
|
||||
rigState.mutex->lock();
|
||||
rigState.currentMeter = level;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2379,6 +2430,7 @@ void rigCommander::parsePTT()
|
|||
// PTT on
|
||||
emit havePTTStatus(true);
|
||||
}
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
rigState.ptt = (bool)payloadIn[2];
|
||||
|
||||
}
|
||||
|
@ -2398,6 +2450,7 @@ void rigCommander::parseRegisters1A()
|
|||
|
||||
// "INDEX: 00 01 02 03 04 "
|
||||
// "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected)
|
||||
QMutexLocker locker(rigState.mutex);
|
||||
|
||||
switch(payloadIn[01])
|
||||
{
|
||||
|
@ -2440,24 +2493,32 @@ void rigCommander::parseRegister1B()
|
|||
// "Repeater tone"
|
||||
tone = decodeTone(payloadIn);
|
||||
emit haveTone(tone);
|
||||
rigState.mutex->lock();
|
||||
rigState.ctcss = tone;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x01':
|
||||
// "TSQL tone"
|
||||
tone = decodeTone(payloadIn);
|
||||
emit haveTSQL(tone);
|
||||
rigState.mutex->lock();
|
||||
rigState.tsql = tone;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x02':
|
||||
// DTCS (DCS)
|
||||
tone = decodeTone(payloadIn, tinv, rinv);
|
||||
emit haveDTCS(tone, tinv, rinv);
|
||||
rigState.mutex->lock();
|
||||
rigState.dtcs = tone;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
case '\x07':
|
||||
// "CSQL code (DV mode)"
|
||||
tone = decodeTone(payloadIn);
|
||||
rigState.mutex->lock();
|
||||
rigState.csql = tone;
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -2469,6 +2530,7 @@ void rigCommander::parseRegister16()
|
|||
//"INDEX: 00 01 02 03 "
|
||||
//"DATA: 16 5d 00 fd "
|
||||
// ^-- mode info here
|
||||
|
||||
switch(payloadIn.at(1))
|
||||
{
|
||||
case '\x5d':
|
||||
|
@ -2477,7 +2539,9 @@ void rigCommander::parseRegister16()
|
|||
case '\x02':
|
||||
// Preamp
|
||||
emit havePreamp((unsigned char)payloadIn.at(2));
|
||||
rigState.mutex->lock();
|
||||
rigState.preamp = (unsigned char)payloadIn.at(2);
|
||||
rigState.mutex->unlock();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -3790,7 +3854,10 @@ void rigCommander::parseFrequency()
|
|||
|
||||
freq.MHzDouble = frequencyMhz;
|
||||
|
||||
rigState.mutex->lock();
|
||||
rigState.vfoAFreq = freq;
|
||||
rigState.mutex->unlock();
|
||||
|
||||
emit haveFrequency(freq);
|
||||
}
|
||||
|
||||
|
@ -3868,8 +3935,10 @@ void rigCommander::parseMode()
|
|||
} else {
|
||||
filter = 0;
|
||||
}
|
||||
rigState.mutex->lock();
|
||||
rigState.mode = (unsigned char)payloadIn[01];
|
||||
rigState.filter = filter;
|
||||
rigState.mutex->unlock();
|
||||
emit haveMode((unsigned char)payloadIn[01], filter);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#define RIGCOMMANDER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMutex>
|
||||
#include <QMutexLocker>
|
||||
#include <QDebug>
|
||||
|
||||
#include "commhandler.h"
|
||||
|
@ -60,6 +62,7 @@ struct timekind {
|
|||
};
|
||||
|
||||
struct rigStateStruct {
|
||||
QMutex *mutex;
|
||||
freqt vfoAFreq;
|
||||
freqt vfoBFreq;
|
||||
unsigned char currentVfo;
|
||||
|
|
|
@ -175,7 +175,9 @@ void rigCtlClient::socketReadyRead()
|
|||
|
||||
QStringList command = commandBuffer.mid(num).split(" ");
|
||||
|
||||
if (command[0] == '\xf0' || command[0] == "chk_vfo")
|
||||
QMutexLocker locker(rigState->mutex);
|
||||
|
||||
if (command[0] == 0xf0 || command[0] == "chk_vfo")
|
||||
{
|
||||
QString resp;
|
||||
if (longReply) {
|
||||
|
|
|
@ -47,7 +47,7 @@ void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value)
|
|||
unsigned char outer = ui->TPBFOuterSlider->value();
|
||||
int shift = value - previousIFShift;
|
||||
inner = qMax( 0, qMin(255,int (inner + shift)) );
|
||||
outer =qMax( 0, qMin(255,int (outer + shift)) );
|
||||
outer = qMax( 0, qMin(255,int (outer + shift)) );
|
||||
|
||||
ui->TPBFInnerSlider->setValue(inner);
|
||||
ui->TPBFOuterSlider->setValue(outer);
|
||||
|
|
20
wfmain.cpp
20
wfmain.cpp
|
@ -2257,14 +2257,22 @@ void wfmain:: getInitialRigState()
|
|||
issueDelayedCommand(cmdGetMode);
|
||||
|
||||
// From left to right in the UI:
|
||||
if (rigCaps.hasTransmit)
|
||||
{
|
||||
issueDelayedCommand(cmdGetDataMode);
|
||||
issueDelayedCommand(cmdGetModInput);
|
||||
issueDelayedCommand(cmdGetModDataInput);
|
||||
}
|
||||
issueDelayedCommand(cmdGetRxGain);
|
||||
issueDelayedCommand(cmdGetAfGain);
|
||||
issueDelayedCommand(cmdGetSql);
|
||||
|
||||
if (rigCaps.hasTransmit)
|
||||
{
|
||||
issueDelayedCommand(cmdGetTxPower);
|
||||
issueDelayedCommand(cmdGetCurrentModLevel); // level for currently selected mod sources
|
||||
}
|
||||
|
||||
issueDelayedCommand(cmdGetSpectrumRefLevel);
|
||||
issueDelayedCommand(cmdGetDuplexMode);
|
||||
|
||||
|
@ -2273,8 +2281,12 @@ void wfmain:: getInitialRigState()
|
|||
issueDelayedCommand(cmdDispEnable);
|
||||
issueDelayedCommand(cmdSpecOn);
|
||||
}
|
||||
|
||||
if (rigCaps.hasTransmit)
|
||||
{
|
||||
issueDelayedCommand(cmdGetModInput);
|
||||
issueDelayedCommand(cmdGetModDataInput);
|
||||
}
|
||||
|
||||
if(rigCaps.hasCTCSS)
|
||||
{
|
||||
|
@ -3547,8 +3559,10 @@ void wfmain::receiveMode(unsigned char mode, unsigned char filter)
|
|||
|
||||
// Note: we need to know if the DATA mode is active to reach mode-D
|
||||
// some kind of queued query:
|
||||
if(rigCaps.hasDataModes)
|
||||
if (rigCaps.hasDataModes && rigCaps.hasTransmit)
|
||||
{
|
||||
issueDelayedCommand(cmdGetDataMode);
|
||||
}
|
||||
}
|
||||
|
||||
void wfmain::receiveDataModeStatus(bool dataEnabled)
|
||||
|
@ -5525,8 +5539,8 @@ void wfmain::on_debugBtn_clicked()
|
|||
{
|
||||
qInfo(logSystem()) << "Debug button pressed.";
|
||||
// issueDelayedCommand(cmdGetRigID);
|
||||
emit getRigCIV();
|
||||
//trxadj->show();
|
||||
//emit getRigCIV();
|
||||
trxadj->show();
|
||||
//setRadioTimeDatePrep();
|
||||
//wf->setInteraction(QCP::iRangeZoom, true);
|
||||
//wf->setInteraction(QCP::iRangeDrag, true);
|
||||
|
|
31
wfmain.ui
31
wfmain.ui
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>946</width>
|
||||
<height>582</height>
|
||||
<width>948</width>
|
||||
<height>554</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -2684,6 +2684,12 @@
|
|||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="audioOutputCombo">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Audio Output Selector</string>
|
||||
</property>
|
||||
|
@ -2698,11 +2704,30 @@
|
|||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="audioInputCombo">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Audio Input Selector</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_8">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -2840,7 +2865,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>946</width>
|
||||
<width>948</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
|
@ -11,6 +11,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
|
|||
TARGET = wfview
|
||||
TEMPLATE = app
|
||||
|
||||
DEFINES += WFVIEW_VERSION=\\\"1.2d\\\"
|
||||
|
||||
CONFIG(debug, release|debug) {
|
||||
# For Debug builds only:
|
||||
QMAKE_CXXFLAGS += -faligned-new
|
||||
|
|
Ładowanie…
Reference in New Issue