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
|
||||
#define PACKETTYPES_H
|
||||
#include <QObject>
|
||||
#include <QtCore/quuid.h>
|
||||
|
||||
#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
|
||||
#define PURGE_SECONDS 10
|
||||
#define TOKEN_RENEWAL 60000
|
||||
|
@ -303,7 +293,7 @@ typedef union conninfo_packet {
|
|||
char unusedh; // 0x29
|
||||
char macaddress[6]; // 0x2a
|
||||
};
|
||||
GUID guid; // 0x20
|
||||
quint8 guid[16]; // 0x20
|
||||
};
|
||||
char unusedab[16]; // 0x30
|
||||
char name[32]; // 0x40
|
||||
|
@ -348,7 +338,7 @@ typedef union radio_cap_packet {
|
|||
char unused; // 0x0
|
||||
char macaddress[6]; // 0x0
|
||||
};
|
||||
GUID guid; // 0x0
|
||||
quint8 guid[16]; // 0x0
|
||||
};
|
||||
char name[32]; // 0x10
|
||||
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(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(this, SIGNAL(selectedRadio(int)), udp, SLOT(setCurrentRadio(int)));
|
||||
connect(udp, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), this, SLOT(radioUsage(quint8, quint8, QString, QString)));
|
||||
connect(this, SIGNAL(selectedRadio(quint8)), udp, SLOT(setCurrentRadio(quint8)));
|
||||
emit haveAfGain(rxSetup.localAFgain);
|
||||
localVolume = rxSetup.localAFgain;
|
||||
}
|
||||
|
@ -4281,11 +4281,11 @@ void rigCommander::radioSelection(QList<radio_cap_packet> 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);
|
||||
}
|
||||
|
||||
void rigCommander::setCurrentRadio(int radio) {
|
||||
void rigCommander::setCurrentRadio(quint8 radio) {
|
||||
emit selectedRadio(radio);
|
||||
}
|
||||
|
||||
|
|
|
@ -274,8 +274,8 @@ public slots:
|
|||
// Housekeeping:
|
||||
void handleStatusUpdate(const networkStatus status);
|
||||
void radioSelection(QList<radio_cap_packet> radios);
|
||||
void radioUsage(int radio, bool busy, QString name, QString ip);
|
||||
void setCurrentRadio(int radio);
|
||||
void radioUsage(quint8 radio, quint8 busy, QString name, QString ip);
|
||||
void setCurrentRadio(quint8 radio);
|
||||
void sendState();
|
||||
void getDebug();
|
||||
|
||||
|
@ -369,8 +369,8 @@ signals:
|
|||
|
||||
// Housekeeping:
|
||||
void requestRadioSelection(QList<radio_cap_packet> radios);
|
||||
void setRadioUsage(int radio, bool busy, QString user, QString ip);
|
||||
void selectedRadio(int radio);
|
||||
void setRadioUsage(quint8 radio, quint8 busy, QString user, QString ip);
|
||||
void selectedRadio(quint8 radio);
|
||||
void getMoreDebug();
|
||||
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()) {
|
||||
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, 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) {
|
||||
|
|
|
@ -24,11 +24,11 @@ public:
|
|||
|
||||
public slots:
|
||||
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();
|
||||
|
||||
signals:
|
||||
void selectedRadio(int radio);
|
||||
void selectedRadio(quint8 radio);
|
||||
|
||||
private:
|
||||
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();
|
||||
|
||||
// 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 &&
|
||||
radios[f].macaddress[0] == in->macaddress[0] &&
|
||||
|
@ -370,12 +370,9 @@ void udpHandler::dataReceived()
|
|||
radios[f].macaddress[3] == in->macaddress[3] &&
|
||||
radios[f].macaddress[4] == in->macaddress[4] &&
|
||||
radios[f].macaddress[5] == in->macaddress[5]) ||
|
||||
(radios[f].guid.Data1 == in->guid.Data1 &&
|
||||
radios[f].guid.Data2 == in->guid.Data2 &&
|
||||
radios[f].guid.Data3 == in->guid.Data3 &&
|
||||
radios[f].guid.Data4 == in->guid.Data4))
|
||||
!memcmp(radios[f].guid,in->guid,sizeof(in->guid)))
|
||||
{
|
||||
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) {
|
||||
|
@ -431,14 +428,6 @@ void udpHandler::dataReceived()
|
|||
radio.name << " Audio:" <<
|
||||
radio.audio << "CIV:" << hex << (unsigned char)radio.civ <<
|
||||
"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);
|
||||
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()) << "Find available local ports";
|
||||
|
||||
|
@ -474,12 +463,12 @@ void udpHandler::setCurrentRadio(int radio) {
|
|||
emit haveBaudRate(baudrate);
|
||||
|
||||
if (radios[radio].commoncap == 0x8010) {
|
||||
memcpy(macaddress, radios[radio].macaddress, 6);
|
||||
memcpy(&macaddress, radios[radio].macaddress, sizeof(macaddress));
|
||||
useGuid = false;
|
||||
}
|
||||
else {
|
||||
useGuid = true;
|
||||
guid = radios[radio].guid;
|
||||
memcpy(&guid, radios[radio].guid, sizeof(guid));
|
||||
}
|
||||
|
||||
devName =radios[radio].name;
|
||||
|
@ -507,10 +496,10 @@ void udpHandler::sendRequestStream()
|
|||
p.res = 0x03;
|
||||
if (!useGuid) {
|
||||
p.commoncap = 0x8010;
|
||||
memcpy(p.macaddress, macaddress, 6);
|
||||
memcpy(&p.macaddress, macaddress, 6);
|
||||
}
|
||||
else {
|
||||
p.guid = guid;
|
||||
memcpy(&p.guid, guid, sizeof(p.guid));
|
||||
}
|
||||
p.innerseq = authSeq++;
|
||||
p.tokrequest = tokRequest;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <QByteArray>
|
||||
#include <QVector>
|
||||
#include <QMap>
|
||||
#include <QUuid>
|
||||
|
||||
// Allow easy endian-ness conversions
|
||||
#include <QtEndian>
|
||||
|
@ -237,7 +238,7 @@ public slots:
|
|||
void changeLatency(quint16 value);
|
||||
void setVolume(unsigned char value);
|
||||
void init();
|
||||
void setCurrentRadio(int radio);
|
||||
void setCurrentRadio(quint8 radio);
|
||||
|
||||
|
||||
signals:
|
||||
|
@ -249,7 +250,7 @@ signals:
|
|||
void haveNetworkStatus(networkStatus);
|
||||
void haveBaudRate(quint32 baudrate);
|
||||
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:
|
||||
|
||||
void sendAreYouThere();
|
||||
|
@ -288,7 +289,7 @@ private:
|
|||
quint32 token;
|
||||
// These are for stream ident info.
|
||||
quint8 macaddress[8];
|
||||
GUID guid;
|
||||
quint8 guid[16];
|
||||
bool useGuid = false;
|
||||
QByteArray usernameEncoded;
|
||||
QByteArray passwordEncoded;
|
||||
|
|
|
@ -423,8 +423,8 @@ void wfmain::makeRig()
|
|||
connect(rig, SIGNAL(haveSerialPortError(QString, QString)), this, SLOT(receiveSerialPortError(QString, QString)));
|
||||
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(setRadioUsage(int, bool, QString, QString)), selRad, SLOT(setInUse(int, bool, QString, QString)));
|
||||
connect(selRad, SIGNAL(selectedRadio(int)), rig, SLOT(setCurrentRadio(int)));
|
||||
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)));
|
||||
|
@ -1422,7 +1422,6 @@ void wfmain::loadSettings()
|
|||
prefs.colorScheme.Light_TuningLine = QColor::fromRgba(settings->value("Light_TuningLine", defaultColors.Light_TuningLine.rgba()).toUInt());
|
||||
settings->endGroup();
|
||||
|
||||
|
||||
// Radio and Comms: C-IV addr, port to use
|
||||
settings->beginGroup("Radio");
|
||||
prefs.radioCIVAddr = (unsigned char)settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt();
|
||||
|
|
Ładowanie…
Reference in New Issue