Fix autodetection of Canalyzer ASC files

This commit is contained in:
Collin Kidder
2019-09-19 20:00:15 -04:00
parent 4a591f9279
commit d6a041927c
+23 -7
View File
@@ -229,6 +229,7 @@ bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache
//whether a file could be loaded or not by a given loader. The loader return is still used in case the guess was wrong. //whether a file could be loaded or not by a given loader. The loader return is still used in case the guess was wrong.
bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames) bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames)
{ {
qDebug() << "Attempting Canalyzer BLF";
if (isCanalyzerBLF(filename)) if (isCanalyzerBLF(filename))
{ {
if (loadCanalyzerBLF(filename, frames)) if (loadCanalyzerBLF(filename, frames))
@@ -238,6 +239,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting native CSV";
if (isNativeCSVFile(filename)) if (isNativeCSVFile(filename))
{ {
if (loadNativeCSVFile(filename, frames)) if (loadNativeCSVFile(filename, frames))
@@ -247,6 +249,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting canalyzer ASC";
if (isCanalyzerASC(filename)) if (isCanalyzerASC(filename))
{ {
if (loadCanalyzerASC(filename, frames)) if (loadCanalyzerASC(filename, frames))
@@ -256,6 +259,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting CRTD";
if (isCRTDFile(filename)) if (isCRTDFile(filename))
{ {
if (loadCRTDFile(filename, frames)) if (loadCRTDFile(filename, frames))
@@ -266,6 +270,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
qDebug() << "Attempting trace file";
if (isTraceFile(filename)) if (isTraceFile(filename))
{ {
if (loadTraceFile(filename, frames)) if (loadTraceFile(filename, frames))
@@ -275,6 +280,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting vehicle spy";
if (isVehicleSpyFile(filename)) if (isVehicleSpyFile(filename))
{ {
if (loadVehicleSpyFile(filename, frames)) if (loadVehicleSpyFile(filename, frames))
@@ -284,6 +290,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting candump";
if (isCanDumpFile(filename)) if (isCanDumpFile(filename))
{ {
if (loadCanDumpFile(filename, frames)) if (loadCanDumpFile(filename, frames))
@@ -293,6 +300,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting canhacker";
if (isCANHackerFile(filename)) if (isCANHackerFile(filename))
{ {
if (loadCANHackerFile(filename, frames)) if (loadCANHackerFile(filename, frames))
@@ -302,6 +310,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting cabana";
if (isCabanaFile(filename)) if (isCabanaFile(filename))
{ {
if (loadCabanaFile(filename, frames)) if (loadCabanaFile(filename, frames))
@@ -311,6 +320,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting canopen";
if (isCANOpenFile(filename)) if (isCANOpenFile(filename))
{ {
if (loadCANOpenFile(filename, frames)) if (loadCANOpenFile(filename, frames))
@@ -320,6 +330,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting busmaster log";
if (isLogFile(filename)) if (isLogFile(filename))
{ {
if (loadLogFile(filename, frames)) if (loadLogFile(filename, frames))
@@ -329,6 +340,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting pcan";
if (isPCANFile(filename)) if (isPCANFile(filename))
{ {
if (loadPCANFile(filename, frames)) if (loadPCANFile(filename, frames))
@@ -338,6 +350,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting ixxat";
if (isIXXATFile(filename)) if (isIXXATFile(filename))
{ {
if (loadIXXATFile(filename, frames)) if (loadIXXATFile(filename, frames))
@@ -347,6 +360,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting microchip";
if (isMicrochipFile(filename)) if (isMicrochipFile(filename))
{ {
if (loadMicrochipFile(filename, frames)) if (loadMicrochipFile(filename, frames))
@@ -356,6 +370,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting CANDo";
if (isCANDOFile(filename)) if (isCANDOFile(filename))
{ {
if (loadCANDOFile(filename, frames)) if (loadCANDOFile(filename, frames))
@@ -365,6 +380,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting kvaser";
if (isKvaserFile(filename)) if (isKvaserFile(filename))
{ {
if (loadKvaserFile(filename, frames,true)) if (loadKvaserFile(filename, frames,true))
@@ -379,6 +395,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Attempting generic CSV";
if (isGenericCSVFile(filename)) if (isGenericCSVFile(filename))
{ {
if (loadGenericCSVFile(filename, frames)) if (loadGenericCSVFile(filename, frames))
@@ -388,6 +405,7 @@ bool FrameFileIO::autoDetectLoadFile(QString filename, QVector<CANFrame>* frames
} }
} }
qDebug() << "Nothing worked... sorry...";
return false; return false;
} }
@@ -1157,7 +1175,7 @@ bool FrameFileIO::isCanalyzerASC(QString filename)
QFile *inFile = new QFile(filename); QFile *inFile = new QFile(filename);
QByteArray line; QByteArray line;
int lineCounter = 0; int lineCounter = 0;
bool isMatch = true; bool isMatch = false;
bool inHeader = true; bool inHeader = true;
QList<QByteArray> tokens; QList<QByteArray> tokens;
@@ -1191,16 +1209,14 @@ bool FrameFileIO::isCanalyzerASC(QString filename)
if (tokens.length() > 5) if (tokens.length() > 5)
{ {
uint64_t time = static_cast<uint64_t>(tokens[0].toDouble() * 1000000.0); uint64_t time = static_cast<uint64_t>(tokens[0].toDouble() * 1000000.0);
if (time <= 0) isMatch = false; if (time > 0) isMatch = true;
uint32_t id = static_cast<uint32_t>(tokens[2].toUInt(nullptr, 16)); uint32_t id = static_cast<uint32_t>(tokens[2].toUInt(nullptr, 16));
if (id < 1 || id > 0x1FFFFFFF) isMatch = false; if (id > 0 && id < 0x20000000) isMatch = true;
int len = tokens[5].toInt(); int len = tokens[5].toInt();
if (len < 0 || len > 8) isMatch = false; if (len > 0 && len < 9) isMatch = true;
if (tokens.count() < (len + 6)) isMatch = false; if (tokens.count() >= (len + 6)) isMatch = true;
} }
else isMatch = false;
} }
else isMatch = false;
} }
} }
catch (...) catch (...)