Contains code to set modulation input (mic, acc, usb, lan), and to set

the gain of each type. Is not tested.
merge-requests/2/head
Elliott Liggett 2021-02-17 00:00:28 -08:00
rodzic d03d781713
commit a229fc9ccb
2 zmienionych plików z 167 dodań i 11 usunięć

Wyświetl plik

@ -963,12 +963,93 @@ void rigCommander::setMicGain(unsigned char gain)
prepDataAndSend(payload);
}
void rigCommander::setUSBGain(unsigned char gain)
void rigCommander::setModInput(rigInput input)
{
QByteArray payload;
QByteArray inAsByte;
switch(rigCaps.model)
{
case model9700:
payload.setRawData("\x1A\x05\x01\x15", 4);
payload.append((unsigned char)input);
break;
case model7610:
payload.setRawData("\x1A\x05\x00\x91", 4);
payload.append((unsigned char)input);
break;
case model7300:
payload.setRawData("\x1A\x05\x00\x67", 4);
payload.append((unsigned char)input);
break;
case model7850:
payload.setRawData("\x1A\x05\x00\x63", 4);
switch(input)
{
case inputMic:
inAsByte.setRawData("\x00", 1);
break;
case inputACCA:
inAsByte.setRawData("\x01", 1);
break;
case inputACCB:
inAsByte.setRawData("\x02", 1);
break;
case inputUSB:
inAsByte.setRawData("\x08", 1);
break;
case inputLAN:
inAsByte.setRawData("\x09", 1);
break;
default:
return;
}
payload.append(inAsByte);
break;
case model705:
payload.setRawData("\x1A\x05\x01\x18", 4);
switch(input)
{
case inputMic:
inAsByte.setRawData("\x00", 1);
break;
case inputUSB:
inAsByte.setRawData("\x01", 1);
break;
case inputLAN: // WLAN
inAsByte.setRawData("\x03", 1);
break;
default:
return;
}
payload.append(inAsByte);
break;
default:
break;
}
prepDataAndSend(payload);
}
void rigCommander::setModInputDataMode(rigInput input)
{
(void)input;
}
QByteArray rigCommander::getUSBAddr()
{
QByteArray payload;
switch(rigCaps.model)
{
case model705:
payload.setRawData("\x1A\x05\x01\x16", 4);
break;
case model9700:
payload.setRawData("\x1A\x05\x01\x13", 4);
break;
@ -986,24 +1067,85 @@ void rigCommander::setUSBGain(unsigned char gain)
payload.setRawData("\x1A\x05\x00\x29", 4);
break;
default:
return;
break;
}
return payload;
}
void rigCommander::setUSBGain(unsigned char gain)
{
QByteArray payload = getUSBAddr();
payload.append(bcdEncodeInt(gain));
prepDataAndSend(payload);
}
QByteArray rigCommander::getLANAddr()
{
QByteArray payload;
switch(rigCaps.model)
{
case model705:
payload.setRawData("\x1A\x05\x01\x17", 4);
break;
case model9700:
payload.setRawData("\x1A\x05\x01\x14", 4);
break;
case model7610:
payload.setRawData("\x1A\x05\x00\x90", 4);
break;
case model7850:
payload.setRawData("\x1A\x05\x00\x62", 4);
break;
default:
break;
}
return payload;
}
void rigCommander::setLANGain(unsigned char gain)
{
QByteArray payload("\x1A\x05\x01\x14");
QByteArray payload = getLANAddr();
payload.append(bcdEncodeInt(gain));
prepDataAndSend(payload);
}
QByteArray rigCommander::getACCAddr()
{
QByteArray payload;
// Note: the manual for the IC-7600 does not call out a
// register to adjust the ACC gain.
switch(rigCaps.model)
{
case model9700:
payload.setRawData("\x1A\x05\x01\x12", 4);
break;
case model7100:
payload.setRawData("\x1A\x05\x00\x87", 4);
break;
case model7610:
payload.setRawData("\x1A\x05\x00\x88", 4);
break;
case model7300:
payload.setRawData("\x1A\x05\x00\x64", 4);
break;
case model7850:
// Note: 0x58 = ACC-A, 0x59 = ACC-B
payload.setRawData("\x1A\x05\x00\x58", 4);
break;
default:
break;
}
return payload;
}
void rigCommander::setACCGain(unsigned char gain)
{
QByteArray payload("\x1A\x05\x01\x12");
QByteArray payload = getACCAddr();
payload.append(bcdEncodeInt(gain));
prepDataAndSend(payload);
}
@ -1271,9 +1413,6 @@ void rigCommander::parsePTT()
{
// read after payloadIn[02]
// Because I'm not sure about this:
qDebug() << "PTT status received, here is the hex dump:";
printHex(payloadIn, false, true);
if(payloadIn[2] == (char)0)
{
// PTT off
@ -1444,8 +1583,6 @@ void rigCommander::parseWFData()
void rigCommander::determineRigCaps()
{
//TODO: Add if(usingNativeLAN) condition
//TODO: Add "hasDD", "hasDV" for d-star (705 and 9700)
//TODO: Determine available bands (low priority, rig will reject out of band requests anyway)
@ -1928,6 +2065,11 @@ void rigCommander::getDebug()
emit getMoreDebug();
}
void rigCommander::printHex(const QByteArray &pdata)
{
printHex(pdata, false, true);
}
void rigCommander::printHex(const QByteArray &pdata, bool printVert, bool printHoriz)
{
qDebug() << "---- Begin hex dump -----:";

Wyświetl plik

@ -15,6 +15,12 @@
// note: using a define because switch case doesn't even work with const unsigned char. Surprised me.
#define compCivAddr 0xE1
enum rigInput{ inputMic=0,
inputACC=1,
inputUSB=3,
inputLAN=5,
inputACCA,
inputACCB};
class rigCommander : public QObject
{
@ -91,6 +97,9 @@ public slots:
void setVoxGain(unsigned char gain);
void setAntiVoxGain(unsigned char gain);
void setModInput(rigInput input);
void setModInputDataMode(rigInput input);
void startATU();
void setATU(bool enabled);
void getATUStatus();
@ -180,10 +189,15 @@ private:
void parseATU();
void parseLevels(); // register 0x14
void sendLevelCmd(unsigned char levAddr, unsigned char level);
QByteArray getLANAddr();
QByteArray getUSBAddr();
QByteArray getACCAddr();
void sendDataOut();
void prepDataAndSend(QByteArray data);
void debugMe();
void printHex(const QByteArray &pdata);
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);
commHandler * comm=Q_NULLPTR;
udpHandler* udp=Q_NULLPTR;
void determineRigCaps();