Fix memory mode and start to add admin support

creator-widgets
Phil Taylor 2023-12-18 15:48:17 +00:00
rodzic 9680518963
commit c318387de9
7 zmienionych plików z 27 dodań i 20 usunięć

Wyświetl plik

@ -173,7 +173,7 @@ void rigCommander::commSetup(QHash<unsigned char,QString> rigList, unsigned char
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(quint8, quint8, QString, QString)), this, SLOT(radioUsage(quint8, quint8, QString, QString)));
connect(udp, SIGNAL(setRadioUsage(quint8, bool, quint8, QString, QString)), this, SLOT(radioUsage(quint8, bool, quint8, QString, QString)));
connect(this, SIGNAL(selectedRadio(quint8)), udp, SLOT(setCurrentRadio(quint8)));
emit haveAfGain(rxSetup.localAFgain);
@ -2331,8 +2331,8 @@ void rigCommander::radioSelection(QList<radio_cap_packet> radios)
emit requestRadioSelection(radios);
}
void rigCommander::radioUsage(quint8 radio, quint8 busy, QString user, QString ip) {
emit setRadioUsage(radio, busy, user, ip);
void rigCommander::radioUsage(quint8 radio, bool admin, quint8 busy, QString user, QString ip) {
emit setRadioUsage(radio, admin, busy, user, ip);
}
void rigCommander::setCurrentRadio(quint8 radio) {
@ -2578,17 +2578,19 @@ void rigCommander::receiveCommand(funcs func, QVariant value, bool sub)
qInfo(logRig()) << "Get Memory Contents" << (value.value<uint>() & 0xffff);
qInfo(logRig()) << "Get Memory Group (if exists)" << (value.value<uint>() >> 16 & 0xffff);
// Format is different for all radios!
for (auto &parse: rigCaps.memParser) {
// If "a" exists, break out of the loop as soon as we have the value.
if (parse.spec == 'a') {
if (parse.len == 1) {
payload.append(bcdEncodeChar(value.value<uint>() >> 16 & 0xff));
if (func == funcMemoryContents) {
for (auto &parse: rigCaps.memParser) {
// If "a" exists, break out of the loop as soon as we have the value.
if (parse.spec == 'a') {
if (parse.len == 1) {
payload.append(bcdEncodeChar(value.value<uint>() >> 16 & 0xff));
}
else if (parse.len == 2)
{
payload.append(bcdEncodeInt(value.value<uint>() >> 16 & 0xffff));
}
break;
}
else if (parse.len == 2)
{
payload.append(bcdEncodeInt(value.value<uint>() >> 16 & 0xffff));
}
break;
}
}
payload.append(bcdEncodeInt(value.value<uint>() & 0xffff));

Wyświetl plik

@ -71,7 +71,7 @@ public slots:
void handleStatusUpdate(const networkStatus status);
void handleNetworkAudioLevels(networkAudioLevels);
void radioSelection(QList<radio_cap_packet> radios);
void radioUsage(quint8 radio, quint8 busy, QString name, QString ip);
void radioUsage(quint8 radio, bool admin, quint8 busy, QString name, QString ip);
void setCurrentRadio(quint8 radio);
void getDebug();
void receiveCommand(funcs func, QVariant value, bool sub);
@ -133,7 +133,7 @@ signals:
void haveAfGain(unsigned char level);
// Housekeeping:
void requestRadioSelection(QList<radio_cap_packet> radios);
void setRadioUsage(quint8 radio, quint8 busy, QString user, QString ip);
void setRadioUsage(quint8 radio, bool admin, quint8 busy, QString user, QString ip);
void selectedRadio(quint8 radio);
void getMoreDebug();
void finished();

Wyświetl plik

@ -33,7 +33,7 @@ void selectRadio::populate(QList<radio_cap_packet> radios)
}
}
void selectRadio::setInUse(quint8 radio, quint8 busy, QString user, QString ip)
void selectRadio::setInUse(quint8 radio, bool admin, quint8 busy, QString user, QString ip)
{
//if ((radio > 0)&& !this->isVisible()) {
// qInfo() << "setInUse: radio:" << radio <<"busy" << busy << "user" << user << "ip"<<ip;

Wyświetl plik

@ -24,7 +24,7 @@ public:
public slots:
void on_table_cellClicked(int row, int col);
void setInUse(quint8 radio, quint8 busy, QString user, QString ip);
void setInUse(quint8 radio, bool admin, quint8 busy, QString user, QString ip);
void on_cancelButton_clicked();
signals:

Wyświetl plik

@ -454,7 +454,12 @@ void udpHandler::dataReceived()
radios[f].macaddress[5] == in->macaddress[5]) ||
!memcmp(radios[f].guid,in->guid, GUIDLEN))
{
emit setRadioUsage(f, in->busy, QString(in->computer), ip.toString());
bool admin=false;
if (in->busy && in->computer[0] != '\x0')
admin = true;
emit setRadioUsage(f, admin, in->busy, QString(in->computer), ip.toString());
qDebug(logUdp()) << "Set radio usage num:" << f << in->name << "Busy:" << in->busy << "Computer" << in->computer << "IP" << ip.toString();
}
}

Wyświetl plik

@ -69,7 +69,7 @@ signals:
void haveNetworkAudioLevels(networkAudioLevels);
void haveBaudRate(quint32 baudrate);
void requestRadioSelection(QList<radio_cap_packet> radios);
void setRadioUsage(quint8, quint8 busy, QString name, QString mac);
void setRadioUsage(quint8, bool admin, quint8 busy, QString name, QString mac);
private:

Wyświetl plik

@ -408,7 +408,7 @@ void wfmain::makeRig()
connect(rig, SIGNAL(haveNetworkAudioLevels(networkAudioLevels)), this, SLOT(receiveNetworkAudioLevels(networkAudioLevels)));
connect(rig, SIGNAL(requestRadioSelection(QList<radio_cap_packet>)), this, SLOT(radioSelection(QList<radio_cap_packet>)));
connect(rig, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), selRad, SLOT(setInUse(quint8, quint8, QString, QString)));
connect(rig, SIGNAL(setRadioUsage(quint8, bool, quint8, QString, QString)), selRad, SLOT(setInUse(quint8, bool, quint8, QString, QString)));
connect(selRad, SIGNAL(selectedRadio(quint8)), rig, SLOT(setCurrentRadio(quint8)));
// Rig comm setup:
connect(this, SIGNAL(sendCommSetup(rigTypedef,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)), rig, SLOT(commSetup(rigTypedef,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)));