Several changes suggested in draft pull requests from llange. Fix some

ambiguous places, fix warnings, fix errors when trying to compile with
QT6
This commit is contained in:
Collin Kidder
2023-04-11 21:15:34 -04:00
parent d1185f54b9
commit 780e2fb1a2
6 changed files with 59 additions and 52 deletions
+4 -4
View File
@@ -109,16 +109,16 @@ void ConnectionWindow::readPendingDatagrams()
while(!CANBeaconXml.atEnd() && !CANBeaconXml.hasError()) while(!CANBeaconXml.atEnd() && !CANBeaconXml.hasError())
{ {
CANBeaconXml.readNext(); CANBeaconXml.readNext();
if(CANBeaconXml.name() == "CANBeacon" && !CANBeaconXml.isEndElement()) if(CANBeaconXml.name() == QString("CANBeacon") && !CANBeaconXml.isEndElement())
KayakHost.append(CANBeaconXml.attributes().value("name")); KayakHost.append(CANBeaconXml.attributes().value("name"));
if(CANBeaconXml.name() == "URL") if(CANBeaconXml.name() == QString("URL"))
KayakHost.append(" (" + CANBeaconXml.readElementText() + ')'); KayakHost.append(" (" + CANBeaconXml.readElementText() + ')');
//Kayak can theoretically send multiple busses over one ports //Kayak can theoretically send multiple busses over one ports
//TODO: implement this case in socketcand.cpp //TODO: implement this case in socketcand.cpp
if(CANBeaconXml.name() == "Bus" && !CANBeaconXml.isEndElement()) if(CANBeaconXml.name() == QString("Bus") && !CANBeaconXml.isEndElement())
KayakBus.append(CANBeaconXml.attributes().value("name") + ","); KayakBus.append(CANBeaconXml.attributes().value("name").toUtf8() + ",");
} }
KayakHost = KayakBus.left(KayakBus.length() - 1) + "@" + KayakHost; KayakHost = KayakBus.left(KayakBus.length() - 1) + "@" + KayakHost;
+1 -1
View File
@@ -266,7 +266,7 @@ QString SocketCANd::decodeFrames(QString data, int busNum)
QString framePart = data.mid(firstIndex); //remove starting beginning of payload if not < frame > QString framePart = data.mid(firstIndex); //remove starting beginning of payload if not < frame >
const QString frameStrConst = framePart.left(framePart.indexOf(">")+1); const QString frameStrConst = framePart.left(framePart.indexOf(">")+1);
QString frameStr = frameStrConst; QString frameStr = frameStrConst;
QStringList frameParsed = (frameStr.remove(QRegExp("^<")).remove(QRegExp(">$"))).simplified().split(' '); QStringList frameParsed = (frameStr.remove(QRegularExpression("^<")).remove(QRegularExpression(">$"))).simplified().split(' ');
if(frameParsed.length() < 3) if(frameParsed.length() < 3)
{ {
+4 -4
View File
@@ -2249,14 +2249,14 @@ DBCHandler::DBCHandler()
qDebug() << "Previously loaded DBC file count: " << filecount; qDebug() << "Previously loaded DBC file count: " << filecount;
for (int i=0; i<filecount; i++) for (int i=0; i<filecount; i++)
{ {
QString filename = settings.value("DBC/Filename_" + QString(i),"").toString(); QString filename = settings.value("DBC/Filename_" + QString::number(i),"").toString();
DBCFile * file = loadDBCFile(filename); DBCFile * file = loadDBCFile(filename);
if (file) if (file)
{ {
int bus = settings.value("DBC/AssocBus_" + QString(i),0).toInt(); int bus = settings.value("DBC/AssocBus_" + QString::number(i),0).toInt();
file->setAssocBus(bus); file->setAssocBus(bus);
MatchingCriteria_t matchingCriteria = (MatchingCriteria_t)settings.value("DBC/MatchingCriteria_" + QString(i),0).toInt(); MatchingCriteria_t matchingCriteria = (MatchingCriteria_t)settings.value("DBC/MatchingCriteria_" + QString::number(i),0).toInt();
DBC_ATTRIBUTE attr; DBC_ATTRIBUTE attr;
@@ -2270,7 +2270,7 @@ DBCHandler::DBCHandler()
file->dbc_attributes.append(attr); file->dbc_attributes.append(attr);
file->messageHandler->setMatchingCriteria(matchingCriteria); file->messageHandler->setMatchingCriteria(matchingCriteria);
bool filterLabeling = settings.value("DBC/FilterLabeling_" + QString(i),0).toBool(); bool filterLabeling = settings.value("DBC/FilterLabeling_" + QString::number(i),0).toBool();
attr.attrType = ATTR_TYPE_MESSAGE; attr.attrType = ATTR_TYPE_MESSAGE;
attr.defaultValue = filterLabeling; attr.defaultValue = filterLabeling;
attr.enumVals.clear(); attr.enumVals.clear();
+6 -6
View File
@@ -108,10 +108,10 @@ void DBCLoadSaveWindow::updateSettings()
qDebug() << "Save DBC settings #" << i << " File: " << file->getFullFilename() qDebug() << "Save DBC settings #" << i << " File: " << file->getFullFilename()
<< "Bus: " << file->getAssocBus() << "MC: " << file->messageHandler->getMatchingCriteria() << "Bus: " << file->getAssocBus() << "MC: " << file->messageHandler->getMatchingCriteria()
<< "Filter Labeling: " << (file->messageHandler->filterLabeling() ? "enabled" : "disabled"); << "Filter Labeling: " << (file->messageHandler->filterLabeling() ? "enabled" : "disabled");
settings.setValue("DBC/Filename_" + QString(i), file->getFullFilename()); settings.setValue("DBC/Filename_" + QString::number(i), file->getFullFilename());
settings.setValue("DBC/AssocBus_" + QString(i), file->getAssocBus()); settings.setValue("DBC/AssocBus_" + QString::number(i), file->getAssocBus());
settings.setValue("DBC/MatchingCriteria_" + QString(i), file->messageHandler->getMatchingCriteria()); settings.setValue("DBC/MatchingCriteria_" + QString::number(i), file->messageHandler->getMatchingCriteria());
settings.setValue("DBC/FilterLabeling_" + QString(i), file->messageHandler->filterLabeling()); settings.setValue("DBC/FilterLabeling_" + QString::number(i), file->messageHandler->filterLabeling());
} }
} }
emit updatedDBCSettings(); emit updatedDBCSettings();
@@ -200,7 +200,7 @@ void DBCLoadSaveWindow::loadFile()
DBC_ATTRIBUTE *attr = file->findAttributeByName("matchingcriteria"); DBC_ATTRIBUTE *attr = file->findAttributeByName("matchingcriteria");
QComboBox * mc_item = addMatchingCriteriaCombobox(idx); QComboBox * mc_item = addMatchingCriteriaCombobox(idx);
if (attr && attr->defaultValue > 0) if (attr && attr->defaultValue.toInt() > 0)
{ {
mc_item->setCurrentIndex(attr->defaultValue.toInt()); mc_item->setCurrentIndex(attr->defaultValue.toInt());
} }
@@ -208,7 +208,7 @@ void DBCLoadSaveWindow::loadFile()
attr = file->findAttributeByName("filterlabeling"); attr = file->findAttributeByName("filterlabeling");
QTableWidgetItem *item = new QTableWidgetItem(""); QTableWidgetItem *item = new QTableWidgetItem("");
ui->tableFiles->setItem(idx, 3, item); ui->tableFiles->setItem(idx, 3, item);
if (attr && attr->defaultValue > 0) if (attr && attr->defaultValue.toInt() > 0)
{ {
item->setCheckState(Qt::Checked); item->setCheckState(Qt::Checked);
} }
+40 -33
View File
@@ -867,7 +867,7 @@ bool FrameFileIO::loadCARBUSAnalyzerFile(QString filename, QVector<CANFrame>* fr
line = txt.readLine().simplified(); line = txt.readLine().simplified();
if (line.length() > 2) if (line.length() > 2)
{ {
QList<QString> tokens = line.split(QRegExp("\\s+")); QList<QString> tokens = line.split(QRegularExpression("\\s+"));
if (tokens.length() > 3) if (tokens.length() > 3)
{ {
QString time = tokens[0].replace(",", ""); QString time = tokens[0].replace(",", "");
@@ -3507,9 +3507,9 @@ bool FrameFileIO::isCanDumpFile(QString filename)
QFile *inFile = new QFile(filename); QFile *inFile = new QFile(filename);
QByteArray line; QByteArray line;
QList<QByteArray> tokens; QList<QByteArray> tokens;
QRegExp timeExp("^\\((\\S+)\\)$"); QRegularExpression timeExp(QRegularExpression::anchoredPattern("^\\((\\S+)\\)$")); //anchored pattern causes exact match
QRegExp IdValExp("^(\\S+)#(\\S+)$"); QRegularExpression IdValExp(QRegularExpression::anchoredPattern("^(\\S+)#(\\S+)$"));
QRegExp valExp("(\\S{2})"); QRegularExpression valExp("(\\S{2})");
int lineCounter = 0; int lineCounter = 0;
int pos = 0; int pos = 0;
bool isMatch = true; bool isMatch = true;
@@ -3535,10 +3535,12 @@ bool FrameFileIO::isCanDumpFile(QString filename)
if(tokens.count() < 3) isMatch = false; if(tokens.count() < 3) isMatch = false;
/* timestamp */ /* timestamp */
ret = timeExp.exactMatch(tokens[0]); QRegularExpressionMatch timeExpMatched = timeExp.match(tokens[0]);
if(!ret) isMatch = false; if(!timeExpMatched.hasMatch()) {
isMatch = false;
}
/*uint64_t timestamp = (uint64_t)*/(timeExp.cap(1).toDouble(&ret) /** (double)1000000.0*/); /*uint64_t timestamp = (uint64_t)*/(timeExpMatched.captured(1).toDouble(&ret) /** (double)1000000.0*/);
if(!ret) isMatch = false; if(!ret) isMatch = false;
if (line.contains('[')) //the expanded format if (line.contains('[')) //the expanded format
@@ -3568,17 +3570,19 @@ bool FrameFileIO::isCanDumpFile(QString filename)
isMatch = false; isMatch = false;
continue; continue;
} }
ret = IdValExp.exactMatch(tokens[2]);
if(!ret)
QRegularExpressionMatch IdValExpMatched = IdValExp.match(tokens[2]);
if(!IdValExpMatched.hasMatch())
{ {
isMatch = false; isMatch = false;
continue; continue;
} }
/* ID */ /* ID */
/*int ID = */IdValExp.cap(1).toInt(&ret, 16); /*int ID = */IdValExpMatched.captured(1).toInt(&ret, 16);
QString val= IdValExp.cap(2); QString val= IdValExpMatched.captured(2);
pos = 0; pos = 0;
int len = 0; int len = 0;
@@ -3592,22 +3596,23 @@ bool FrameFileIO::isCanDumpFile(QString filename)
} else { } else {
/* val byte per byte */ /* val byte per byte */
int lng = 0; int lng = 0;
while ((pos = valExp.indexIn(val, pos)) != -1) QRegularExpressionMatch valExpMatch;
{ QRegularExpressionMatchIterator i = valExp.globalMatch(val);
while (i.hasNext()) {
valExpMatch = i.next();
lng++; lng++;
if (lng > 8) if (lng > 8)
{ {
isMatch = false; isMatch = false;
break; break;
} }
/*int data = */valExp.cap(1).toInt(&ret, 16); /*int data = */valExpMatch.captured(1).toInt(&ret, 16);
if(!ret) if(!ret)
{ {
isMatch = false; isMatch = false;
break; break;
} }
pos += valExp.matchedLength();
} }
} }
} }
@@ -3634,11 +3639,10 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
CANFrame thisFrame; CANFrame thisFrame;
QByteArray line; QByteArray line;
QList<QByteArray> tokens; QList<QByteArray> tokens;
QRegExp timeExp("^\\((\\S+)\\)$"); QRegularExpression timeExp(QRegularExpression::anchoredPattern("^\\((\\S+)\\)$")); //anchored pattern causes exact match
QRegExp IdValExp("^(\\S+)#(\\S+)$"); QRegularExpression IdValExp(QRegularExpression::anchoredPattern("^(\\S+)#(\\S+)$"));
QRegExp valExp("(\\S{2})"); QRegularExpression valExp("(\\S{2})");
int lineCounter = 0; int lineCounter = 0;
int pos = 0;
bool ret; bool ret;
if (!inFile->open(QIODevice::ReadOnly | QIODevice::Text)) if (!inFile->open(QIODevice::ReadOnly | QIODevice::Text))
@@ -3664,8 +3668,8 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
if(tokens.count()<3) continue; if(tokens.count()<3) continue;
/* timestamp */ /* timestamp */
ret = timeExp.exactMatch(tokens[0]); QRegularExpressionMatch timeExpMatched = timeExp.match(tokens[0]);
if(!ret) continue; if(!timeExpMatched.hasMatch()) continue;
//Sort out the bus //Sort out the bus
std::string busString = tokens[1].toStdString(); std::string busString = tokens[1].toStdString();
@@ -3686,7 +3690,7 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
thisFrame.bus = busNum; thisFrame.bus = busNum;
thisFrame.setTimeStamp(QCanBusFrame::TimeStamp(0, (uint64_t)(timeExp.cap(1).toDouble(&ret) * (double)1000000.0))); thisFrame.setTimeStamp(QCanBusFrame::TimeStamp(0, (uint64_t)(timeExpMatched.captured(1).toDouble(&ret) * (double)1000000.0)));
if(!ret) continue; if(!ret) continue;
if (line.contains('[')) //the expanded format (second one from the above list) if (line.contains('[')) //the expanded format (second one from the above list)
@@ -3709,24 +3713,26 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
{ {
/* ID & value */ /* ID & value */
//qDebug() << tokens[2]; //qDebug() << tokens[2];
ret = IdValExp.exactMatch(tokens[2]); QRegularExpressionMatch IdValExpMatched = IdValExp.match(tokens[2]);
if(!ret) if(!IdValExpMatched.hasMatch())
{ {
qDebug() << "ID regex didn't match!"; qDebug() << "ID regex didn't match!";
continue; continue;
} }
/* ID */ /* ID */
thisFrame.setFrameId(static_cast<uint32_t>(IdValExp.cap(1).toInt(&ret, 16))); thisFrame.setFrameId(static_cast<uint32_t>(IdValExpMatched.captured(1).toInt(&ret, 16)));
if (IdValExp.cap(1).length() > 3) { if (IdValExpMatched.captured(1).length() > 3)
{
thisFrame.setExtendedFrameFormat(true); thisFrame.setExtendedFrameFormat(true);
} else { }
else
{
thisFrame.setExtendedFrameFormat(false); thisFrame.setExtendedFrameFormat(false);
} }
QString val= IdValExp.cap(2); QString val = IdValExpMatched.captured(2);
pos = 0;
QByteArray bytes; QByteArray bytes;
if (val.startsWith("R") && val.at(1).isDigit()) { if (val.startsWith("R") && val.at(1).isDigit()) {
thisFrame.payload().resize( val.at(1).toLatin1() - '0' ); thisFrame.payload().resize( val.at(1).toLatin1() - '0' );
@@ -3734,12 +3740,13 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
} else { } else {
thisFrame.setFrameType(QCanBusFrame::DataFrame); thisFrame.setFrameType(QCanBusFrame::DataFrame);
/* val byte per byte */ /* val byte per byte */
while ((pos = valExp.indexIn(val, pos)) != -1) QRegularExpressionMatch valExpMatch;
QRegularExpressionMatchIterator i = valExp.globalMatch(val);
while (i.hasNext())
{ {
bytes.append((char)valExp.cap(1).toInt(&ret, 16)); valExpMatch = i.next();
bytes.append((char)valExpMatch.captured(1).toInt(&ret, 16));
if(!ret) continue; if(!ret) continue;
pos += valExp.matchedLength();
} }
} }
thisFrame.setPayload(bytes); thisFrame.setPayload(bytes);
+3 -3
View File
@@ -263,7 +263,7 @@ void CANScriptHelper::gotTargettedFrame(const CANFrame &frame)
if (filters[i].checkFilter(frame.frameId(), frame.bus)) if (filters[i].checkFilter(frame.frameId(), frame.bus))
{ {
QJSValueList args; QJSValueList args;
args << frame.bus << frame.frameId() << frame.payload().length(); args << frame.bus << frame.frameId() << static_cast<uint>(frame.payload().length());
QJSValue dataBytes = scriptEngine->newArray(dataLen); QJSValue dataBytes = scriptEngine->newArray(dataLen);
for (int j = 0; j < dataLen; j++) dataBytes.setProperty(j, QJSValue(data[j])); for (int j = 0; j < dataLen; j++) dataBytes.setProperty(j, QJSValue(data[j]));
@@ -341,7 +341,7 @@ void ISOTPScriptHelper::newISOMessage(ISOTP_MESSAGE msg)
//qDebug() << "Got frame in script interface"; //qDebug() << "Got frame in script interface";
QJSValueList args; QJSValueList args;
args << msg.bus << msg.frameId() << msg.payload().length(); args << msg.bus << msg.frameId() << static_cast<uint>(msg.payload().length());
QJSValue dataBytes = scriptEngine->newArray(static_cast<uint>(msg.payload().length())); QJSValue dataBytes = scriptEngine->newArray(static_cast<uint>(msg.payload().length()));
for (int j = 0; j < msg.payload().length(); j++) dataBytes.setProperty(static_cast<quint32>(j), QJSValue((unsigned char)msg.payload()[j])); for (int j = 0; j < msg.payload().length(); j++) dataBytes.setProperty(static_cast<quint32>(j), QJSValue((unsigned char)msg.payload()[j]));
@@ -420,7 +420,7 @@ void UDSScriptHelper::newUDSMessage(UDS_MESSAGE msg)
qDebug() << "Got frame in script interface"; qDebug() << "Got frame in script interface";
QJSValueList args; QJSValueList args;
args << msg.bus << msg.frameId() << msg.service << msg.subFunc << msg.payload().length(); args << msg.bus << msg.frameId() << msg.service << msg.subFunc << static_cast<uint>(msg.payload().length());
QJSValue dataBytes = scriptEngine->newArray(static_cast<unsigned int>(msg.payload().length())); QJSValue dataBytes = scriptEngine->newArray(static_cast<unsigned int>(msg.payload().length()));
for (int j = 0; j < msg.payload().length(); j++) dataBytes.setProperty(static_cast<quint32>(j), QJSValue((unsigned char)msg.payload()[j])); for (int j = 0; j < msg.payload().length(); j++) dataBytes.setProperty(static_cast<quint32>(j), QJSValue((unsigned char)msg.payload()[j]));