kopia lustrzana https://gitlab.com/eliggett/wfview
Add some more commands
rodzic
27ac972f4a
commit
979dffc176
100
rigctld.cpp
100
rigctld.cpp
|
@ -1255,11 +1255,46 @@ void rigCtlClient::socketReadyRead()
|
||||||
resp.append(QString("%1").arg(0)); // Always reply with RIG_OK (0)
|
resp.append(QString("%1").arg(0)); // Always reply with RIG_OK (0)
|
||||||
response.append(resp);
|
response.append(resp);
|
||||||
}
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == '\xf5' || command[0] == "get_rig_info"))
|
||||||
|
{
|
||||||
|
quint8 split = rigState->getChar(DUPLEX);
|
||||||
|
quint8 rxa = 1;
|
||||||
|
quint8 txa = split == 0;
|
||||||
|
quint8 rxb = !rxa;
|
||||||
|
quint8 txb = split == 1;
|
||||||
|
QString resp = QString("VFO=%0 Freq=%1 Mode=%2 Width=%3 RX=%4 TX=%5\nVFO=%6 Freq=%7 Mode=%8 Width=%9 RX=%10 TX=%11\nSplit=%12 SatMode=%13\nRig=%14\nApp=wfview\nVersion=%15\n")
|
||||||
|
.arg(getVfoName(0)).arg(rigState->getInt64(VFOAFREQ)).arg(getMode(rigState->getChar(MODE), rigState->getBool(DATAMODE))).arg(rigState->getUInt16(PASSBAND)).arg(rxa).arg(txa)
|
||||||
|
.arg(getVfoName(1)).arg(rigState->getInt64(VFOBFREQ)).arg(getMode(rigState->getChar(MODE), rigState->getBool(DATAMODE))).arg(rigState->getUInt16(PASSBAND)).arg(rxb).arg(txb)
|
||||||
|
.arg(split).arg(rigState->getChar(SATMODEFUNC)).arg(rigCaps.modelName).arg(WFVIEW_VERSION);
|
||||||
|
unsigned long crc = doCrc((unsigned char*)resp.toStdString().c_str(), resp.length());
|
||||||
|
resp = resp + QString("CRC=0x%0").arg(crc, 8, 10, QLatin1Char('0'));
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "a" || command[0] == "get_trn"))
|
||||||
|
{
|
||||||
|
responseCode = -18;
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "A" || command[0] == "set_trn"))
|
||||||
|
{
|
||||||
|
responseCode = -18;
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "G" || command[0] == "vfo_op"))
|
||||||
|
{
|
||||||
|
responseCode = -11;
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "u" || command[0] == "get_func"))
|
||||||
|
{
|
||||||
|
responseCode = -11;
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "U" || command[0] == "set_func"))
|
||||||
|
{
|
||||||
|
responseCode = -11;
|
||||||
|
}
|
||||||
|
else if (command.length() > 0 && (command[0] == "_" || command[0] == "get_info"))
|
||||||
|
{
|
||||||
|
response.append("None");
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
qInfo(logRigCtlD()) << "Unimplemented command" << commands;
|
qInfo(logRigCtlD()) << "Unimplemented command" << commands;
|
||||||
if (command.length() > 0)
|
|
||||||
qInfo(logRigCtlD()) << "Initial command" << command[0];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (longReply) {
|
if (longReply) {
|
||||||
if (command.length() == 2)
|
if (command.length() == 2)
|
||||||
|
@ -1561,6 +1596,26 @@ quint8 rigCtlClient::antFromName(QString name) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
quint8 rigCtlClient::vfoFromName(QString vfo) {
|
||||||
|
|
||||||
|
if (vfo.toUpper() == "VFOA" || vfo.toUpper() == "MAIN") return 0;
|
||||||
|
if (vfo.toUpper() == "VFOB" || vfo.toUpper() == "SUB") return 1;
|
||||||
|
if (vfo.toUpper() == "MEM") return 2;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString rigCtlClient::getVfoName(quint8 vfo)
|
||||||
|
{
|
||||||
|
QString ret;
|
||||||
|
switch (vfo) {
|
||||||
|
case 0: ret = "VFOA"; break;
|
||||||
|
case 1: ret = "VFOB"; break;
|
||||||
|
default: ret = "MEM"; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int rigCtlClient::getCalibratedValue(quint8 meter,cal_table_t cal) {
|
int rigCtlClient::getCalibratedValue(quint8 meter,cal_table_t cal) {
|
||||||
|
|
||||||
int interp;
|
int interp;
|
||||||
|
@ -1592,3 +1647,42 @@ int rigCtlClient::getCalibratedValue(quint8 meter,cal_table_t cal) {
|
||||||
|
|
||||||
return cal.table[i].val - interp;
|
return cal.table[i].val - interp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long rigCtlClient::doCrc(unsigned char* p, size_t n)
|
||||||
|
{
|
||||||
|
unsigned long crc = 0xfffffffful;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
if (crcTable[0] == 0) { genCrc(crcTable); }
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
crc = crcTable[*p++ ^ (crc & 0xff)] ^ (crc >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((~crc) & 0xffffffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rigCtlClient::genCrc(unsigned long crcTable[])
|
||||||
|
{
|
||||||
|
unsigned long POLYNOMIAL = 0xEDB88320;
|
||||||
|
unsigned char b = 0;
|
||||||
|
|
||||||
|
while (0 != ++b)
|
||||||
|
{
|
||||||
|
unsigned long remainder = b;
|
||||||
|
unsigned long bit;
|
||||||
|
for (bit = 8; bit > 0; --bit)
|
||||||
|
{
|
||||||
|
if (remainder & 1)
|
||||||
|
{
|
||||||
|
remainder = (remainder >> 1) ^ POLYNOMIAL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
remainder = (remainder >> 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
crcTable[(size_t)b] = remainder;
|
||||||
|
}
|
||||||
|
}
|
|
@ -403,6 +403,9 @@ private:
|
||||||
rigstate* rigState = Q_NULLPTR;
|
rigstate* rigState = Q_NULLPTR;
|
||||||
rigCtlD* parent;
|
rigCtlD* parent;
|
||||||
bool chkVfoEecuted=false;
|
bool chkVfoEecuted=false;
|
||||||
|
unsigned long crcTable[256];
|
||||||
|
unsigned long doCrc(unsigned char* p, size_t n);
|
||||||
|
void genCrc(unsigned long crcTable[]);
|
||||||
QString getMode(quint8 mode, bool datamode);
|
QString getMode(quint8 mode, bool datamode);
|
||||||
quint8 getMode(QString modeString);
|
quint8 getMode(QString modeString);
|
||||||
QString getFilter(quint8 mode, quint8 filter);
|
QString getFilter(quint8 mode, quint8 filter);
|
||||||
|
@ -410,6 +413,9 @@ private:
|
||||||
quint64 getRadioModes(QString mode = "");
|
quint64 getRadioModes(QString mode = "");
|
||||||
QString getAntName(quint8 ant);
|
QString getAntName(quint8 ant);
|
||||||
quint8 antFromName(QString name);
|
quint8 antFromName(QString name);
|
||||||
|
quint8 vfoFromName(QString vfo);
|
||||||
|
QString getVfoName(quint8 vfo);
|
||||||
|
|
||||||
int getCalibratedValue(quint8 meter,cal_table_t cal);
|
int getCalibratedValue(quint8 meter,cal_table_t cal);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue