kopia lustrzana https://gitlab.com/eliggett/wfview
Treat GUID as 16 bytes rather than trying to be clever!
rodzic
87a36426cf
commit
5ae3549ba5
|
@ -1,19 +1,9 @@
|
||||||
#ifndef PACKETTYPES_H
|
#ifndef PACKETTYPES_H
|
||||||
#define PACKETTYPES_H
|
#define PACKETTYPES_H
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QtCore/quuid.h>
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
|
|
||||||
#ifndef Q_OS_WIN
|
|
||||||
typedef struct _GUID {
|
|
||||||
quint32 Data1;
|
|
||||||
quint16 Data2;
|
|
||||||
quint16 Data3;
|
|
||||||
quint8 Data4[8];
|
|
||||||
} GUID;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Various settings used by both client and server
|
// Various settings used by both client and server
|
||||||
#define PURGE_SECONDS 10
|
#define PURGE_SECONDS 10
|
||||||
#define TOKEN_RENEWAL 60000
|
#define TOKEN_RENEWAL 60000
|
||||||
|
@ -303,7 +293,7 @@ typedef union conninfo_packet {
|
||||||
char unusedh; // 0x29
|
char unusedh; // 0x29
|
||||||
char macaddress[6]; // 0x2a
|
char macaddress[6]; // 0x2a
|
||||||
};
|
};
|
||||||
GUID guid; // 0x20
|
quint8 guid[16]; // 0x20
|
||||||
};
|
};
|
||||||
char unusedab[16]; // 0x30
|
char unusedab[16]; // 0x30
|
||||||
char name[32]; // 0x40
|
char name[32]; // 0x40
|
||||||
|
@ -348,7 +338,7 @@ typedef union radio_cap_packet {
|
||||||
char unused; // 0x0
|
char unused; // 0x0
|
||||||
char macaddress[6]; // 0x0
|
char macaddress[6]; // 0x0
|
||||||
};
|
};
|
||||||
GUID guid; // 0x0
|
quint8 guid[16]; // 0x0
|
||||||
};
|
};
|
||||||
char name[32]; // 0x10
|
char name[32]; // 0x10
|
||||||
char audio[32]; // 0x30
|
char audio[32]; // 0x30
|
||||||
|
|
|
@ -139,8 +139,8 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud
|
||||||
connect(this, SIGNAL(discoveredRigID(rigCapabilities)), ptty, SLOT(receiveFoundRigID(rigCapabilities)));
|
connect(this, SIGNAL(discoveredRigID(rigCapabilities)), ptty, SLOT(receiveFoundRigID(rigCapabilities)));
|
||||||
|
|
||||||
connect(udp, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
|
connect(udp, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
|
||||||
connect(udp, SIGNAL(setRadioUsage(int, bool, QString, QString)), this, SLOT(radioUsage(int, bool, QString, QString)));
|
connect(udp, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), this, SLOT(radioUsage(quint8, quint8, QString, QString)));
|
||||||
connect(this, SIGNAL(selectedRadio(int)), udp, SLOT(setCurrentRadio(int)));
|
connect(this, SIGNAL(selectedRadio(quint8)), udp, SLOT(setCurrentRadio(quint8)));
|
||||||
emit haveAfGain(rxSetup.localAFgain);
|
emit haveAfGain(rxSetup.localAFgain);
|
||||||
localVolume = rxSetup.localAFgain;
|
localVolume = rxSetup.localAFgain;
|
||||||
}
|
}
|
||||||
|
@ -4281,11 +4281,11 @@ void rigCommander::radioSelection(QList<radio_cap_packet> radios)
|
||||||
emit requestRadioSelection(radios);
|
emit requestRadioSelection(radios);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rigCommander::radioUsage(int radio, bool busy, QString user, QString ip) {
|
void rigCommander::radioUsage(quint8 radio, quint8 busy, QString user, QString ip) {
|
||||||
emit setRadioUsage(radio, busy, user, ip);
|
emit setRadioUsage(radio, busy, user, ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rigCommander::setCurrentRadio(int radio) {
|
void rigCommander::setCurrentRadio(quint8 radio) {
|
||||||
emit selectedRadio(radio);
|
emit selectedRadio(radio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -274,8 +274,8 @@ public slots:
|
||||||
// Housekeeping:
|
// Housekeeping:
|
||||||
void handleStatusUpdate(const networkStatus status);
|
void handleStatusUpdate(const networkStatus status);
|
||||||
void radioSelection(QList<radio_cap_packet> radios);
|
void radioSelection(QList<radio_cap_packet> radios);
|
||||||
void radioUsage(int radio, bool busy, QString name, QString ip);
|
void radioUsage(quint8 radio, quint8 busy, QString name, QString ip);
|
||||||
void setCurrentRadio(int radio);
|
void setCurrentRadio(quint8 radio);
|
||||||
void sendState();
|
void sendState();
|
||||||
void getDebug();
|
void getDebug();
|
||||||
|
|
||||||
|
@ -369,8 +369,8 @@ signals:
|
||||||
|
|
||||||
// Housekeeping:
|
// Housekeeping:
|
||||||
void requestRadioSelection(QList<radio_cap_packet> radios);
|
void requestRadioSelection(QList<radio_cap_packet> radios);
|
||||||
void setRadioUsage(int radio, bool busy, QString user, QString ip);
|
void setRadioUsage(quint8 radio, quint8 busy, QString user, QString ip);
|
||||||
void selectedRadio(int radio);
|
void selectedRadio(quint8 radio);
|
||||||
void getMoreDebug();
|
void getMoreDebug();
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ void selectRadio::populate(QList<radio_cap_packet> radios)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectRadio::setInUse(int radio, bool busy, QString user, QString ip)
|
void selectRadio::setInUse(quint8 radio, quint8 busy, QString user, QString ip)
|
||||||
{
|
{
|
||||||
if ((radio > 0)&& !this->isVisible()) {
|
if ((radio > 0)&& !this->isVisible()) {
|
||||||
qInfo() << "setInUse: radio:" << radio <<"busy" << busy << "user" << user << "ip"<<ip;
|
qInfo() << "setInUse: radio:" << radio <<"busy" << busy << "user" << user << "ip"<<ip;
|
||||||
|
@ -41,6 +41,15 @@ void selectRadio::setInUse(int radio, bool busy, QString user, QString ip)
|
||||||
}
|
}
|
||||||
ui->table->setItem(radio, 3, new QTableWidgetItem(user));
|
ui->table->setItem(radio, 3, new QTableWidgetItem(user));
|
||||||
ui->table->setItem(radio, 4, new QTableWidgetItem(ip));
|
ui->table->setItem(radio, 4, new QTableWidgetItem(ip));
|
||||||
|
for (int f = 0; f < 5; f++) {
|
||||||
|
if (busy == 1)
|
||||||
|
ui->table->item(radio, f)->setBackground(Qt::darkGreen);
|
||||||
|
else if (busy == 2)
|
||||||
|
ui->table->item(radio, f)->setBackground(Qt::red);
|
||||||
|
else
|
||||||
|
ui->table->item(radio, f)->setBackground(Qt::black);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectRadio::on_table_cellClicked(int row, int col) {
|
void selectRadio::on_table_cellClicked(int row, int col) {
|
||||||
|
|
|
@ -24,11 +24,11 @@ public:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void on_table_cellClicked(int row, int col);
|
void on_table_cellClicked(int row, int col);
|
||||||
void setInUse(int radio, bool busy, QString user, QString ip);
|
void setInUse(quint8 radio, quint8 busy, QString user, QString ip);
|
||||||
void on_cancelButton_clicked();
|
void on_cancelButton_clicked();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void selectedRadio(int radio);
|
void selectedRadio(quint8 radio);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::selectRadio* ui;
|
Ui::selectRadio* ui;
|
||||||
|
|
|
@ -361,7 +361,7 @@ void udpHandler::dataReceived()
|
||||||
qInfo(logUdp()) << "Got Connection status for:" << in->name << "Busy:" << in->busy << "Computer" << in->computer << "IP" << ip.toString();
|
qInfo(logUdp()) << "Got Connection status for:" << in->name << "Busy:" << in->busy << "Computer" << in->computer << "IP" << ip.toString();
|
||||||
|
|
||||||
// First we need to find this radio in our capabilities packet, there aren't many so just step through
|
// First we need to find this radio in our capabilities packet, there aren't many so just step through
|
||||||
for (int f = 0; f < radios.length(); f++)
|
for (unsigned char f = 0; f < radios.length(); f++)
|
||||||
{
|
{
|
||||||
if ((radios[f].commoncap == 0x8010 &&
|
if ((radios[f].commoncap == 0x8010 &&
|
||||||
radios[f].macaddress[0] == in->macaddress[0] &&
|
radios[f].macaddress[0] == in->macaddress[0] &&
|
||||||
|
@ -370,12 +370,9 @@ void udpHandler::dataReceived()
|
||||||
radios[f].macaddress[3] == in->macaddress[3] &&
|
radios[f].macaddress[3] == in->macaddress[3] &&
|
||||||
radios[f].macaddress[4] == in->macaddress[4] &&
|
radios[f].macaddress[4] == in->macaddress[4] &&
|
||||||
radios[f].macaddress[5] == in->macaddress[5]) ||
|
radios[f].macaddress[5] == in->macaddress[5]) ||
|
||||||
(radios[f].guid.Data1 == in->guid.Data1 &&
|
!memcmp(radios[f].guid,in->guid,sizeof(in->guid)))
|
||||||
radios[f].guid.Data2 == in->guid.Data2 &&
|
|
||||||
radios[f].guid.Data3 == in->guid.Data3 &&
|
|
||||||
radios[f].guid.Data4 == in->guid.Data4))
|
|
||||||
{
|
{
|
||||||
emit setRadioUsage(f, (bool)in->busy, QString(in->computer), ip.toString());
|
emit setRadioUsage(f, in->busy, QString(in->computer), ip.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (in->type != 0x01 && !streamOpened) {
|
if (in->type != 0x01 && !streamOpened) {
|
||||||
|
@ -431,14 +428,6 @@ void udpHandler::dataReceived()
|
||||||
radio.name << " Audio:" <<
|
radio.name << " Audio:" <<
|
||||||
radio.audio << "CIV:" << hex << (unsigned char)radio.civ <<
|
radio.audio << "CIV:" << hex << (unsigned char)radio.civ <<
|
||||||
"CAPF" << radio.capf;
|
"CAPF" << radio.capf;
|
||||||
if (radio.txsample < 2)
|
|
||||||
{
|
|
||||||
// TX not supported
|
|
||||||
qInfo(logUdp()) << this->metaObject()->className() << "TX audio is disabled";
|
|
||||||
}
|
|
||||||
if (radio.commoncap != 0x8010) {
|
|
||||||
useGuid = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
emit requestRadioSelection(radios);
|
emit requestRadioSelection(radios);
|
||||||
break;
|
break;
|
||||||
|
@ -453,7 +442,7 @@ void udpHandler::dataReceived()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void udpHandler::setCurrentRadio(int radio) {
|
void udpHandler::setCurrentRadio(quint8 radio) {
|
||||||
qInfo(logUdp()) << "Got Radio" << radio;
|
qInfo(logUdp()) << "Got Radio" << radio;
|
||||||
qInfo(logUdp()) << "Find available local ports";
|
qInfo(logUdp()) << "Find available local ports";
|
||||||
|
|
||||||
|
@ -474,12 +463,12 @@ void udpHandler::setCurrentRadio(int radio) {
|
||||||
emit haveBaudRate(baudrate);
|
emit haveBaudRate(baudrate);
|
||||||
|
|
||||||
if (radios[radio].commoncap == 0x8010) {
|
if (radios[radio].commoncap == 0x8010) {
|
||||||
memcpy(macaddress, radios[radio].macaddress, 6);
|
memcpy(&macaddress, radios[radio].macaddress, sizeof(macaddress));
|
||||||
useGuid = false;
|
useGuid = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
useGuid = true;
|
useGuid = true;
|
||||||
guid = radios[radio].guid;
|
memcpy(&guid, radios[radio].guid, sizeof(guid));
|
||||||
}
|
}
|
||||||
|
|
||||||
devName =radios[radio].name;
|
devName =radios[radio].name;
|
||||||
|
@ -507,10 +496,10 @@ void udpHandler::sendRequestStream()
|
||||||
p.res = 0x03;
|
p.res = 0x03;
|
||||||
if (!useGuid) {
|
if (!useGuid) {
|
||||||
p.commoncap = 0x8010;
|
p.commoncap = 0x8010;
|
||||||
memcpy(p.macaddress, macaddress, 6);
|
memcpy(&p.macaddress, macaddress, 6);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p.guid = guid;
|
memcpy(&p.guid, guid, sizeof(p.guid));
|
||||||
}
|
}
|
||||||
p.innerseq = authSeq++;
|
p.innerseq = authSeq++;
|
||||||
p.tokrequest = tokRequest;
|
p.tokrequest = tokRequest;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
#include <QUuid>
|
||||||
|
|
||||||
// Allow easy endian-ness conversions
|
// Allow easy endian-ness conversions
|
||||||
#include <QtEndian>
|
#include <QtEndian>
|
||||||
|
@ -237,7 +238,7 @@ public slots:
|
||||||
void changeLatency(quint16 value);
|
void changeLatency(quint16 value);
|
||||||
void setVolume(unsigned char value);
|
void setVolume(unsigned char value);
|
||||||
void init();
|
void init();
|
||||||
void setCurrentRadio(int radio);
|
void setCurrentRadio(quint8 radio);
|
||||||
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -249,7 +250,7 @@ signals:
|
||||||
void haveNetworkStatus(networkStatus);
|
void haveNetworkStatus(networkStatus);
|
||||||
void haveBaudRate(quint32 baudrate);
|
void haveBaudRate(quint32 baudrate);
|
||||||
void requestRadioSelection(QList<radio_cap_packet> radios);
|
void requestRadioSelection(QList<radio_cap_packet> radios);
|
||||||
void setRadioUsage(int, bool busy, QString name, QString mac);
|
void setRadioUsage(quint8, quint8 busy, QString name, QString mac);
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void sendAreYouThere();
|
void sendAreYouThere();
|
||||||
|
@ -288,7 +289,7 @@ private:
|
||||||
quint32 token;
|
quint32 token;
|
||||||
// These are for stream ident info.
|
// These are for stream ident info.
|
||||||
quint8 macaddress[8];
|
quint8 macaddress[8];
|
||||||
GUID guid;
|
quint8 guid[16];
|
||||||
bool useGuid = false;
|
bool useGuid = false;
|
||||||
QByteArray usernameEncoded;
|
QByteArray usernameEncoded;
|
||||||
QByteArray passwordEncoded;
|
QByteArray passwordEncoded;
|
||||||
|
|
|
@ -423,8 +423,8 @@ void wfmain::makeRig()
|
||||||
connect(rig, SIGNAL(haveSerialPortError(QString, QString)), this, SLOT(receiveSerialPortError(QString, QString)));
|
connect(rig, SIGNAL(haveSerialPortError(QString, QString)), this, SLOT(receiveSerialPortError(QString, QString)));
|
||||||
connect(rig, SIGNAL(haveStatusUpdate(networkStatus)), this, SLOT(receiveStatusUpdate(networkStatus)));
|
connect(rig, SIGNAL(haveStatusUpdate(networkStatus)), this, SLOT(receiveStatusUpdate(networkStatus)));
|
||||||
connect(rig, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
|
connect(rig, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
|
||||||
connect(rig, SIGNAL(setRadioUsage(int, bool, QString, QString)), selRad, SLOT(setInUse(int, bool, QString, QString)));
|
connect(rig, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), selRad, SLOT(setInUse(quint8, quint8, QString, QString)));
|
||||||
connect(selRad, SIGNAL(selectedRadio(int)), rig, SLOT(setCurrentRadio(int)));
|
connect(selRad, SIGNAL(selectedRadio(quint8)), rig, SLOT(setCurrentRadio(quint8)));
|
||||||
// Rig comm setup:
|
// 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, 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, QString, quint32,QString)), rig, SLOT(commSetup(unsigned char, QString, quint32,QString)));
|
||||||
|
@ -1422,7 +1422,6 @@ void wfmain::loadSettings()
|
||||||
prefs.colorScheme.Light_TuningLine = QColor::fromRgba(settings->value("Light_TuningLine", defaultColors.Light_TuningLine.rgba()).toUInt());
|
prefs.colorScheme.Light_TuningLine = QColor::fromRgba(settings->value("Light_TuningLine", defaultColors.Light_TuningLine.rgba()).toUInt());
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
|
|
||||||
// Radio and Comms: C-IV addr, port to use
|
// Radio and Comms: C-IV addr, port to use
|
||||||
settings->beginGroup("Radio");
|
settings->beginGroup("Radio");
|
||||||
prefs.radioCIVAddr = (unsigned char)settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt();
|
prefs.radioCIVAddr = (unsigned char)settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt();
|
||||||
|
|
Ładowanie…
Reference in New Issue