diff --git a/rigcommander.cpp b/rigcommander.cpp index 4ece2ea..f545979 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -61,13 +61,20 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu comm = new commHandler(rigSerialPort, rigBaudRate); ptty = new pttyHandler(vsp); + tcp = new tcpServer(); + // data from the comm port to the program: connect(comm, SIGNAL(haveDataFromPort(QByteArray)), this, SLOT(handleNewData(QByteArray))); // 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))); connect(this, SIGNAL(toggleRTS(bool)), comm, SLOT(setRTS(bool))); // data from the rig to the ptty: @@ -100,6 +107,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud setup(); // --- + if (udp == Q_NULLPTR) { udp = new udpHandler(prefs,rxSetup,txSetup); @@ -120,12 +128,18 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud ptty = new pttyHandler(vsp); + tcp = new tcpServer(this); + // 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(dataToPort(QByteArray))); + + // Audio from UDP connect(udp, SIGNAL(haveAudioData(audioPacket)), this, SLOT(receiveAudioData(audioPacket))); @@ -135,6 +149,9 @@ 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: + connect(tcp, SIGNAL(haveDataFromPort(QByteArray)), udp, SLOT(receiveDataFromUserToRig(QByteArray))); + connect(this, SIGNAL(haveChangeLatency(quint16)), udp, SLOT(changeLatency(quint16))); connect(this, SIGNAL(haveSetVolume(unsigned char)), udp, SLOT(setVolume(unsigned char))); connect(udp, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32))); diff --git a/rigcommander.h b/rigcommander.h index 00754a2..dc10f40 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -12,6 +12,7 @@ #include "rigidentities.h" #include "repeaterattributes.h" #include "freqmemory.h" +#include "tcpserver.h" #include "rigstate.h" @@ -425,6 +426,7 @@ private: commHandler* comm = Q_NULLPTR; pttyHandler* ptty = Q_NULLPTR; + tcpServer* tcp = Q_NULLPTR; udpHandler* udp=Q_NULLPTR; QThread* udpHandlerThread = Q_NULLPTR; diff --git a/tcpserver.cpp b/tcpserver.cpp new file mode 100644 index 0000000..85c0c4a --- /dev/null +++ b/tcpserver.cpp @@ -0,0 +1,56 @@ +#include "tcpserver.h" + +#include "logcategories.h" + +tcpServer::tcpServer(QObject* parent) : QObject(parent) +{ + server = new QTcpServer(this); + connect(server, SIGNAL(newConnection()), this, SLOT(newConnection())); + if (!server->listen(QHostAddress::Any, 5010)) + { + qDebug() << "TCP Server could not start"; + } + else + { + qDebug() << "TCP Server started!"; + } +} + +tcpServer::~tcpServer() +{ + if (socket != Q_NULLPTR) + { + socket->close(); + delete socket; + } + server->close(); + delete server; + +} + +void tcpServer::newConnection() +{ + qDebug(logSystem()) << QString("Incoming Connection"); + socket = server->nextPendingConnection(); + connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); +} + +void tcpServer::readyRead() { + QByteArray data; + if (socket->bytesAvailable()) { + data=socket->readAll(); + emit haveDataFromPort(data); + } + //qDebug(logSystem()) << QString("Data IN!"); + +} + + +void tcpServer::dataToPort(QByteArray data) { + //qDebug(logSystem()) << QString("TCP Send"); + + if (socket != Q_NULLPTR) { + socket->write(data); + socket->flush(); + } +} \ No newline at end of file diff --git a/tcpserver.h b/tcpserver.h new file mode 100644 index 0000000..2b17730 --- /dev/null +++ b/tcpserver.h @@ -0,0 +1,26 @@ +#ifndef TCPSERVER_H +#define TCPSERVER_H + +#include +#include +#include +#include +class tcpServer : + public QObject +{ + Q_OBJECT +public: + explicit tcpServer(QObject* parent = 0); + ~tcpServer(); +public slots: + void dataToPort(QByteArray data); + void readyRead(); + void newConnection(); +signals: + void haveDataFromPort(QByteArray data); // emit this when we have data, connect to rigcommander +private: + QTcpServer* server; + QTcpSocket* socket = Q_NULLPTR; +}; + +#endif \ No newline at end of file diff --git a/wfview.pro b/wfview.pro index 9128711..7fc84cf 100644 --- a/wfview.pro +++ b/wfview.pro @@ -164,6 +164,7 @@ SOURCES += main.cpp\ ring/ring.cpp \ transceiveradjustments.cpp \ selectradio.cpp \ + tcpserver.cpp \ aboutbox.cpp HEADERS += wfmain.h \ @@ -192,6 +193,7 @@ HEADERS += wfmain.h \ transceiveradjustments.h \ audiotaper.h \ selectradio.h \ + tcpserver.h \ aboutbox.h diff --git a/wfview.vcxproj b/wfview.vcxproj index 37ea711..ac20f37 100644 --- a/wfview.vcxproj +++ b/wfview.vcxproj @@ -57,7 +57,7 @@ Sync release\ MaxSpeed - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="41e90bb";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="ece5933";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) false MultiThreadedDLL @@ -85,7 +85,7 @@ 0 - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"41e90bb\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"ece5933\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppdefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cppUic'ing %(Identity)...$(ProjectDir)ui_%(Filename).h @@ -99,7 +99,7 @@ Sync debug\ Disabled - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="41e90bb";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX="/usr/local";GITSHORT="ece5933";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions) false MultiThreadedDebugDLL true @@ -124,7 +124,7 @@ 0 - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"41e90bb\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFVIEW;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;PREFIX=\"/usr/local\";GITSHORT=\"ece5933\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppdefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cppUic'ing %(Identity)...$(ProjectDir)ui_%(Filename).h @@ -147,6 +147,7 @@ + @@ -293,6 +294,16 @@ + + + + + + + + + + @@ -394,6 +405,8 @@ + + diff --git a/wfview.vcxproj.filters b/wfview.vcxproj.filters index a756bf0..bc556d8 100644 --- a/wfview.vcxproj.filters +++ b/wfview.vcxproj.filters @@ -104,6 +104,9 @@ Source Files + + Source Files + Source Files @@ -187,6 +190,9 @@ Header Files + + Header Files + Header Files @@ -252,6 +258,8 @@ + +