kopia lustrzana https://gitlab.com/eliggett/wfview
Connect Civ to/from server
rodzic
e3b3d2a3f4
commit
7966568f17
|
@ -584,6 +584,7 @@ void rigCommander::setCIVAddr(unsigned char civAddr)
|
|||
|
||||
void rigCommander::handleNewData(const QByteArray &data)
|
||||
{
|
||||
emit haveDataForServer(data);
|
||||
parseData(data);
|
||||
}
|
||||
|
||||
|
@ -1959,6 +1960,12 @@ void rigCommander::printHex(const QByteArray &pdata, bool printVert, bool printH
|
|||
qDebug() << "----- End hex dump -----";
|
||||
}
|
||||
|
||||
void rigCommander::dataFromServer(QByteArray data)
|
||||
{
|
||||
qDebug() << "emit dataForComm()";
|
||||
emit dataForComm(data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -109,6 +109,7 @@ public slots:
|
|||
void sayMode();
|
||||
void sayAll();
|
||||
void getDebug();
|
||||
void dataFromServer(QByteArray data);
|
||||
|
||||
signals:
|
||||
void commReady();
|
||||
|
@ -154,6 +155,7 @@ signals:
|
|||
void havePTTStatus(bool pttOn);
|
||||
void haveATUStatus(unsigned char status);
|
||||
void haveChangeBufferSize(quint16 value);
|
||||
void haveDataForServer(QByteArray outData);
|
||||
|
||||
|
||||
private:
|
||||
|
|
|
@ -101,6 +101,9 @@ void udpServer::controlReceived()
|
|||
QNetworkDatagram datagram = udpControl->receiveDatagram();
|
||||
QByteArray r = datagram.data();
|
||||
CLIENT* current = Q_NULLPTR;
|
||||
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||
return;
|
||||
|
||||
foreach(CLIENT * client, controlClients)
|
||||
{
|
||||
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||
|
@ -281,6 +284,9 @@ void udpServer::civReceived()
|
|||
|
||||
CLIENT* current = Q_NULLPTR;
|
||||
|
||||
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||
return;
|
||||
|
||||
foreach(CLIENT * client, civClients)
|
||||
{
|
||||
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||
|
@ -371,6 +377,17 @@ void udpServer::civReceived()
|
|||
}
|
||||
break;
|
||||
default:
|
||||
if (r.length() > 21) {
|
||||
// First check if we are missing any packets?
|
||||
quint8 temp = r[0] - 0x15;
|
||||
if ((quint8)r[16] == 0xc1 && (quint8)r[17] == temp)
|
||||
{
|
||||
qDebug() << "Got CIV from server: " << r.mid(21);
|
||||
emit haveDataFromServer(r.mid(21));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -383,8 +400,12 @@ void udpServer::audioReceived()
|
|||
QByteArray r = datagram.data();
|
||||
CLIENT* current = Q_NULLPTR;
|
||||
|
||||
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||
return;
|
||||
|
||||
foreach(CLIENT * client, audioClients)
|
||||
{
|
||||
|
||||
if (client != Q_NULLPTR && client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||
{
|
||||
current = client;
|
||||
|
@ -758,3 +779,34 @@ void udpServer::sendStatus(CLIENT* c)
|
|||
|
||||
}
|
||||
|
||||
|
||||
#define SEND_SIZE 17
|
||||
void udpServer::dataForServer(QByteArray d)
|
||||
{
|
||||
|
||||
CLIENT* current = Q_NULLPTR;
|
||||
foreach(CLIENT * client, civClients)
|
||||
{
|
||||
qDebug() << "Sending CIV data to " << client->ipAddress.toString();
|
||||
quint8 p[SEND_SIZE];
|
||||
memset(p, 0x0, sizeof(p));
|
||||
qToLittleEndian(client->txSeq, p + 0x06);
|
||||
qToLittleEndian(client->myId, p + 0x08);
|
||||
qToLittleEndian(client->remoteId, p + 0x0c);
|
||||
|
||||
QByteArray t = QByteArray::fromRawData((const char*)p, sizeof(p));
|
||||
p[0x10] = (char)0xc1;
|
||||
qToLittleEndian((quint16)t.length(), p + 0x11);
|
||||
qToLittleEndian((quint16)sizeof(p) + t.length(), p + 0x00);
|
||||
|
||||
t.append(QByteArray::fromRawData((const char*)p, sizeof(p)));
|
||||
qToLittleEndian(client->connSeq, p + 0x12);
|
||||
client->socket->writeDatagram(t, client->ipAddress, client->port);
|
||||
client->connSeq++;
|
||||
client->txSeq++;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -31,6 +31,10 @@ public:
|
|||
|
||||
public slots:
|
||||
void init();
|
||||
void dataForServer(QByteArray);
|
||||
|
||||
signals:
|
||||
void haveDataFromServer(QByteArray);
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -201,6 +201,8 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
|||
|
||||
connect(this, SIGNAL(initServer()), udp, SLOT(init()));
|
||||
connect(serverThread, SIGNAL(finished()), udp, SLOT(deleteLater()));
|
||||
|
||||
|
||||
serverThread->start();
|
||||
|
||||
emit initServer();
|
||||
|
@ -367,6 +369,12 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
|||
// Metering
|
||||
connect(this, SIGNAL(getMeters(bool)), rig, SLOT(getMeters(bool)));
|
||||
|
||||
|
||||
// Server
|
||||
connect(rig, SIGNAL(haveDataForServer(QByteArray)), udp, SLOT(dataForServer(QByteArray)));
|
||||
connect(udp, SIGNAL(haveDataFromServer(QByteArray)), rig, SLOT(dataFromServer(QByteArray)));
|
||||
|
||||
|
||||
ui->plot->addGraph(); // primary
|
||||
ui->plot->addGraph(0, 0); // secondary, peaks, same axis as first?
|
||||
ui->waterfall->addGraph();
|
||||
|
|
Ładowanie…
Reference in New Issue