kopia lustrzana https://gitlab.com/eliggett/wfview
Fix for crashing pty on mac
rodzic
6a103d051f
commit
35dd0c9c62
|
@ -145,6 +145,7 @@ bool audioHandler::init(const quint8 bits, const quint8 radioChan, const quint16
|
||||||
wf_resampler_get_ratio(resampler, &ratioNum, &ratioDen);
|
wf_resampler_get_ratio(resampler, &ratioNum, &ratioDen);
|
||||||
qInfo(logAudio()) << (isInput ? "Input" : "Output") << "wf_resampler_init() returned: " << resample_error << " ratioNum" << ratioNum << " ratioDen" << ratioDen;
|
qInfo(logAudio()) << (isInput ? "Input" : "Output") << "wf_resampler_init() returned: " << resample_error << " ratioNum" << ratioNum << " ratioDen" << ratioDen;
|
||||||
|
|
||||||
|
qInfo(logAudio()) << (isInput ? "Input" : "Output") << "thread id" << QThread::currentThreadId();
|
||||||
return isInitialized;
|
return isInitialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
pttyHandler::pttyHandler(QString pty)
|
pttyHandler::pttyHandler(QString pty)
|
||||||
{
|
{
|
||||||
//constructor
|
//constructor
|
||||||
if (pty == "" || pty == "None")
|
if (pty == "" || pty.toLower() == "none")
|
||||||
{
|
{
|
||||||
// Just return if pty is not configured.
|
// Just return if pty is not configured.
|
||||||
return;
|
return;
|
||||||
|
@ -94,7 +94,7 @@ void pttyHandler::openPort()
|
||||||
#ifndef Q_OS_WIN
|
#ifndef Q_OS_WIN
|
||||||
ptDevSlave = QString::fromLocal8Bit(ptsname(ptfd));
|
ptDevSlave = QString::fromLocal8Bit(ptsname(ptfd));
|
||||||
|
|
||||||
if (portName != "" && portName != "None")
|
if (portName != "" && portName.toLower() != "none")
|
||||||
{
|
{
|
||||||
if (!QFile::link(ptDevSlave, portName))
|
if (!QFile::link(ptDevSlave, portName))
|
||||||
{
|
{
|
||||||
|
@ -115,7 +115,16 @@ pttyHandler::~pttyHandler()
|
||||||
|
|
||||||
void pttyHandler::receiveDataFromRigToPtty(const QByteArray& data)
|
void pttyHandler::receiveDataFromRigToPtty(const QByteArray& data)
|
||||||
{
|
{
|
||||||
if (isConnected && (unsigned char)data[2] != (unsigned char)0xE1 && (unsigned char)data[3] != (unsigned char)0xE1)
|
int fePos=data.lastIndexOf((char)0xfe);
|
||||||
|
if (fePos>0)
|
||||||
|
fePos=fePos-1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug(logSerial()) << "Invalid command";
|
||||||
|
printHex(data,false,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isConnected && (unsigned char)data.mid(fePos)[2] != (unsigned char)0xE1 && (unsigned char)data.mid(fePos)[3] != (unsigned char)0xE1)
|
||||||
{
|
{
|
||||||
// send to the pseudo port as well
|
// send to the pseudo port as well
|
||||||
// index 2 is dest, 0xE1 is wfview, 0xE0 is assumed to be the other device.
|
// index 2 is dest, 0xE1 is wfview, 0xE0 is assumed to be the other device.
|
||||||
|
@ -124,7 +133,7 @@ void pttyHandler::receiveDataFromRigToPtty(const QByteArray& data)
|
||||||
// 0xE0 = pseudo-term host
|
// 0xE0 = pseudo-term host
|
||||||
// 0x00 = broadcast to all
|
// 0x00 = broadcast to all
|
||||||
//qInfo(logSerial()) << "Sending data from radio to pseudo-terminal";
|
//qInfo(logSerial()) << "Sending data from radio to pseudo-terminal";
|
||||||
sendDataOut(data);
|
sendDataOut(data.mid(fePos));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,7 +267,7 @@ void pttyHandler::closePort()
|
||||||
delete port;
|
delete port;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (isConnected && portName != "" && portName != "None")
|
if (isConnected && portName != "" && portName.toLower() != "none")
|
||||||
{
|
{
|
||||||
QFile::remove(portName);
|
QFile::remove(portName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -590,7 +590,7 @@ void udpCivData::watchdog()
|
||||||
|
|
||||||
void udpCivData::send(QByteArray d)
|
void udpCivData::send(QByteArray d)
|
||||||
{
|
{
|
||||||
// qInfo(logUdp()) << "Sending: (" << d.length() << ") " << d;
|
//qInfo(logUdp()) << "Sending: (" << d.length() << ") " << d;
|
||||||
data_packet p;
|
data_packet p;
|
||||||
memset(p.packet, 0x0, sizeof(p)); // We can't be sure it is initialized with 0x00!
|
memset(p.packet, 0x0, sizeof(p)); // We can't be sure it is initialized with 0x00!
|
||||||
p.len = sizeof(p)+d.length();
|
p.len = sizeof(p)+d.length();
|
||||||
|
@ -642,6 +642,7 @@ void udpCivData::dataReceived()
|
||||||
//qInfo(logUdp()) << "Received: " << datagram.data();
|
//qInfo(logUdp()) << "Received: " << datagram.data();
|
||||||
QByteArray r = datagram.data();
|
QByteArray r = datagram.data();
|
||||||
|
|
||||||
|
|
||||||
switch (r.length())
|
switch (r.length())
|
||||||
{
|
{
|
||||||
case (CONTROL_SIZE): // Control packet
|
case (CONTROL_SIZE): // Control packet
|
||||||
|
@ -678,7 +679,9 @@ void udpCivData::dataReceived()
|
||||||
lastReceived = QTime::currentTime();
|
lastReceived = QTime::currentTime();
|
||||||
if (quint16(in->datalen + 0x15) == (quint16)in->len)
|
if (quint16(in->datalen + 0x15) == (quint16)in->len)
|
||||||
{
|
{
|
||||||
emit receive(r.mid(0x15));
|
//if (r.mid(0x15).length() != 157)
|
||||||
|
emit receive(r.mid(0x15));
|
||||||
|
//qDebug(logUdp()) << "Got incoming CIV datagram" << r.mid(0x15).length();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -687,6 +690,7 @@ void udpCivData::dataReceived()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
udpBase::dataReceived(r); // Call parent function to process the rest.
|
udpBase::dataReceived(r); // Call parent function to process the rest.
|
||||||
|
|
||||||
r.clear();
|
r.clear();
|
||||||
datagram.clear();
|
datagram.clear();
|
||||||
|
|
||||||
|
@ -852,7 +856,7 @@ void udpAudio::watchdog()
|
||||||
/* Just log it at the moment, maybe try signalling the control channel that it needs to
|
/* Just log it at the moment, maybe try signalling the control channel that it needs to
|
||||||
try requesting civ/audio again? */
|
try requesting civ/audio again? */
|
||||||
|
|
||||||
qInfo(logUdp()) << " Audio Watchdog: no audio data received for 2s, restart required";
|
qInfo(logUdp()) << " Audio Watchdog: no audio data received for 2s, restart required?";
|
||||||
alerted = true;
|
alerted = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue