kopia lustrzana https://gitlab.com/eliggett/wfview
More work on rigctld
rodzic
93fc8a9f67
commit
40ba0385ca
|
@ -542,6 +542,7 @@ void rigCommander::setFrequency(freqt freq)
|
|||
|
||||
//printHex(cmdPayload, false, true);
|
||||
prepDataAndSend(cmdPayload);
|
||||
rigState.vfoAFreq = freq;
|
||||
}
|
||||
|
||||
QByteArray rigCommander::makeFreqPayload(freqt freq)
|
||||
|
@ -613,6 +614,8 @@ void rigCommander::setMode(unsigned char mode, unsigned char modeFilter)
|
|||
payload.append(modeFilter);
|
||||
}
|
||||
prepDataAndSend(payload);
|
||||
rigState.mode = mode;
|
||||
rigState.filter = modeFilter;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -629,6 +632,7 @@ void rigCommander::setDataMode(bool dataOn)
|
|||
payload.append("\x00\x00", 2); // data mode off, bandwidth not defined per ICD.
|
||||
}
|
||||
prepDataAndSend(payload);
|
||||
rigState.datamode = dataOn;
|
||||
}
|
||||
|
||||
void rigCommander::getFrequency()
|
||||
|
@ -887,6 +891,7 @@ void rigCommander::setPTT(bool pttOn)
|
|||
QByteArray payload("\x1C\x00", 2);
|
||||
payload.append((char)pttOn);
|
||||
prepDataAndSend(payload);
|
||||
rigState.ptt = pttOn;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1961,6 +1966,7 @@ void rigCommander::parseRegisters1A()
|
|||
// YY: filter selected, 01 through 03.;
|
||||
// if YY is 00 then XX was also set to 00
|
||||
emit haveDataMode((bool)payloadIn[03]);
|
||||
rigState.datamode = (bool)payloadIn[03];
|
||||
break;
|
||||
case '\x07':
|
||||
// IP+ status
|
||||
|
|
|
@ -46,6 +46,7 @@ struct rigStateStruct {
|
|||
unsigned char ptt;
|
||||
unsigned char mode;
|
||||
unsigned char filter;
|
||||
bool datamode;
|
||||
};
|
||||
|
||||
class rigCommander : public QObject
|
||||
|
|
148
rigctld.cpp
148
rigctld.cpp
|
@ -120,8 +120,10 @@ void rigCtlClient::socketReadyRead()
|
|||
const QRegExp rx(QLatin1Literal("[^0-9]+"));
|
||||
auto&& parts = commandBuffer.split(rx);
|
||||
freqt freq;
|
||||
freq.Hz = parts[1].toInt();
|
||||
emit parent->setFrequency(freq);
|
||||
if (parts.length() > 1) {
|
||||
freq.Hz = parts[1].toInt();
|
||||
emit parent->setFrequency(freq);
|
||||
}
|
||||
sendData(QString("RPRT 0\n"));
|
||||
}
|
||||
else if (commandBuffer[num] == "1" || commandBuffer.contains("\\dump_caps"))
|
||||
|
@ -148,11 +150,17 @@ void rigCtlClient::socketReadyRead()
|
|||
}
|
||||
else if (commandBuffer[num] == "m")
|
||||
{
|
||||
sendData(QString("FM\n15000\n"));
|
||||
sendData(QString("%1\n%2\n").arg(getMode(rigState->mode,rigState->datamode)).arg(getFilter(rigState->mode,rigState->filter)));
|
||||
}
|
||||
else if (commandBuffer[num] == "M")
|
||||
{
|
||||
// Set mode
|
||||
const QRegExp rx(QLatin1Literal("\\s+"));
|
||||
auto&& parts = commandBuffer.split(rx);
|
||||
if (parts.length() > 1) {
|
||||
qDebug(logRigCtlD()) << "setting mode: " << getMode(parts[1]);
|
||||
emit parent->setMode(getMode(parts[1]), 0x06);
|
||||
}
|
||||
sendData(QString("RPRT 0\n"));
|
||||
}
|
||||
else if (commandBuffer[num] == "s")
|
||||
|
@ -203,4 +211,138 @@ void rigCtlClient::dumpCaps(QString sep)
|
|||
sendData(QString("DCD type:\tRig capable%1").arg(sep));
|
||||
sendData(QString("Port type:\tNetwork link%1").arg(sep));
|
||||
sendData(QString("\n"));
|
||||
}
|
||||
|
||||
QString rigCtlClient::getFilter(unsigned char mode, unsigned char filter) {
|
||||
|
||||
if (mode == 3 || mode == 7 || mode == 12 || mode == 17) {
|
||||
switch (filter) {
|
||||
case 1:
|
||||
return QString("1200");
|
||||
case 2:
|
||||
return QString("500");
|
||||
case 3:
|
||||
return QString("250");
|
||||
}
|
||||
}
|
||||
else if (mode == 4 || mode == 8)
|
||||
{
|
||||
switch (filter) {
|
||||
case 1:
|
||||
return QString("2400");
|
||||
case 2:
|
||||
return QString("500");
|
||||
case 3:
|
||||
return QString("250");
|
||||
}
|
||||
}
|
||||
else if (mode == 2)
|
||||
{
|
||||
switch (filter) {
|
||||
case 1:
|
||||
return QString("9000");
|
||||
case 2:
|
||||
return QString("6000");
|
||||
case 3:
|
||||
return QString("3000");
|
||||
}
|
||||
}
|
||||
else if (mode == 5)
|
||||
{
|
||||
switch (filter) {
|
||||
case 1:
|
||||
return QString("15000");
|
||||
case 2:
|
||||
return QString("10000");
|
||||
case 3:
|
||||
return QString("7000");
|
||||
}
|
||||
}
|
||||
else { // SSB or unknown mode
|
||||
switch (filter) {
|
||||
case 1:
|
||||
return QString("3000");
|
||||
case 2:
|
||||
return QString("2400");
|
||||
case 3:
|
||||
return QString("1800");
|
||||
}
|
||||
}
|
||||
return QString("");
|
||||
}
|
||||
|
||||
QString rigCtlClient::getMode(unsigned char mode, bool datamode) {
|
||||
switch (mode) {
|
||||
case 0:
|
||||
return QString("LSB");
|
||||
case 1:
|
||||
return QString("USB");
|
||||
case 2:
|
||||
return QString("AM");
|
||||
case 3:
|
||||
return QString("CW");
|
||||
case 4:
|
||||
return QString("RTTY");
|
||||
case 5:
|
||||
return QString("FM");
|
||||
case 6:
|
||||
return QString("WFM");
|
||||
case 7:
|
||||
return QString("CWR");
|
||||
case 8:
|
||||
return QString("RTTYR");
|
||||
case 12:
|
||||
return QString("PKTUSB");
|
||||
case 17:
|
||||
return QString("PKTLSB");
|
||||
case 22:
|
||||
return QString("PKTFM");
|
||||
default:
|
||||
return QString("");
|
||||
}
|
||||
return QString("");
|
||||
}
|
||||
|
||||
unsigned char rigCtlClient::getMode(QString modeString) {
|
||||
|
||||
if (modeString == QString("LSB")) {
|
||||
return 0;
|
||||
}
|
||||
else if (modeString == QString("USB")) {
|
||||
return 1;
|
||||
}
|
||||
else if (modeString == QString("AM")) {
|
||||
return 2;
|
||||
}
|
||||
else if (modeString == QString("CW")) {
|
||||
return 3;
|
||||
}
|
||||
else if (modeString == QString("RTTY")) {
|
||||
return 4;
|
||||
}
|
||||
else if (modeString == QString("FM")) {
|
||||
return 5;
|
||||
}
|
||||
else if (modeString == QString("WFM")) {
|
||||
return 6;
|
||||
}
|
||||
else if (modeString == QString("CWR")) {
|
||||
return 7;
|
||||
}
|
||||
else if (modeString == QString("RTTYR")) {
|
||||
return 8;
|
||||
}
|
||||
else if (modeString == QString("PKTUSB")) {
|
||||
return 1;
|
||||
}
|
||||
else if (modeString == QString("PKTLSB")) {
|
||||
return 0;
|
||||
}
|
||||
else if (modeString == QString("PKTFM")) {
|
||||
return 22;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -29,6 +29,7 @@ signals:
|
|||
void sendData(QString data);
|
||||
void setFrequency(freqt freq);
|
||||
void setPTT(bool state);
|
||||
void setMode(unsigned char mode, unsigned char modeFilter);
|
||||
|
||||
public slots:
|
||||
virtual void incomingConnection(qintptr socketDescriptor);
|
||||
|
@ -67,6 +68,9 @@ private:
|
|||
rigCapabilities rigCaps;
|
||||
rigStateStruct* rigState = Q_NULLPTR;
|
||||
rigCtlD* parent;
|
||||
QString rigCtlClient::getMode(unsigned char mode, bool datamode);
|
||||
unsigned char rigCtlClient::getMode(QString modeString);
|
||||
QString rigCtlClient::getFilter(unsigned char mode, unsigned char filter);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -640,6 +640,7 @@ void wfmain::openRig()
|
|||
if (rigCtl != Q_NULLPTR) {
|
||||
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*)));
|
||||
connect(rigCtl, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt)));
|
||||
connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
|
||||
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue