Merge branch 'master' into QT6.2

half-duplex
Phil Taylor 2021-12-01 10:24:42 +00:00
commit 0d9c7b5e30
10 zmienionych plików z 218 dodań i 91 usunięć

Wyświetl plik

@ -12,7 +12,7 @@ aboutbox::aboutbox(QWidget *parent) :
ui->logoBtn->setIcon(QIcon(":resources/wfview.png")); ui->logoBtn->setIcon(QIcon(":resources/wfview.png"));
ui->logoBtn->setStyleSheet("Text-align:left"); 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 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."); 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.");

Wyświetl plik

@ -37,7 +37,12 @@ int main(int argc, char *argv[])
QString currentArg; 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++) for(int c=1; c<argc; c++)
{ {
@ -88,12 +93,21 @@ int main(int argc, char *argv[])
c += 1; c += 1;
} }
} }
else if ((currentArg == "--help")) else if ((currentArg == "-?") || (currentArg == "--help"))
{ {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
QMessageBox::information(0, "wfview help", helpText); QMessageBox::information(0, "wfview help", helpText);
#else #else
std::cout << helpText.toStdString(); 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 #endif
return 0; return 0;
} else { } else {
@ -117,9 +131,7 @@ int main(int argc, char *argv[])
// Set handler // Set handler
qInstallMessageHandler(messageHandler); 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()) << version;
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());
qDebug(logSystem()) << QString("SerialPortCL as set by parser: %1").arg(serialPortCL); 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("remote host as set by parser: %1").arg(hostCL);
qDebug(logSystem()) << QString("CIV as set by parser: %1").arg(civCL); qDebug(logSystem()) << QString("CIV as set by parser: %1").arg(civCL);

Wyświetl plik

@ -1,5 +1,5 @@
QToolTip { QToolTip {
border: 1px solid #76797C; border: 1px solid #767676;
background-color: #5A7566; background-color: #5A7566;
color: white; color: white;
padding: 0px; /*remove padding, for fix combobox tooltip.*/ padding: 0px; /*remove padding, for fix combobox tooltip.*/
@ -8,7 +8,7 @@ QToolTip {
QWidget { QWidget {
color: #eff0f1; color: #eff0f1;
background-color: #31363b; background-color: #313131;
selection-background-color: #3daee9; selection-background-color: #3daee9;
selection-color: #eff0f1; selection-color: #eff0f1;
background-clip: border; background-clip: border;
@ -34,7 +34,7 @@ QCheckBox {
} }
QCheckBox:disabled { QCheckBox:disabled {
color: #76797C; color: #767676;
} }
QCheckBox::indicator, QCheckBox::indicator,
@ -105,7 +105,7 @@ QRadioButton {
} }
QRadioButton:disabled { QRadioButton:disabled {
color: #76797C; color: #767676;
} }
QRadioButton::indicator { QRadioButton::indicator {
@ -149,7 +149,7 @@ QRadioButton::indicator:unchecked:disabled {
} }
QMenuBar { QMenuBar {
background-color: #31363b; background-color: #313131;
color: #eff0f1; color: #eff0f1;
} }
@ -159,11 +159,11 @@ QMenuBar::item {
QMenuBar::item:selected { QMenuBar::item:selected {
background: transparent; background: transparent;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QMenuBar::item:pressed { QMenuBar::item:pressed {
border: 1px solid #76797C; border: 1px solid #767676;
background-color: #3daee9; background-color: #3daee9;
color: #eff0f1; color: #eff0f1;
margin-bottom: -1px; margin-bottom: -1px;
@ -171,7 +171,7 @@ QMenuBar::item:pressed {
} }
QMenu { QMenu {
border: 1px solid #76797C; border: 1px solid #767676;
color: #eff0f1; color: #eff0f1;
margin: 2px; margin: 2px;
} }
@ -248,11 +248,11 @@ QMenu::right-arrow {
QWidget:disabled { QWidget:disabled {
color: #454545; color: #454545;
background-color: #31363b; background-color: #313131;
} }
QAbstractItemView { QAbstractItemView {
alternate-background-color: #31363b; alternate-background-color: #313131;
color: #eff0f1; color: #eff0f1;
border: 1px solid #3A3939; border: 1px solid #3A3939;
border-radius: 2px; border-radius: 2px;
@ -274,7 +274,7 @@ QLineEdit {
background-color: #232629; background-color: #232629;
padding: 5px; padding: 5px;
border-style: solid; border-style: solid;
border: 1px solid #76797C; border: 1px solid #767676;
border-radius: 2px; border-radius: 2px;
color: #eff0f1; color: #eff0f1;
} }
@ -284,7 +284,7 @@ QAbstractItemView QLineEdit {
} }
QGroupBox { QGroupBox {
border: 1px solid #76797C; border: 1px solid #767676;
border-radius: 2px; border-radius: 2px;
margin-top: 20px; margin-top: 20px;
} }
@ -299,7 +299,7 @@ QGroupBox::title {
QAbstractScrollArea { QAbstractScrollArea {
border-radius: 2px; border-radius: 2px;
border: 1px solid #76797C; border: 1px solid #767676;
background-color: transparent; background-color: transparent;
} }
@ -426,7 +426,7 @@ QScrollBar::sub-page:vertical {
QTextEdit { QTextEdit {
background-color: #232629; background-color: #232629;
color: #eff0f1; color: #eff0f1;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QPlainTextEdit { QPlainTextEdit {
@ -434,14 +434,14 @@ QPlainTextEdit {
; ;
color: #eff0f1; color: #eff0f1;
border-radius: 2px; border-radius: 2px;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QHeaderView::section { QHeaderView::section {
background-color: #76797C; background-color: #767676;
color: #eff0f1; color: #eff0f1;
padding: 5px; padding: 5px;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QSizeGrip { QSizeGrip {
@ -451,24 +451,24 @@ QSizeGrip {
} }
QMainWindow::separator { QMainWindow::separator {
background-color: #31363b; background-color: #313131;
color: white; color: white;
padding-left: 4px; padding-left: 4px;
spacing: 2px; spacing: 2px;
border: 1px dashed #76797C; border: 1px dashed #767676;
} }
QMainWindow::separator:hover { QMainWindow::separator:hover {
background-color: #787876; background-color: #787876;
color: white; color: white;
padding-left: 4px; padding-left: 4px;
border: 1px solid #76797C; border: 1px solid #767676;
spacing: 2px; spacing: 2px;
} }
QMenu::separator { QMenu::separator {
height: 1px; height: 1px;
background-color: #76797C; background-color: #767676;
color: white; color: white;
padding-left: 4px; padding-left: 4px;
margin-left: 10px; margin-left: 10px;
@ -477,12 +477,12 @@ QMenu::separator {
QFrame { QFrame {
border-radius: 2px; border-radius: 2px;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QFrame[frameShape="0"] { QFrame[frameShape="0"] {
border-radius: 2px; border-radius: 2px;
border: 1px transparent #76797C; border: 1px transparent #767676;
} }
QStackedWidget { QStackedWidget {
@ -491,7 +491,7 @@ QStackedWidget {
QToolBar { QToolBar {
border: 1px transparent #393838; border: 1px transparent #393838;
background: 1px solid #31363b; background: 1px solid #313131;
font-weight: bold; font-weight: bold;
} }
@ -512,14 +512,14 @@ QToolBar::separator:vertical {
} }
QToolButton#qt_toolbar_ext_button { QToolButton#qt_toolbar_ext_button {
background: #58595a background: #585858
} }
QPushButton { QPushButton {
color: #eff0f1; color: #eff0f1;
background-color: #31363b; background-color: #313131;
border-width: 1px; border-width: 1px;
border-color: #76797C; border-color: #767676;
border-style: solid; border-style: solid;
padding: 5px; padding: 5px;
border-radius: 2px; border-radius: 2px;
@ -527,7 +527,7 @@ QPushButton {
} }
QPushButton:disabled { QPushButton:disabled {
background-color: #31363b; background-color: #313131;
border-width: 1px; border-width: 1px;
border-color: #454545; border-color: #454545;
border-style: solid; border-style: solid;
@ -553,14 +553,14 @@ QPushButton:pressed {
QComboBox { QComboBox {
selection-background-color: #3daee9; selection-background-color: #3daee9;
border-style: solid; border-style: solid;
border: 1px solid #76797C; border: 1px solid #767676;
border-radius: 2px; border-radius: 2px;
padding: 5px; padding: 5px;
min-width: 75px; min-width: 75px;
} }
QPushButton:checked { QPushButton:checked {
background-color: #76797C; background-color: #767676;
border-color: #6A6969; border-color: #6A6969;
} }
@ -585,7 +585,7 @@ QComboBox:on {
QComboBox QAbstractItemView { QComboBox QAbstractItemView {
background-color: #232629; background-color: #232629;
border-radius: 2px; border-radius: 2px;
border: 1px solid #76797C; border: 1px solid #767676;
selection-background-color: #18465d; selection-background-color: #18465d;
} }
@ -612,7 +612,7 @@ QComboBox::down-arrow:focus {
QAbstractSpinBox { QAbstractSpinBox {
padding: 5px; padding: 5px;
border: 1px solid #76797C; border: 1px solid #767676;
background-color: #232629; background-color: #232629;
color: #eff0f1; color: #eff0f1;
border-radius: 2px; border-radius: 2px;
@ -664,7 +664,7 @@ QTabWidget {
} }
QTabWidget::pane { QTabWidget::pane {
border: 1px solid #76797C; border: 1px solid #767676;
padding: 5px; padding: 5px;
margin: 0px; margin: 0px;
} }
@ -702,9 +702,9 @@ QTabBar::close-button:pressed {
QTabBar::tab:top { QTabBar::tab:top {
color: #eff0f1; color: #eff0f1;
border: 1px solid #76797C; border: 1px solid #767676;
border-bottom: 1px transparent black; border-bottom: 1px transparent black;
background-color: #31363b; background-color: #313131;
padding: 5px; padding: 5px;
min-width: 50px; min-width: 50px;
border-top-left-radius: 2px; border-top-left-radius: 2px;
@ -714,7 +714,7 @@ QTabBar::tab:top {
QTabBar::tab:top:selected { QTabBar::tab:top:selected {
color: #eff0f1; color: #eff0f1;
background-color: #54575B; background-color: #54575B;
border: 1px solid #76797C; border: 1px solid #767676;
border-bottom: 2px solid #3daee9; border-bottom: 2px solid #3daee9;
border-top-left-radius: 2px; border-top-left-radius: 2px;
border-top-right-radius: 2px; border-top-right-radius: 2px;
@ -729,9 +729,9 @@ QTabBar::tab:top:!selected:hover {
QTabBar::tab:bottom { QTabBar::tab:bottom {
color: #eff0f1; color: #eff0f1;
border: 1px solid #76797C; border: 1px solid #767676;
border-top: 1px transparent black; border-top: 1px transparent black;
background-color: #31363b; background-color: #313131;
padding: 5px; padding: 5px;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
@ -741,7 +741,7 @@ QTabBar::tab:bottom {
QTabBar::tab:bottom:selected { QTabBar::tab:bottom:selected {
color: #eff0f1; color: #eff0f1;
background-color: #54575B; background-color: #54575B;
border: 1px solid #76797C; border: 1px solid #767676;
border-top: 2px solid #3daee9; border-top: 2px solid #3daee9;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
@ -756,9 +756,9 @@ QTabBar::tab:bottom:!selected:hover {
QTabBar::tab:left { QTabBar::tab:left {
color: #eff0f1; color: #eff0f1;
border: 1px solid #76797C; border: 1px solid #767676;
border-left: 1px transparent black; border-left: 1px transparent black;
background-color: #31363b; background-color: #313131;
padding: 5px; padding: 5px;
border-top-right-radius: 2px; border-top-right-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
@ -768,7 +768,7 @@ QTabBar::tab:left {
QTabBar::tab:left:selected { QTabBar::tab:left:selected {
color: #eff0f1; color: #eff0f1;
background-color: #54575B; background-color: #54575B;
border: 1px solid #76797C; border: 1px solid #767676;
border-left: 2px solid #3daee9; border-left: 2px solid #3daee9;
border-top-right-radius: 2px; border-top-right-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
@ -783,9 +783,9 @@ QTabBar::tab:left:!selected:hover {
QTabBar::tab:right { QTabBar::tab:right {
color: #eff0f1; color: #eff0f1;
border: 1px solid #76797C; border: 1px solid #767676;
border-right: 1px transparent black; border-right: 1px transparent black;
background-color: #31363b; background-color: #313131;
padding: 5px; padding: 5px;
border-top-left-radius: 2px; border-top-left-radius: 2px;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
@ -795,7 +795,7 @@ QTabBar::tab:right {
QTabBar::tab:right:selected { QTabBar::tab:right:selected {
color: #eff0f1; color: #eff0f1;
background-color: #54575B; background-color: #54575B;
border: 1px solid #76797C; border: 1px solid #767676;
border-right: 2px solid #3daee9; border-right: 2px solid #3daee9;
border-top-left-radius: 2px; border-top-left-radius: 2px;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
@ -822,7 +822,7 @@ QTabBar QToolButton::left-arrow:disabled {
} }
QDockWidget { QDockWidget {
background: #31363b; background: #313131;
border: 1px solid #403F3F; border: 1px solid #403F3F;
titlebar-close-icon: url(:/qss_icons/rc/close.png); titlebar-close-icon: url(:/qss_icons/rc/close.png);
titlebar-normal-icon: url(:/qss_icons/rc/undock.png); titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
@ -848,7 +848,7 @@ QDockWidget::float-button:pressed {
QTreeView, QTreeView,
QListView { QListView {
border: 1px solid #76797C; border: 1px solid #767676;
background-color: #232629; background-color: #232629;
} }
@ -980,7 +980,7 @@ QSlider::handle:vertical {
QToolButton { QToolButton {
background-color: transparent; background-color: transparent;
border: 1px transparent #76797C; border: 1px transparent #767676;
border-radius: 2px; border-radius: 2px;
margin: 3px; margin: 3px;
padding: 5px; padding: 5px;
@ -990,7 +990,7 @@ QToolButton[popupMode="1"] {
/* only for MenuButtonPopup */ /* only for MenuButtonPopup */
padding-right: 20px; padding-right: 20px;
/* make way for the popup button */ /* make way for the popup button */
border: 1px #76797C; border: 1px #767676;
border-radius: 5px; border-radius: 5px;
} }
@ -998,7 +998,7 @@ QToolButton[popupMode="2"] {
/* only for InstantPopup */ /* only for InstantPopup */
padding-right: 10px; padding-right: 10px;
/* make way for the popup button */ /* make way for the popup button */
border: 1px #76797C; border: 1px #767676;
} }
QToolButton:hover, QToolButton:hover,
@ -1030,7 +1030,7 @@ QToolButton::menu-indicator {
/* the subcontrols below are used only in the MenuButtonPopup mode */ /* the subcontrols below are used only in the MenuButtonPopup mode */
QToolButton::menu-button { QToolButton::menu-button {
border: 1px transparent #76797C; border: 1px transparent #767676;
border-top-right-radius: 6px; border-top-right-radius: 6px;
border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;
/* 16px width + 4px for border = 20px allocated above */ /* 16px width + 4px for border = 20px allocated above */
@ -1043,7 +1043,7 @@ QToolButton::menu-arrow {
} }
QToolButton::menu-arrow:open { QToolButton::menu-arrow:open {
border: 1px solid #76797C; border: 1px solid #767676;
} }
QPushButton::menu-indicator { QPushButton::menu-indicator {
@ -1053,8 +1053,8 @@ QPushButton::menu-indicator {
} }
QTableView { QTableView {
border: 1px solid #76797C; border: 1px solid #767676;
gridline-color: #31363b; gridline-color: #313131;
background-color: #232629; background-color: #232629;
} }
@ -1078,7 +1078,7 @@ QListView::item:selected:active {
} }
QHeaderView { QHeaderView {
background-color: #31363b; background-color: #313131;
border: 1px transparent; border: 1px transparent;
border-radius: 0px; border-radius: 0px;
margin: 0px; margin: 0px;
@ -1086,17 +1086,17 @@ QHeaderView {
} }
QHeaderView::section { QHeaderView::section {
background-color: #31363b; background-color: #313131;
color: #eff0f1; color: #eff0f1;
padding: 5px; padding: 5px;
border: 1px solid #76797C; border: 1px solid #767676;
border-radius: 0px; border-radius: 0px;
text-align: center; text-align: center;
} }
QHeaderView::section::vertical::first, QHeaderView::section::vertical::first,
QHeaderView::section::vertical::only-one { QHeaderView::section::vertical::only-one {
border-top: 1px solid #76797C; border-top: 1px solid #767676;
} }
QHeaderView::section::vertical { QHeaderView::section::vertical {
@ -1105,7 +1105,7 @@ QHeaderView::section::vertical {
QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::first,
QHeaderView::section::horizontal::only-one { QHeaderView::section::horizontal::only-one {
border-left: 1px solid #76797C; border-left: 1px solid #767676;
} }
QHeaderView::section::horizontal { QHeaderView::section::horizontal {
@ -1129,8 +1129,8 @@ QHeaderView::up-arrow {
} }
QTableCornerButton::section { QTableCornerButton::section {
background-color: #31363b; background-color: #313131;
border: 1px transparent #76797C; border: 1px transparent #767676;
border-radius: 0px; border-radius: 0px;
} }
@ -1141,9 +1141,9 @@ QToolBox {
QToolBox::tab { QToolBox::tab {
color: #eff0f1; color: #eff0f1;
background-color: #31363b; background-color: #313131;
border: 1px solid #76797C; border: 1px solid #767676;
border-bottom: 1px transparent #31363b; border-bottom: 1px transparent #313131;
border-top-left-radius: 5px; border-top-left-radius: 5px;
border-top-right-radius: 5px; border-top-right-radius: 5px;
} }
@ -1151,7 +1151,7 @@ QToolBox::tab {
QToolBox::tab:selected { QToolBox::tab:selected {
/* italicize selected tabs */ /* italicize selected tabs */
font: italic; font: italic;
background-color: #31363b; background-color: #313131;
border-color: #3daee9; border-color: #3daee9;
} }
@ -1161,16 +1161,16 @@ QStatusBar::item {
QFrame[height="3"], QFrame[height="3"],
QFrame[width="3"] { QFrame[width="3"] {
background-color: #76797C; background-color: #767676;
} }
QSplitter::handle { QSplitter::handle {
border: 1px dashed #76797C; border: 1px dashed #767676;
} }
QSplitter::handle:hover { QSplitter::handle:hover {
background-color: #787876; background-color: #787876;
border: 1px solid #76797C; border: 1px solid #767676;
} }
QSplitter::handle:horizontal { QSplitter::handle:horizontal {
@ -1182,7 +1182,7 @@ QSplitter::handle:vertical {
} }
QProgressBar { QProgressBar {
border: 1px solid #76797C; border: 1px solid #767676;
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
} }

Wyświetl plik

@ -22,6 +22,8 @@
rigCommander::rigCommander() rigCommander::rigCommander()
{ {
rigState.mutex = new QMutex();
QMutexLocker locker(rigState.mutex);
rigState.filter = 0; rigState.filter = 0;
rigState.mode = 0; rigState.mode = 0;
rigState.ptt = 0; rigState.ptt = 0;
@ -33,6 +35,7 @@ rigCommander::rigCommander()
rigCommander::~rigCommander() rigCommander::~rigCommander()
{ {
closeComm(); closeComm();
delete rigState.mutex;
} }
@ -569,12 +572,16 @@ void rigCommander::setFrequency(unsigned char vfo, freqt freq)
cmdPayload.append(freqPayload); cmdPayload.append(freqPayload);
if (vfo == 0) { if (vfo == 0) {
rigState.mutex->lock();
rigState.vfoAFreq = freq; rigState.vfoAFreq = freq;
rigState.mutex->unlock();
cmdPayload.prepend('\x00'); cmdPayload.prepend('\x00');
} }
else else
{ {
rigState.mutex->lock();
rigState.vfoBFreq = freq; rigState.vfoBFreq = freq;
rigState.mutex->unlock();
cmdPayload.prepend(vfo); cmdPayload.prepend(vfo);
cmdPayload.prepend('\x25'); cmdPayload.prepend('\x25');
} }
@ -702,6 +709,8 @@ void rigCommander::setMode(mode_info m)
payload.append(m.filter); payload.append(m.filter);
prepDataAndSend(payload); prepDataAndSend(payload);
QMutexLocker locker(rigState.mutex);
rigState.mode = m.reg; rigState.mode = m.reg;
rigState.filter = m.filter; rigState.filter = m.filter;
} }
@ -733,6 +742,7 @@ void rigCommander::setMode(unsigned char mode, unsigned char modeFilter)
} }
prepDataAndSend(payload); prepDataAndSend(payload);
QMutexLocker locker(rigState.mutex);
rigState.mode = mode; rigState.mode = mode;
rigState.filter = modeFilter; 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. payload.append("\x00\x00", 2); // data mode off, bandwidth not defined per ICD.
} }
prepDataAndSend(payload); prepDataAndSend(payload);
QMutexLocker locker(rigState.mutex);
rigState.datamode = dataOn; rigState.datamode = dataOn;
} }
@ -1020,6 +1031,7 @@ void rigCommander::setPTT(bool pttOn)
QByteArray payload("\x1C\x00", 2); QByteArray payload("\x1C\x00", 2);
payload.append((char)pttOn); payload.append((char)pttOn);
prepDataAndSend(payload); prepDataAndSend(payload);
QMutexLocker locker(rigState.mutex);
rigState.ptt = pttOn; rigState.ptt = pttOn;
} }
} }
@ -1241,16 +1253,22 @@ void rigCommander::parseCommand()
break; break;
case '\x0F': case '\x0F':
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]); emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
rigState.mutex->lock();
rigState.duplex = (duplexMode)(unsigned char)payloadIn[1]; rigState.duplex = (duplexMode)(unsigned char)payloadIn[1];
rigState.mutex->unlock();
break; break;
case '\x11': case '\x11':
emit haveAttenuator((unsigned char)payloadIn.at(1)); emit haveAttenuator((unsigned char)payloadIn.at(1));
rigState.mutex->lock();
rigState.attenuator = (unsigned char)payloadIn.at(1); rigState.attenuator = (unsigned char)payloadIn.at(1);
rigState.mutex->unlock();
break; break;
case '\x12': case '\x12':
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2)); emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));
rigState.mutex->lock();
rigState.antenna = (unsigned char)payloadIn.at(1); rigState.antenna = (unsigned char)payloadIn.at(1);
rigState.rxAntenna = (bool)payloadIn.at(2); rigState.rxAntenna = (bool)payloadIn.at(2);
rigState.mutex->unlock();
break; break;
case '\x14': case '\x14':
// read levels // read levels
@ -1346,7 +1364,6 @@ void rigCommander::parseLevels()
// "INDEX: 00 01 02 03 04 " // "INDEX: 00 01 02 03 04 "
// "DATA: 14 02 00 78 fd " // "DATA: 14 02 00 78 fd "
if(payloadIn[0] == '\x14') if(payloadIn[0] == '\x14')
{ {
switch(payloadIn[1]) switch(payloadIn[1])
@ -1355,18 +1372,24 @@ void rigCommander::parseLevels()
// AF level - ignore if LAN connection. // AF level - ignore if LAN connection.
if (udp == Q_NULLPTR) { if (udp == Q_NULLPTR) {
emit haveAfGain(level); emit haveAfGain(level);
rigState.mutex->lock();
rigState.afGain = level; rigState.afGain = level;
rigState.mutex->unlock();
} }
break; break;
case '\x02': case '\x02':
// RX RF Gain // RX RF Gain
emit haveRfGain(level); emit haveRfGain(level);
rigState.mutex->lock();
rigState.rfGain = level; rigState.rfGain = level;
rigState.mutex->unlock();
break; break;
case '\x03': case '\x03':
// Squelch level // Squelch level
emit haveSql(level); emit haveSql(level);
rigState.mutex->lock();
rigState.squelch = level; rigState.squelch = level;
rigState.mutex->unlock();
break; break;
case '\x07': case '\x07':
// Twin BPF Inner, or, IF-Shift level // Twin BPF Inner, or, IF-Shift level
@ -1385,12 +1408,16 @@ void rigCommander::parseLevels()
case '\x0A': case '\x0A':
// TX RF level // TX RF level
emit haveTxPower(level); emit haveTxPower(level);
rigState.mutex->lock();
rigState.txPower = level; rigState.txPower = level;
rigState.mutex->unlock();
break; break;
case '\x0B': case '\x0B':
// Mic Gain // Mic Gain
emit haveMicGain(level); emit haveMicGain(level);
rigState.mutex->lock();
rigState.micGain = level; rigState.micGain = level;
rigState.mutex->unlock();
break; break;
case '\x0C': case '\x0C':
// CW Keying Speed - ignore for now // CW Keying Speed - ignore for now
@ -1401,7 +1428,9 @@ void rigCommander::parseLevels()
case '\x0E': case '\x0E':
// compressor level // compressor level
emit haveCompLevel(level); emit haveCompLevel(level);
rigState.mutex->lock();
rigState.compLevel = level; rigState.compLevel = level;
rigState.mutex->unlock();
break; break;
case '\x12': case '\x12':
// NB level - ignore for now // NB level - ignore for now
@ -1409,17 +1438,23 @@ void rigCommander::parseLevels()
case '\x15': case '\x15':
// monitor level // monitor level
emit haveMonitorLevel(level); emit haveMonitorLevel(level);
rigState.mutex->lock();
rigState.monitorLevel = level; rigState.monitorLevel = level;
rigState.mutex->unlock();
break; break;
case '\x16': case '\x16':
// VOX gain // VOX gain
emit haveVoxGain(level); emit haveVoxGain(level);
rigState.mutex->lock();
rigState.voxGain = level; rigState.voxGain = level;
rigState.mutex->unlock();
break; break;
case '\x17': case '\x17':
// anti-VOX gain // anti-VOX gain
emit haveAntiVoxGain(level); emit haveAntiVoxGain(level);
rigState.mutex->lock();
rigState.antiVoxGain = level; rigState.antiVoxGain = level;
rigState.mutex->unlock();
break; break;
default: default:
@ -1437,42 +1472,58 @@ void rigCommander::parseLevels()
case '\x02': case '\x02':
// S-Meter // S-Meter
emit haveMeter(meterS, level); emit haveMeter(meterS, level);
rigState.mutex->lock();
rigState.sMeter = level; rigState.sMeter = level;
rigState.mutex->unlock();
break; break;
case '\x04': case '\x04':
// Center (IC-R8600) // Center (IC-R8600)
emit haveMeter(meterCenter, level); emit haveMeter(meterCenter, level);
rigState.mutex->lock();
rigState.sMeter = level; rigState.sMeter = level;
rigState.mutex->unlock();
break; break;
case '\x11': case '\x11':
// RF-Power meter // RF-Power meter
emit haveMeter(meterPower, level); emit haveMeter(meterPower, level);
rigState.mutex->lock();
rigState.powerMeter = level; rigState.powerMeter = level;
rigState.mutex->unlock();
break; break;
case '\x12': case '\x12':
// SWR // SWR
emit haveMeter(meterSWR, level); emit haveMeter(meterSWR, level);
rigState.mutex->lock();
rigState.swrMeter = level; rigState.swrMeter = level;
rigState.mutex->unlock();
break; break;
case '\x13': case '\x13':
// ALC // ALC
emit haveMeter(meterALC, level); emit haveMeter(meterALC, level);
rigState.mutex->lock();
rigState.alcMeter = level; rigState.alcMeter = level;
rigState.mutex->unlock();
break; break;
case '\x14': case '\x14':
// COMP dB reduction // COMP dB reduction
emit haveMeter(meterComp, level); emit haveMeter(meterComp, level);
rigState.mutex->lock();
rigState.compMeter = level; rigState.compMeter = level;
rigState.mutex->unlock();
break; break;
case '\x15': case '\x15':
// VD (12V) // VD (12V)
emit haveMeter(meterVoltage, level); emit haveMeter(meterVoltage, level);
rigState.mutex->lock();
rigState.voltageMeter = level; rigState.voltageMeter = level;
rigState.mutex->unlock();
break; break;
case '\x16': case '\x16':
// ID // ID
emit haveMeter(meterCurrent, level); emit haveMeter(meterCurrent, level);
rigState.mutex->lock();
rigState.currentMeter = level; rigState.currentMeter = level;
rigState.mutex->unlock();
break; break;
default: default:
@ -2379,6 +2430,7 @@ void rigCommander::parsePTT()
// PTT on // PTT on
emit havePTTStatus(true); emit havePTTStatus(true);
} }
QMutexLocker locker(rigState.mutex);
rigState.ptt = (bool)payloadIn[2]; rigState.ptt = (bool)payloadIn[2];
} }
@ -2398,6 +2450,7 @@ void rigCommander::parseRegisters1A()
// "INDEX: 00 01 02 03 04 " // "INDEX: 00 01 02 03 04 "
// "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected) // "DATA: 1a 06 01 03 fd " (data mode enabled, filter width 3 selected)
QMutexLocker locker(rigState.mutex);
switch(payloadIn[01]) switch(payloadIn[01])
{ {
@ -2440,24 +2493,32 @@ void rigCommander::parseRegister1B()
// "Repeater tone" // "Repeater tone"
tone = decodeTone(payloadIn); tone = decodeTone(payloadIn);
emit haveTone(tone); emit haveTone(tone);
rigState.mutex->lock();
rigState.ctcss = tone; rigState.ctcss = tone;
rigState.mutex->unlock();
break; break;
case '\x01': case '\x01':
// "TSQL tone" // "TSQL tone"
tone = decodeTone(payloadIn); tone = decodeTone(payloadIn);
emit haveTSQL(tone); emit haveTSQL(tone);
rigState.mutex->lock();
rigState.tsql = tone; rigState.tsql = tone;
rigState.mutex->unlock();
break; break;
case '\x02': case '\x02':
// DTCS (DCS) // DTCS (DCS)
tone = decodeTone(payloadIn, tinv, rinv); tone = decodeTone(payloadIn, tinv, rinv);
emit haveDTCS(tone, tinv, rinv); emit haveDTCS(tone, tinv, rinv);
rigState.mutex->lock();
rigState.dtcs = tone; rigState.dtcs = tone;
rigState.mutex->unlock();
break; break;
case '\x07': case '\x07':
// "CSQL code (DV mode)" // "CSQL code (DV mode)"
tone = decodeTone(payloadIn); tone = decodeTone(payloadIn);
rigState.mutex->lock();
rigState.csql = tone; rigState.csql = tone;
rigState.mutex->unlock();
break; break;
default: default:
break; break;
@ -2469,6 +2530,7 @@ void rigCommander::parseRegister16()
//"INDEX: 00 01 02 03 " //"INDEX: 00 01 02 03 "
//"DATA: 16 5d 00 fd " //"DATA: 16 5d 00 fd "
// ^-- mode info here // ^-- mode info here
switch(payloadIn.at(1)) switch(payloadIn.at(1))
{ {
case '\x5d': case '\x5d':
@ -2477,7 +2539,9 @@ void rigCommander::parseRegister16()
case '\x02': case '\x02':
// Preamp // Preamp
emit havePreamp((unsigned char)payloadIn.at(2)); emit havePreamp((unsigned char)payloadIn.at(2));
rigState.mutex->lock();
rigState.preamp = (unsigned char)payloadIn.at(2); rigState.preamp = (unsigned char)payloadIn.at(2);
rigState.mutex->unlock();
break; break;
default: default:
break; break;
@ -3790,7 +3854,10 @@ void rigCommander::parseFrequency()
freq.MHzDouble = frequencyMhz; freq.MHzDouble = frequencyMhz;
rigState.mutex->lock();
rigState.vfoAFreq = freq; rigState.vfoAFreq = freq;
rigState.mutex->unlock();
emit haveFrequency(freq); emit haveFrequency(freq);
} }
@ -3868,8 +3935,10 @@ void rigCommander::parseMode()
} else { } else {
filter = 0; filter = 0;
} }
rigState.mutex->lock();
rigState.mode = (unsigned char)payloadIn[01]; rigState.mode = (unsigned char)payloadIn[01];
rigState.filter = filter; rigState.filter = filter;
rigState.mutex->unlock();
emit haveMode((unsigned char)payloadIn[01], filter); emit haveMode((unsigned char)payloadIn[01], filter);
} }

Wyświetl plik

@ -2,6 +2,8 @@
#define RIGCOMMANDER_H #define RIGCOMMANDER_H
#include <QObject> #include <QObject>
#include <QMutex>
#include <QMutexLocker>
#include <QDebug> #include <QDebug>
#include "commhandler.h" #include "commhandler.h"
@ -60,6 +62,7 @@ struct timekind {
}; };
struct rigStateStruct { struct rigStateStruct {
QMutex *mutex;
freqt vfoAFreq; freqt vfoAFreq;
freqt vfoBFreq; freqt vfoBFreq;
unsigned char currentVfo; unsigned char currentVfo;

Wyświetl plik

@ -175,7 +175,9 @@ void rigCtlClient::socketReadyRead()
QStringList command = commandBuffer.mid(num).split(" "); 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; QString resp;
if (longReply) { if (longReply) {

Wyświetl plik

@ -47,7 +47,7 @@ void transceiverAdjustments::on_IFShiftSlider_valueChanged(int value)
unsigned char outer = ui->TPBFOuterSlider->value(); unsigned char outer = ui->TPBFOuterSlider->value();
int shift = value - previousIFShift; int shift = value - previousIFShift;
inner = qMax( 0, qMin(255,int (inner + shift)) ); 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->TPBFInnerSlider->setValue(inner);
ui->TPBFOuterSlider->setValue(outer); ui->TPBFOuterSlider->setValue(outer);

Wyświetl plik

@ -2257,14 +2257,22 @@ void wfmain:: getInitialRigState()
issueDelayedCommand(cmdGetMode); issueDelayedCommand(cmdGetMode);
// From left to right in the UI: // From left to right in the UI:
issueDelayedCommand(cmdGetDataMode); if (rigCaps.hasTransmit)
issueDelayedCommand(cmdGetModInput); {
issueDelayedCommand(cmdGetModDataInput); issueDelayedCommand(cmdGetDataMode);
issueDelayedCommand(cmdGetModInput);
issueDelayedCommand(cmdGetModDataInput);
}
issueDelayedCommand(cmdGetRxGain); issueDelayedCommand(cmdGetRxGain);
issueDelayedCommand(cmdGetAfGain); issueDelayedCommand(cmdGetAfGain);
issueDelayedCommand(cmdGetSql); issueDelayedCommand(cmdGetSql);
issueDelayedCommand(cmdGetTxPower);
issueDelayedCommand(cmdGetCurrentModLevel); // level for currently selected mod sources if (rigCaps.hasTransmit)
{
issueDelayedCommand(cmdGetTxPower);
issueDelayedCommand(cmdGetCurrentModLevel); // level for currently selected mod sources
}
issueDelayedCommand(cmdGetSpectrumRefLevel); issueDelayedCommand(cmdGetSpectrumRefLevel);
issueDelayedCommand(cmdGetDuplexMode); issueDelayedCommand(cmdGetDuplexMode);
@ -2273,8 +2281,12 @@ void wfmain:: getInitialRigState()
issueDelayedCommand(cmdDispEnable); issueDelayedCommand(cmdDispEnable);
issueDelayedCommand(cmdSpecOn); issueDelayedCommand(cmdSpecOn);
} }
issueDelayedCommand(cmdGetModInput);
issueDelayedCommand(cmdGetModDataInput); if (rigCaps.hasTransmit)
{
issueDelayedCommand(cmdGetModInput);
issueDelayedCommand(cmdGetModDataInput);
}
if(rigCaps.hasCTCSS) 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 // Note: we need to know if the DATA mode is active to reach mode-D
// some kind of queued query: // some kind of queued query:
if(rigCaps.hasDataModes) if (rigCaps.hasDataModes && rigCaps.hasTransmit)
{
issueDelayedCommand(cmdGetDataMode); issueDelayedCommand(cmdGetDataMode);
}
} }
void wfmain::receiveDataModeStatus(bool dataEnabled) void wfmain::receiveDataModeStatus(bool dataEnabled)
@ -5525,8 +5539,8 @@ void wfmain::on_debugBtn_clicked()
{ {
qInfo(logSystem()) << "Debug button pressed."; qInfo(logSystem()) << "Debug button pressed.";
// issueDelayedCommand(cmdGetRigID); // issueDelayedCommand(cmdGetRigID);
emit getRigCIV(); //emit getRigCIV();
//trxadj->show(); trxadj->show();
//setRadioTimeDatePrep(); //setRadioTimeDatePrep();
//wf->setInteraction(QCP::iRangeZoom, true); //wf->setInteraction(QCP::iRangeZoom, true);
//wf->setInteraction(QCP::iRangeDrag, true); //wf->setInteraction(QCP::iRangeDrag, true);

Wyświetl plik

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>946</width> <width>948</width>
<height>582</height> <height>554</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -2684,6 +2684,12 @@
</item> </item>
<item> <item>
<widget class="QComboBox" name="audioOutputCombo"> <widget class="QComboBox" name="audioOutputCombo">
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="accessibleName"> <property name="accessibleName">
<string>Audio Output Selector</string> <string>Audio Output Selector</string>
</property> </property>
@ -2698,11 +2704,30 @@
</item> </item>
<item> <item>
<widget class="QComboBox" name="audioInputCombo"> <widget class="QComboBox" name="audioInputCombo">
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="accessibleName"> <property name="accessibleName">
<string>Audio Input Selector</string> <string>Audio Input Selector</string>
</property> </property>
</widget> </widget>
</item> </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> </layout>
</item> </item>
<item> <item>
@ -2840,7 +2865,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>946</width> <width>948</width>
<height>22</height> <height>22</height>
</rect> </rect>
</property> </property>

Wyświetl plik

@ -11,6 +11,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
TARGET = wfview TARGET = wfview
TEMPLATE = app TEMPLATE = app
DEFINES += WFVIEW_VERSION=\\\"1.2d\\\"
CONFIG(debug, release|debug) { CONFIG(debug, release|debug) {
# For Debug builds only: # For Debug builds only:
QMAKE_CXXFLAGS += -faligned-new QMAKE_CXXFLAGS += -faligned-new