kopia lustrzana https://gitlab.com/eliggett/wfview
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
rodzic
cd7ea97242
commit
77509aead6
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -118,6 +118,7 @@ struct rigCapabilities {
|
|||
|
||||
bool hasTransmit;
|
||||
bool hasPTTCommand;
|
||||
bool useRTSforPTT;
|
||||
bool hasAttenuator;
|
||||
bool hasPreamp;
|
||||
bool hasAntennaSel;
|
||||
|
|
Ładowanie…
Reference in New Issue