diff --git a/pttyhandler.cpp b/pttyhandler.cpp index 28115f9..a14420e 100644 --- a/pttyhandler.cpp +++ b/pttyhandler.cpp @@ -5,7 +5,7 @@ // Copyright 2017-2021 Elliott H. Liggett & Phil Taylor -pttyHandler::pttyHandler() +pttyHandler::pttyHandler(QString pty) { //constructor // grab baud rate and other comm port details @@ -20,17 +20,19 @@ pttyHandler::pttyHandler() stopBits = 1; #ifdef Q_OS_WIN - portName = "COM20"; + portName = pty; #else portName = "/dev/ptmx"; #endif - setupPtty(); // basic parameters - openPort(); - //qDebug(logSerial()) << "Serial buffer size: " << port->readBufferSize(); - //port->setReadBufferSize(1024); // manually. 256 never saw any return from the radio. why... - //qDebug(logSerial()) << "Serial buffer size: " << port->readBufferSize(); + if (portName != "" && portName != "None") { + setupPtty(); // basic parameters + openPort(); + //qDebug(logSerial()) << "Serial buffer size: " << port->readBufferSize(); + //port->setReadBufferSize(1024); // manually. 256 never saw any return from the radio. why... + //qDebug(logSerial()) << "Serial buffer size: " << port->readBufferSize(); - connect(port, SIGNAL(readyRead()), this, SLOT(receiveDataIn())); + connect(port, SIGNAL(readyRead()), this, SLOT(receiveDataIn())); + } } pttyHandler::pttyHandler(QString portName, quint32 baudRate) @@ -60,7 +62,7 @@ pttyHandler::pttyHandler(QString portName, quint32 baudRate) void pttyHandler::setupPtty() { - qDebug(logSerial()) << "Setting up Pseudo Term"; + qDebug(logSerial()) << "Setting up Pseudo Term: " << portName; serialError = false; port->setPortName(portName); #ifdef Q_OS_WIN diff --git a/pttyhandler.h b/pttyhandler.h index 417f34b..d8661c3 100644 --- a/pttyhandler.h +++ b/pttyhandler.h @@ -15,7 +15,7 @@ class pttyHandler : public QObject Q_OBJECT public: - pttyHandler(); + pttyHandler(QString portName); pttyHandler(QString portName, quint32 baudRate); bool serialError; diff --git a/rigcommander.cpp b/rigcommander.cpp index b0aa6b6..8cc731a 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -33,7 +33,7 @@ rigCommander::~rigCommander() } -void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate) +void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp) { // construct // TODO: Bring this parameter and the comm port from the UI. @@ -51,7 +51,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu this->rigBaudRate = rigBaudRate; comm = new commHandler(rigSerialPort, rigBaudRate); - ptty = new pttyHandler(); + ptty = new pttyHandler(vsp); // data from the comm port to the program: connect(comm, SIGNAL(haveDataFromPort(QByteArray)), this, SLOT(handleNewData(QByteArray))); @@ -74,7 +74,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu } -void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs) +void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, QString vsp) { // construct // TODO: Bring this parameter and the comm port from the UI. @@ -106,7 +106,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs) //this->rigSerialPort = rigSerialPort; //this->rigBaudRate = rigBaudRate; - ptty = new pttyHandler(); + ptty = new pttyHandler(vsp); // Data from UDP to the program connect(udp, SIGNAL(haveDataFromPort(QByteArray)), this, SLOT(handleNewData(QByteArray))); diff --git a/rigcommander.h b/rigcommander.h index cd96694..277e7f8 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -61,8 +61,8 @@ public: public slots: void process(); - void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate); - void commSetup(unsigned char rigCivAddr, udpPreferences prefs); + void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp); + void commSetup(unsigned char rigCivAddr, udpPreferences prefs, QString vsp); void closeComm(); // Power: diff --git a/wfmain.cpp b/wfmain.cpp index 26f9654..b8cc330 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -167,6 +167,46 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent ui->audioInputCombo->addItem(deviceInfo.deviceName()); } + ui->serialDeviceListCombo->blockSignals(true); + ui->serialDeviceListCombo->addItem("Auto", 0); + int i = 0; + foreach(const QSerialPortInfo & serialPortInfo, QSerialPortInfo::availablePorts()) + { + portList.append(serialPortInfo.portName()); + ui->serialDeviceListCombo->addItem(serialPortInfo.portName(), i++); + } + ui->serialDeviceListCombo->addItem("Manual...", 256); + ui->serialDeviceListCombo->blockSignals(false); + + // vspe checkbox is Currently disabled as not implemented! + ui->vspeCheck->setVisible(false); +#ifndef Q_OS_WIN + ui->vspCombo->setVisible(false); + ui->vspLabel->setVisible(false); + ui->vspeCheck->setVisible(false); +#else + i = 0; + ui->vspCombo->blockSignals(true); + ui->vspCombo->addItem(QString("None"), i++); + if (!ui->vspeCheck->isChecked()) + { + int i = 0; + foreach(const QSerialPortInfo & serialPortInfo, QSerialPortInfo::availablePorts()) + { + ui->vspCombo->addItem(serialPortInfo.portName(), i++); + } + } + else { + for (int f = 1; f < 100; f++) { + ui->vspCombo->addItem(QString("COM%1").arg(f), f); + } + } + ui->vspCombo->blockSignals(false); + +#endif + + + setDefaultColors(); // set of UI colors with defaults populated setDefPrefs(); // other default options loadSettings(); // Look for saved preferences @@ -318,18 +358,6 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent periodicPollingTimer->setSingleShot(false); connect(periodicPollingTimer, SIGNAL(timeout()), this, SLOT(runPeriodicCommands())); - - ui->serialDeviceListCombo->blockSignals(true); - ui->serialDeviceListCombo->addItem("Auto", 0); - int i=0; - foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts()) - { - portList.append(serialPortInfo.portName()); - ui->serialDeviceListCombo->addItem(serialPortInfo.portName(), i++); - } - ui->serialDeviceListCombo->addItem("Manual...", 256); - ui->serialDeviceListCombo->blockSignals(false); - freq.MHzDouble = 0.0; freq.Hz = 0; @@ -641,8 +669,8 @@ void wfmain::openRig() connect(rig, SIGNAL(haveSerialPortError(QString, QString)), this, SLOT(receiveSerialPortError(QString, QString))); connect(rig, SIGNAL(haveStatusUpdate(QString)), this, SLOT(receiveStatusUpdate(QString))); - connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences)), rig, SLOT(commSetup(unsigned char, udpPreferences))); - connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32)), rig, SLOT(commSetup(unsigned char, QString, quint32))); + connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences,QString)), rig, SLOT(commSetup(unsigned char, udpPreferences,QString))); + connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32,QString)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString))); connect(this, SIGNAL(sendCloseComm()), rig, SLOT(closeComm())); connect(this, SIGNAL(sendChangeLatency(quint16)), rig, SLOT(changeLatency(quint16))); @@ -660,7 +688,7 @@ void wfmain::openRig() if (prefs.enableLAN) { ui->lanEnableBtn->setChecked(true); - emit sendCommSetup(prefs.radioCIVAddr, udpPrefs); + emit sendCommSetup(prefs.radioCIVAddr, udpPrefs,prefs.virtualSerialPort); } else { ui->serialEnableBtn->setChecked(true); if( (prefs.serialPortRadio == QString("auto")) && (serialPortCL.isEmpty())) @@ -715,7 +743,7 @@ void wfmain::openRig() // Here, the radioCIVAddr is being set from a default preference, which is for the 7300. // However, we will not use it initially. OTOH, if it is set explicitedly to a value in the prefs, // then we skip auto detection. - emit sendCommSetup(prefs.radioCIVAddr, serialPortRig, prefs.serialPortBaud); + emit sendCommSetup(prefs.radioCIVAddr, serialPortRig, prefs.serialPortBaud,prefs.virtualSerialPort); } ui->statusBar->showMessage(QString("Connecting to rig using serial port ").append(serialPortRig), 1000); @@ -791,6 +819,8 @@ void wfmain::setDefPrefs() defPrefs.niceTS = true; defPrefs.enableRigCtlD = false; defPrefs.rigCtlPort = 4533; + defPrefs.enableVSPE = false; + defPrefs.virtualSerialPort = QString("none"); udpDefPrefs.ipAddress = QString(""); udpDefPrefs.controlLANPort = 50001; @@ -868,6 +898,13 @@ void wfmain::loadSettings() prefs.radioCIVAddr = (unsigned char) settings.value("RigCIVuInt", defPrefs.radioCIVAddr).toInt(); prefs.serialPortRadio = settings.value("SerialPortRadio", defPrefs.serialPortRadio).toString(); prefs.serialPortBaud = (quint32) settings.value("SerialPortBaud", defPrefs.serialPortBaud).toInt(); + prefs.enableVSPE = settings.value("EnableVSPE", defPrefs.enableVSPE).toBool(); + prefs.virtualSerialPort = settings.value("VirtualSerialPort", defPrefs.virtualSerialPort).toString(); + int vspIndex = ui->vspCombo->findText(prefs.virtualSerialPort); + if (vspIndex != -1) { + ui->vspCombo->setCurrentIndex(vspIndex); + } + ui->vspeCheck->setChecked(prefs.enableVSPE); settings.endGroup(); // Misc. user settings (enable PTT, draw peaks, etc) @@ -1047,6 +1084,8 @@ void wfmain::saveSettings() settings.setValue("RigCIVuInt", prefs.radioCIVAddr); settings.setValue("SerialPortRadio", prefs.serialPortRadio); settings.setValue("SerialPortBaud", prefs.serialPortBaud); + settings.setValue("EnableVSPE", prefs.enableVSPE); + settings.setValue("VirtualSerialPort", prefs.virtualSerialPort); settings.endGroup(); // Misc. user settings (enable PTT, draw peaks, etc) @@ -3367,6 +3406,17 @@ void wfmain::on_txLatencySlider_valueChanged(int value) ui->txLatencyValue->setText(QString::number(value)); } +void wfmain::on_vspCombo_currentIndexChanged(int value) +{ + Q_UNUSED(value); + prefs.virtualSerialPort = ui->vspCombo->currentText(); +} + +void wfmain::on_vspeCheck_clicked(bool checked) +{ + prefs.enableVSPE = checked; +} + void wfmain::on_toFixedBtn_clicked() { emit setScopeFixedEdge(oldLowerFreq, oldUpperFreq, ui->scopeEdgeCombo->currentIndex()+1); diff --git a/wfmain.h b/wfmain.h index a49ac03..f4697c1 100644 --- a/wfmain.h +++ b/wfmain.h @@ -131,8 +131,8 @@ signals: void sayFrequency(); void sayMode(); void sayAll(); - void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate); - void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs); + void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp); + void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs, QString vsp); void sendCloseComm(); void sendChangeLatency(quint16 latency); void initServer(); @@ -361,6 +361,10 @@ private slots: void on_audioSampleRateCombo_currentIndexChanged(QString text); + void on_vspCombo_currentIndexChanged(int value); + + void on_vspeCheck_clicked(bool checked); + void on_scopeEnableWFBtn_clicked(bool checked); void on_sqlSlider_valueChanged(int value); @@ -598,6 +602,8 @@ private: bool enableRigCtlD; quint16 rigCtlPort; colors colorScheme; + bool enableVSPE; + QString virtualSerialPort; } prefs; preferences defPrefs; diff --git a/wfmain.ui b/wfmain.ui index 0956af4..ff1084e 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -18,7 +18,7 @@ - 0 + 3 @@ -2064,7 +2064,7 @@ - + Qt::Horizontal @@ -2076,6 +2076,23 @@ + + + + Virtual Serial Port + + + + + + + + + + Use VSPE Driver + + + @@ -2358,7 +2375,7 @@ 0 0 934 - 22 + 21