Added request and parse functions for most level and metering data.

merge-requests/2/head
Elliott Liggett 2021-02-15 15:17:48 -08:00
rodzic 529b70b115
commit 7d0b926958
2 zmienionych plików z 243 dodań i 18 usunięć

Wyświetl plik

@ -731,6 +731,10 @@ void rigCommander::parseCommand()
// read levels
parseLevels();
break;
case '\x15':
// Metering such as s, power, etc
parseLevels();
break;
case '\x19':
// qDebug() << "Have rig ID: " << (unsigned int)payloadIn[2];
// printHex(payloadIn, false, true);
@ -807,25 +811,97 @@ void rigCommander::parseLevels()
// "INDEX: 00 01 02 03 04 "
// "DATA: 14 02 00 78 fd "
switch(payloadIn[1])
if(payloadIn[0] = '\x14')
{
case '\x01':
// AF level
emit haveAfGain(level);
break;
case '\x02':
// RX RF Gain
emit haveRfGain(level);
break;
case '\x03':
// Squelch level
emit haveSql(level);
break;
case '\x0A':
// TX RF level
emit haveTxPower(level);
break;
switch(payloadIn[1])
{
case '\x01':
// AF level
emit haveAfGain(level);
break;
case '\x02':
// RX RF Gain
emit haveRfGain(level);
break;
case '\x03':
// Squelch level
emit haveSql(level);
break;
case '\x0A':
// TX RF level
emit haveTxPower(level);
break;
case '\x0B':
// Mic Gain
emit haveMicGain(level);
break;
case '\x0E':
// compressor level
emit haveCompLevel(level);
break;
case '\x15':
// monitor level
emit haveMonitorLevel(level);
break;
case '\x16':
// VOX gain
emit haveVoxGain(level);
break;
case '\x17':
// anti-VOX gain
emit haveAntiVoxGain(level);
break;
default:
qDebug() << "Unknown control level (0x14) received at register " << payloadIn[1] << " with level " << level;
break;
}
return;
}
if(payloadIn[0] = '\x15')
{
switch(payloadIn[1])
{
case '\x02':
// S-Meter
emit haveSMeter(level);
break;
case '\x11':
// RF-Power meter
emit haveRFMeter(level);
break;
case '\x12':
// SWR
emit haveSWRMeter(level);
break;
case '\x13':
// ALC
emit haveALCMeter(level);
break;
case '\x14':
// COMP dB reduction
emit haveCompMeter(level);
break;
case '\x15':
// VD (12V)
emit haveVdMeter(level);
break;
case '\x16':
// ID
emit haveIdMeter(level);
break;
default:
qDebug() << "Unknown meter level (0x15) received at register " << payloadIn[1] << " with level " << level;
break;
}
return;
}
}
void rigCommander::getRfGain()
@ -842,11 +918,124 @@ void rigCommander::getAfGain()
void rigCommander::getSql()
{
// Squelch
QByteArray payload("\x14\x03");
prepDataAndSend(payload);
}
void rigCommander::getTxLevel()
{
QByteArray payload("\x14\x0A");
prepDataAndSend(payload);
}
void rigCommander::getMicGain()
{
QByteArray payload("\x14\x0B");
prepDataAndSend(payload);
}
void rigCommander::getCompLevel()
{
QByteArray payload("\x14\x0E");
prepDataAndSend(payload);
}
void rigCommander::getMonitorLevel()
{
QByteArray payload("\x14\x15");
prepDataAndSend(payload);
}
void rigCommander::getVoxGain()
{
QByteArray payload("\x14\x16");
prepDataAndSend(payload);
}
void rigCommander::getAntiVoxGain()
{
QByteArray payload("\x14\x17");
prepDataAndSend(payload);
}
void rigCommander::getLevels()
{
// Function to grab all levels
qDebug() << __func__ << ": grabbing all levels supported.";
getRfGain();
getAfGain();
getSql();
getTxLevel();
getMicGain();
getCompLevel();
getMonitorLevel();
getVoxGain();
getAntiVoxGain();
}
void rigCommander::getMeters(bool transmitting)
{
// Nice function to just grab every meter
qDebug() << __func__ << ": grabbing all metering for mode " << (transmitting==true? "transmitting":"receiving") ;
if(transmitting)
{
getRFPowerMeter();
getSWRMeter();
getALCMeter();
getCompReductionMeter();
} else {
getSMeter();
}
getVdMeter();
getIDMeter();
}
void rigCommander::getSMeter()
{
QByteArray payload("\x15\x02");
prepDataAndSend(payload);
}
void rigCommander::getRFPowerMeter()
{
QByteArray payload("\x15\x11");
prepDataAndSend(payload);
}
void rigCommander::getSWRMeter()
{
QByteArray payload("\x15\x12");
prepDataAndSend(payload);
}
void rigCommander::getALCMeter()
{
QByteArray payload("\x15\x13");
prepDataAndSend(payload);
}
void rigCommander::getCompReductionMeter()
{
QByteArray payload("\x15\x14");
prepDataAndSend(payload);
}
void rigCommander::getVdMeter()
{
QByteArray payload("\x15\x15");
prepDataAndSend(payload);
}
void rigCommander::getIDMeter()
{
QByteArray payload("\x15\x16");
prepDataAndSend(payload);
}
void rigCommander::setSquelch(unsigned char level)
{
sendLevelCmd(0x03, level);

Wyświetl plik

@ -52,12 +52,33 @@ public slots:
void setPTT(bool pttOn);
void setDataMode(bool dataOn);
void getDataMode();
void getLevels(); // all supported levels
void getRfGain();
void getAfGain();
void getSql();
void getTxLevel();
void getMicGain();
void getCompLevel();
void getMonitorLevel();
void getVoxGain();
void getAntiVoxGain();
void getSMeter();
void getRFPowerMeter();
void getSWRMeter();
void getALCMeter();
void getCompReductionMeter();
void getVdMeter();
void getIDMeter();
void getMeters(bool transmitting); // all supported meters per transmit or receive
void setSquelch(unsigned char level);
void setRfGain(unsigned char level);
void setAfGain(unsigned char level);
void startATU();
void setATU(bool enabled);
void getATUStatus();
@ -92,10 +113,25 @@ signals:
void haveScopeSpan(char span);
void haveSpectrumFixedMode(bool fixedEnabled);
void haveScopeEdge(char edge);
void haveRfGain(unsigned char level);
void haveAfGain(unsigned char level);
void haveSql(unsigned char level);
void haveTxPower(unsigned char level);
void haveMicGain(unsigned char level);
void haveCompLevel(unsigned char level);
void haveMonitorLevel(unsigned char level);
void haveVoxGain(unsigned char gain);
void haveAntiVoxGain(unsigned char gain);
void haveSMeter(unsigned char level);
void haveRFMeter(unsigned char level);
void haveSWRMeter(unsigned char);
void haveALCMeter(unsigned char);
void haveCompMeter(unsigned char dbreduction);
void haveVdMeter(unsigned char voltage);
void haveIdMeter(unsigned char current);
void thing();
void haveRefAdjustCourse(unsigned char level);
void haveRefAdjustFine(unsigned char level);