kopia lustrzana https://gitlab.com/eliggett/wfview
Fixes to TCP server and attempt auto port detection on non-linux!
rodzic
0aaf5de976
commit
1f25ca67e8
|
@ -40,7 +40,7 @@ rigCommander::~rigCommander()
|
|||
}
|
||||
|
||||
|
||||
void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp)
|
||||
void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp,quint16 tcpPort)
|
||||
{
|
||||
// construct
|
||||
// TODO: Bring this parameter and the comm port from the UI.
|
||||
|
@ -61,7 +61,11 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu
|
|||
comm = new commHandler(rigSerialPort, rigBaudRate);
|
||||
ptty = new pttyHandler(vsp);
|
||||
|
||||
tcp = new tcpServer();
|
||||
if (tcpPort > 0) {
|
||||
tcp = new tcpServer(this);
|
||||
tcp->startServer(tcpPort);
|
||||
}
|
||||
|
||||
|
||||
// data from the comm port to the program:
|
||||
connect(comm, SIGNAL(haveDataFromPort(QByteArray)), this, SLOT(handleNewData(QByteArray)));
|
||||
|
@ -69,12 +73,13 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu
|
|||
// data from the ptty to the rig:
|
||||
connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
|
||||
// data from the tcp port to the rig:
|
||||
connect(tcp, SIGNAL(readyRead(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
|
||||
// data from the program to the comm port:
|
||||
connect(this, SIGNAL(dataForComm(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
connect(this, SIGNAL(dataForComm(QByteArray)), tcp, SLOT(dataToPort(QByteArray)));
|
||||
if (tcpPort > 0) {
|
||||
// data from the tcp port to the rig:
|
||||
connect(tcp, SIGNAL(receiveData(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
connect(comm, SIGNAL(haveDataFromPort(QByteArray)), tcp, SLOT(sendData(QByteArray)));
|
||||
}
|
||||
connect(this, SIGNAL(toggleRTS(bool)), comm, SLOT(setRTS(bool)));
|
||||
|
||||
// data from the rig to the ptty:
|
||||
|
@ -93,7 +98,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu
|
|||
|
||||
}
|
||||
|
||||
void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp)
|
||||
void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcpPort)
|
||||
{
|
||||
// construct
|
||||
// TODO: Bring this parameter and the comm port from the UI.
|
||||
|
@ -128,19 +133,16 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud
|
|||
|
||||
ptty = new pttyHandler(vsp);
|
||||
|
||||
if (tcpPort > 0) {
|
||||
tcp = new tcpServer(this);
|
||||
tcp->startServer(5010);
|
||||
|
||||
tcp->startServer(tcpPort);
|
||||
}
|
||||
// Data from UDP to the program
|
||||
connect(udp, SIGNAL(haveDataFromPort(QByteArray)), this, SLOT(handleNewData(QByteArray)));
|
||||
|
||||
// data from the rig to the ptty:
|
||||
connect(udp, SIGNAL(haveDataFromPort(QByteArray)), ptty, SLOT(receiveDataFromRigToPtty(QByteArray)));
|
||||
|
||||
// data from the rig to tcp:
|
||||
connect(udp, SIGNAL(haveDataFromPort(QByteArray)), tcp, SLOT(sendData(QByteArray)));
|
||||
|
||||
|
||||
// Audio from UDP
|
||||
connect(udp, SIGNAL(haveAudioData(audioPacket)), this, SLOT(receiveAudioData(audioPacket)));
|
||||
|
||||
|
@ -150,8 +152,11 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud
|
|||
// data from the ptty to the rig:
|
||||
connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), udp, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
|
||||
// data from the tcp port to the Rig:
|
||||
if (tcpPort > 0) {
|
||||
// data from the tcp port to the rig:
|
||||
connect(tcp, SIGNAL(receiveData(QByteArray)), udp, SLOT(receiveDataFromUserToRig(QByteArray)));
|
||||
connect(udp, SIGNAL(haveDataFromPort(QByteArray)), tcp, SLOT(sendData(QByteArray)));
|
||||
}
|
||||
|
||||
connect(this, SIGNAL(haveChangeLatency(quint16)), udp, SLOT(changeLatency(quint16)));
|
||||
connect(this, SIGNAL(haveSetVolume(unsigned char)), udp, SLOT(setVolume(unsigned char)));
|
||||
|
|
|
@ -79,8 +79,8 @@ public:
|
|||
|
||||
public slots:
|
||||
void process();
|
||||
void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp);
|
||||
void commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp);
|
||||
void commSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp, quint16 tcp);
|
||||
void commSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp);
|
||||
void closeComm();
|
||||
void stateUpdated();
|
||||
void setRTSforPTT(bool enabled);
|
||||
|
|
|
@ -89,7 +89,7 @@ void servermain::openRig()
|
|||
{
|
||||
//qInfo(logSystem()) << "Got rig";
|
||||
QMetaObject::invokeMethod(radio->rig, [=]() {
|
||||
radio->rig->commSetup(radio->civAddr, radio->serialPort, radio->baudRate, QString("none"));
|
||||
radio->rig->commSetup(radio->civAddr, radio->serialPort, radio->baudRate, QString("none"),prefs.tcpPort);
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
}
|
||||
|
@ -115,8 +115,6 @@ void servermain::makeRig()
|
|||
connect(radio->rig, SIGNAL(haveStatusUpdate(networkStatus)), this, SLOT(receiveStatusUpdate(networkStatus)));
|
||||
|
||||
// Rig comm setup:
|
||||
//connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)), radio->rig, SLOT(commSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)));
|
||||
//connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32, QString)), radio->rig, SLOT(commSetup(unsigned char, QString, quint32, QString)));
|
||||
connect(this, SIGNAL(setRTSforPTT(bool)), radio->rig, SLOT(setRTSforPTT(bool)));
|
||||
|
||||
connect(radio->rig, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32)));
|
||||
|
@ -420,6 +418,7 @@ void servermain::setDefPrefs()
|
|||
defPrefs.serialPortRadio = QString("auto");
|
||||
defPrefs.serialPortBaud = 115200;
|
||||
defPrefs.localAFgain = 255;
|
||||
defPrefs.tcpPort = 0;
|
||||
|
||||
udpDefPrefs.ipAddress = QString("");
|
||||
udpDefPrefs.controlLANPort = 50001;
|
||||
|
|
|
@ -154,8 +154,8 @@ signals:
|
|||
void sayFrequency();
|
||||
void sayMode();
|
||||
void sayAll();
|
||||
void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp, quint16 tcp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp);
|
||||
void sendCloseComm();
|
||||
void sendChangeLatency(quint16 latency);
|
||||
void initServer();
|
||||
|
@ -242,6 +242,7 @@ private:
|
|||
audioSetup txAudio;
|
||||
rigCapabilities rigCaps;
|
||||
bool haveRigCaps = false;
|
||||
quint16 tcpPort;
|
||||
} prefs;
|
||||
|
||||
preferences defPrefs;
|
||||
|
|
48
wfmain.cpp
48
wfmain.cpp
|
@ -188,13 +188,12 @@ void wfmain::openRig()
|
|||
ui->lanEnableBtn->setChecked(true);
|
||||
usingLAN = true;
|
||||
// We need to setup the tx/rx audio:
|
||||
emit sendCommSetup(prefs.radioCIVAddr, udpPrefs, rxSetup, txSetup, prefs.virtualSerialPort);
|
||||
emit sendCommSetup(prefs.radioCIVAddr, udpPrefs, rxSetup, txSetup, prefs.virtualSerialPort, prefs.tcpPort);
|
||||
} else {
|
||||
ui->serialEnableBtn->setChecked(true);
|
||||
if( (prefs.serialPortRadio.toLower() == QString("auto")) && (serialPortCL.isEmpty()))
|
||||
{
|
||||
findSerialPort();
|
||||
|
||||
} else {
|
||||
if(serialPortCL.isEmpty())
|
||||
{
|
||||
|
@ -204,7 +203,7 @@ void wfmain::openRig()
|
|||
}
|
||||
}
|
||||
usingLAN = false;
|
||||
emit sendCommSetup(prefs.radioCIVAddr, serialPortRig, prefs.serialPortBaud,prefs.virtualSerialPort);
|
||||
emit sendCommSetup(prefs.radioCIVAddr, serialPortRig, prefs.serialPortBaud,prefs.virtualSerialPort, prefs.tcpPort);
|
||||
ui->statusBar->showMessage(QString("Connecting to rig using serial port ").append(serialPortRig), 1000);
|
||||
}
|
||||
|
||||
|
@ -426,8 +425,8 @@ void wfmain::makeRig()
|
|||
connect(rig, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), selRad, SLOT(setInUse(quint8, quint8, QString, QString)));
|
||||
connect(selRad, SIGNAL(selectedRadio(quint8)), rig, SLOT(setCurrentRadio(quint8)));
|
||||
// Rig comm setup:
|
||||
connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)), rig, SLOT(commSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString)));
|
||||
connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32,QString)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString)));
|
||||
connect(this, SIGNAL(sendCommSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)), rig, SLOT(commSetup(unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)));
|
||||
connect(this, SIGNAL(sendCommSetup(unsigned char, QString, quint32,QString, quint16)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString, quint16)));
|
||||
connect(this, SIGNAL(setRTSforPTT(bool)), rig, SLOT(setRTSforPTT(bool)));
|
||||
|
||||
connect(rig, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32)));
|
||||
|
@ -477,6 +476,23 @@ void wfmain::findSerialPort()
|
|||
{
|
||||
// Find the ICOM radio connected, or, if none, fall back to OS default.
|
||||
// qInfo(logSystem()) << "Searching for serial port...";
|
||||
bool found = false;
|
||||
// First try to find first Icom port:
|
||||
foreach(const QSerialPortInfo & serialPortInfo, QSerialPortInfo::availablePorts())
|
||||
{
|
||||
if (serialPortInfo.serialNumber().left(3) == "IC-") {
|
||||
qInfo(logSystem()) << "Serial Port found: " << serialPortInfo.portName() << "Manufacturer:" << serialPortInfo.manufacturer() << "Product ID" << serialPortInfo.description() << "S/N" << serialPortInfo.serialNumber();
|
||||
#if defined(Q_OS_LINUX) || defined(Q_OS_MAC)
|
||||
serialPortRig = (QString("/dev/") + serialPortInfo.portName());
|
||||
#else
|
||||
serialPortRig = serialPortInfo.portName();
|
||||
#endif
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
QDirIterator it73("/dev/serial/by-id", QStringList() << "*IC-7300*", QDir::Files, QDirIterator::Subdirectories);
|
||||
QDirIterator it97("/dev/serial", QStringList() << "*IC-9700*A*", QDir::Files, QDirIterator::Subdirectories);
|
||||
QDirIterator it785x("/dev/serial", QStringList() << "*IC-785*A*", QDir::Files, QDirIterator::Subdirectories);
|
||||
|
@ -508,7 +524,8 @@ void wfmain::findSerialPort()
|
|||
{
|
||||
// IC-R8600
|
||||
serialPortRig = itR8600.filePath();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
//fall back:
|
||||
qInfo(logSystem()) << "Could not find Icom serial port. Falling back to OS default. Use --port to specify, or modify preferences.";
|
||||
#ifdef Q_OS_MAC
|
||||
|
@ -521,6 +538,7 @@ void wfmain::findSerialPort()
|
|||
serialPortRig = QString("COM1");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void wfmain::receiveCommReady()
|
||||
|
@ -1177,7 +1195,7 @@ void wfmain::setSerialDevicesUI()
|
|||
{
|
||||
portList.append(serialPortInfo.portName());
|
||||
#if defined(Q_OS_LINUX) || defined(Q_OS_MAC)
|
||||
ui->serialDeviceListCombo->addItem(QString("/dev/")+serialPortInfo.portName(), i++);
|
||||
ui->serialDeviceListCombo->addItem(QString("/dev/") + serialPortInfo.portName(), i++);
|
||||
#else
|
||||
ui->serialDeviceListCombo->addItem(serialPortInfo.portName(), i++);
|
||||
//qInfo(logSystem()) << "Serial Port found: " << serialPortInfo.portName() << "Manufacturer:" << serialPortInfo.manufacturer() << "Product ID" << serialPortInfo.description() << "S/N" << serialPortInfo.serialNumber();
|
||||
|
@ -1202,18 +1220,18 @@ void wfmain::setSerialDevicesUI()
|
|||
#ifdef Q_OS_MAC
|
||||
QString vspName = QStandardPaths::standardLocations(QStandardPaths::DownloadLocation)[0] + "/rig-pty";
|
||||
#else
|
||||
QString vspName=QDir::homePath()+"/rig-pty";
|
||||
QString vspName = QDir::homePath() + "/rig-pty";
|
||||
#endif
|
||||
for (i=1;i<8;i++) {
|
||||
for (i = 1; i < 8; i++) {
|
||||
ui->vspCombo->addItem(vspName + QString::number(i));
|
||||
|
||||
if (QFile::exists(vspName+QString::number(i))) {
|
||||
auto * model = qobject_cast<QStandardItemModel*>(ui->vspCombo->model());
|
||||
auto *item = model->item(ui->vspCombo->count()-1);
|
||||
if (QFile::exists(vspName + QString::number(i))) {
|
||||
auto* model = qobject_cast<QStandardItemModel*>(ui->vspCombo->model());
|
||||
auto* item = model->item(ui->vspCombo->count() - 1);
|
||||
item->setEnabled(false);
|
||||
}
|
||||
}
|
||||
ui->vspCombo->addItem(vspName+QString::number(i));
|
||||
ui->vspCombo->addItem(vspName + QString::number(i));
|
||||
ui->vspCombo->addItem(QString("None"), i++);
|
||||
|
||||
#endif
|
||||
|
@ -1370,6 +1388,7 @@ void wfmain::setDefPrefs()
|
|||
defPrefs.confirmExit = true;
|
||||
defPrefs.confirmPowerOff = true;
|
||||
defPrefs.meter2Type = meterNone;
|
||||
defPrefs.tcpPort = 0;
|
||||
|
||||
udpDefPrefs.ipAddress = QString("");
|
||||
udpDefPrefs.controlLANPort = 50001;
|
||||
|
@ -1515,6 +1534,8 @@ void wfmain::loadSettings()
|
|||
ui->lanEnableBtn->setChecked(prefs.enableLAN);
|
||||
ui->connectBtn->setEnabled(true);
|
||||
|
||||
prefs.tcpPort = settings->value("TcpServerPort", defPrefs.tcpPort).toInt();
|
||||
|
||||
prefs.enableRigCtlD = settings->value("EnableRigCtlD", defPrefs.enableRigCtlD).toBool();
|
||||
ui->enableRigctldChk->setChecked(prefs.enableRigCtlD);
|
||||
prefs.rigCtlPort = settings->value("RigCtlPort", defPrefs.rigCtlPort).toInt();
|
||||
|
@ -1966,6 +1987,7 @@ void wfmain::saveSettings()
|
|||
settings->beginGroup("LAN");
|
||||
settings->setValue("EnableLAN", prefs.enableLAN);
|
||||
settings->setValue("EnableRigCtlD", prefs.enableRigCtlD);
|
||||
settings->setValue("TcpServerPort", prefs.tcpPort);
|
||||
settings->setValue("RigCtlPort", prefs.rigCtlPort);
|
||||
settings->setValue("IPAddress", udpPrefs.ipAddress);
|
||||
settings->setValue("ControlLANPort", udpPrefs.controlLANPort);
|
||||
|
|
5
wfmain.h
5
wfmain.h
|
@ -164,8 +164,8 @@ signals:
|
|||
void sayFrequency();
|
||||
void sayMode();
|
||||
void sayAll();
|
||||
void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp, quint16 tcp);
|
||||
void sendCommSetup(unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp);
|
||||
void sendCloseComm();
|
||||
void sendChangeLatency(quint16 latency);
|
||||
void initServer();
|
||||
|
@ -764,6 +764,7 @@ private:
|
|||
bool confirmExit;
|
||||
bool confirmPowerOff;
|
||||
meterKind meter2Type;
|
||||
quint16 tcpPort;
|
||||
// plot scheme
|
||||
} prefs;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue