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)
|
void rigCommander::handleNewData(const QByteArray &data)
|
||||||
{
|
{
|
||||||
|
emit haveDataForServer(data);
|
||||||
parseData(data);
|
parseData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1959,6 +1960,12 @@ void rigCommander::printHex(const QByteArray &pdata, bool printVert, bool printH
|
||||||
qDebug() << "----- End hex dump -----";
|
qDebug() << "----- End hex dump -----";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rigCommander::dataFromServer(QByteArray data)
|
||||||
|
{
|
||||||
|
qDebug() << "emit dataForComm()";
|
||||||
|
emit dataForComm(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,7 @@ public slots:
|
||||||
void sayMode();
|
void sayMode();
|
||||||
void sayAll();
|
void sayAll();
|
||||||
void getDebug();
|
void getDebug();
|
||||||
|
void dataFromServer(QByteArray data);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void commReady();
|
void commReady();
|
||||||
|
@ -154,6 +155,7 @@ signals:
|
||||||
void havePTTStatus(bool pttOn);
|
void havePTTStatus(bool pttOn);
|
||||||
void haveATUStatus(unsigned char status);
|
void haveATUStatus(unsigned char status);
|
||||||
void haveChangeBufferSize(quint16 value);
|
void haveChangeBufferSize(quint16 value);
|
||||||
|
void haveDataForServer(QByteArray outData);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -101,6 +101,9 @@ void udpServer::controlReceived()
|
||||||
QNetworkDatagram datagram = udpControl->receiveDatagram();
|
QNetworkDatagram datagram = udpControl->receiveDatagram();
|
||||||
QByteArray r = datagram.data();
|
QByteArray r = datagram.data();
|
||||||
CLIENT* current = Q_NULLPTR;
|
CLIENT* current = Q_NULLPTR;
|
||||||
|
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach(CLIENT * client, controlClients)
|
foreach(CLIENT * client, controlClients)
|
||||||
{
|
{
|
||||||
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||||
|
@ -281,6 +284,9 @@ void udpServer::civReceived()
|
||||||
|
|
||||||
CLIENT* current = Q_NULLPTR;
|
CLIENT* current = Q_NULLPTR;
|
||||||
|
|
||||||
|
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach(CLIENT * client, civClients)
|
foreach(CLIENT * client, civClients)
|
||||||
{
|
{
|
||||||
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
if (client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||||
|
@ -371,6 +377,17 @@ void udpServer::civReceived()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -383,8 +400,12 @@ void udpServer::audioReceived()
|
||||||
QByteArray r = datagram.data();
|
QByteArray r = datagram.data();
|
||||||
CLIENT* current = Q_NULLPTR;
|
CLIENT* current = Q_NULLPTR;
|
||||||
|
|
||||||
|
if (datagram.senderPort() == 65535 || datagram.senderPort() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach(CLIENT * client, audioClients)
|
foreach(CLIENT * client, audioClients)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (client != Q_NULLPTR && client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
if (client != Q_NULLPTR && client->ipAddress == datagram.senderAddress() && client->port == datagram.senderPort())
|
||||||
{
|
{
|
||||||
current = client;
|
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:
|
public slots:
|
||||||
void init();
|
void init();
|
||||||
|
void dataForServer(QByteArray);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void haveDataFromServer(QByteArray);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,8 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
||||||
|
|
||||||
connect(this, SIGNAL(initServer()), udp, SLOT(init()));
|
connect(this, SIGNAL(initServer()), udp, SLOT(init()));
|
||||||
connect(serverThread, SIGNAL(finished()), udp, SLOT(deleteLater()));
|
connect(serverThread, SIGNAL(finished()), udp, SLOT(deleteLater()));
|
||||||
|
|
||||||
|
|
||||||
serverThread->start();
|
serverThread->start();
|
||||||
|
|
||||||
emit initServer();
|
emit initServer();
|
||||||
|
@ -367,6 +369,12 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent
|
||||||
// Metering
|
// Metering
|
||||||
connect(this, SIGNAL(getMeters(bool)), rig, SLOT(getMeters(bool)));
|
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(); // primary
|
||||||
ui->plot->addGraph(0, 0); // secondary, peaks, same axis as first?
|
ui->plot->addGraph(0, 0); // secondary, peaks, same axis as first?
|
||||||
ui->waterfall->addGraph();
|
ui->waterfall->addGraph();
|
||||||
|
|
Ładowanie…
Reference in New Issue