Added RTS PTT support commHandler and rigCommander. RTS is only sent

from rigCommander at this time, the pty is not parsed.
merge-requests/7/head
Elliott Liggett 2021-11-05 23:21:36 -07:00
rodzic cd7ea97242
commit 77509aead6
5 zmienionych plików z 51 dodań i 6 usunięć

Wyświetl plik

@ -45,6 +45,7 @@ commHandler::commHandler(QString portName, quint32 baudRate)
baudrate = baudRate;
stopbits = 1;
this->portName = portName;
this->PTTviaRTS = false;
setupComm(); // basic parameters
openPort();
@ -162,6 +163,25 @@ void commHandler::receiveDataIn()
}
}
void commHandler::setRTS(bool rtsOn)
{
bool success = port->setRequestToSend(rtsOn);
if(!success)
{
qInfo(logSerial()) << "Error, could not set RTS on port " << portName;
}
}
bool commHandler::rtsStatus()
{
return port->isRequestToSend();
}
void commHandler::setUseRTSforPTT(bool PTTviaRTS)
{
this->PTTviaRTS = PTTviaRTS;
}
void commHandler::openPort()
{
bool success;

Wyświetl plik

@ -18,9 +18,14 @@ public:
commHandler();
commHandler(QString portName, quint32 baudRate);
bool serialError;
bool rtsStatus();
~commHandler();
public slots:
void setUseRTSforPTT(bool useRTS);
void setRTS(bool rtsOn);
private slots:
void receiveDataIn(); // from physical port
void receiveDataFromUserToRig(const QByteArray &data);
@ -38,6 +43,7 @@ private:
void openPort();
void closePort();
void sendDataOut(const QByteArray &writeData); // out to radio
void debugMe();
void hexPrint();
@ -63,6 +69,8 @@ private:
bool havePt;
QString ptDevSlave;
bool PTTviaRTS = false;
bool isConnected; // port opened
mutable QMutex mutex;
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);

Wyświetl plik

@ -63,6 +63,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, QString rigSerialPort, qu
connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
// data from the program to the comm port:
connect(this, SIGNAL(dataForComm(QByteArray)), comm, SLOT(receiveDataFromUserToRig(QByteArray)));
connect(this, SIGNAL(toggleRTS(bool)), comm, SLOT(setRTS(bool)));
// data from the rig to the ptty:
connect(comm, SIGNAL(haveDataFromPort(QByteArray)), ptty, SLOT(receiveDataFromRigToPtty(QByteArray)));
@ -992,9 +993,14 @@ void rigCommander::getSatelliteMode()
void rigCommander::getPTT()
{
QByteArray payload;
payload.setRawData("\x1C\x00", 2);
prepDataAndSend(payload);
if(rigCaps.useRTSforPTT)
{
emit havePTTStatus(comm->rtsStatus());
} else {
QByteArray payload;
payload.setRawData("\x1C\x00", 2);
prepDataAndSend(payload);
}
}
void rigCommander::getBandStackReg(char band, char regCode)
@ -1011,9 +1017,14 @@ void rigCommander::setPTT(bool pttOn)
if(pttAllowed)
{
QByteArray payload("\x1C\x00", 2);
payload.append((char)pttOn);
prepDataAndSend(payload);
if(rigCaps.useRTSforPTT)
{
emit toggleRTS(pttOn);
} else {
QByteArray payload("\x1C\x00", 2);
payload.append((char)pttOn);
prepDataAndSend(payload);
}
rigState.ptt = pttOn;
}
}
@ -2908,6 +2919,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasTransmit = true;
rigCaps.hasPTTCommand = true;
rigCaps.useRTSforPTT = false;
// Common, reasonable defaults for most supported HF rigs:
rigCaps.bsr[band160m] = 0x01;
@ -3321,6 +3333,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasFDcomms = false;
rigCaps.hasATU = true;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasDataModes = false;
rigCaps.attenuators.push_back('\x20');
rigCaps.bands = standardHF;
@ -3341,6 +3354,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasFDcomms = false;
rigCaps.hasATU = false;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasIFShift = true;
rigCaps.hasDataModes = false;
rigCaps.attenuators.push_back('\x20');
@ -3366,6 +3380,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasFDcomms = false;
rigCaps.hasATU = false;
rigCaps.hasPTTCommand = false;
rigCaps.useRTSforPTT = true;
rigCaps.hasDataModes = false;
rigCaps.hasIFShift = true; // untested
rigCaps.attenuators.push_back('\x20');

Wyświetl plik

@ -322,6 +322,7 @@ signals:
void haveSerialPortError(const QString port, const QString errorText);
void haveStatusUpdate(const QString text);
void dataForComm(const QByteArray &outData);
void toggleRTS(bool rtsOn);
// UDP:
void haveChangeLatency(quint16 value);

Wyświetl plik

@ -118,6 +118,7 @@ struct rigCapabilities {
bool hasTransmit;
bool hasPTTCommand;
bool useRTSforPTT;
bool hasAttenuator;
bool hasPreamp;
bool hasAntennaSel;