Updated in-source project notes, added an average interval calculation to the details window.
This commit is contained in:
@@ -25,6 +25,7 @@ void FrameInfoWindow::updateDetailsWindow(QListWidgetItem *item)
|
|||||||
{
|
{
|
||||||
int idx, numFrames, targettedID;
|
int idx, numFrames, targettedID;
|
||||||
int minLen, maxLen, thisLen;
|
int minLen, maxLen, thisLen;
|
||||||
|
int avgInterval;
|
||||||
int minData[8];
|
int minData[8];
|
||||||
int maxData[8];
|
int maxData[8];
|
||||||
int dataHistogram[256][8];
|
int dataHistogram[256][8];
|
||||||
@@ -34,6 +35,8 @@ void FrameInfoWindow::updateDetailsWindow(QListWidgetItem *item)
|
|||||||
|
|
||||||
qDebug() << "Started update details window with id " << targettedID;
|
qDebug() << "Started update details window with id " << targettedID;
|
||||||
|
|
||||||
|
avgInterval = 0;
|
||||||
|
|
||||||
if (targettedID > -1)
|
if (targettedID > -1)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -107,6 +110,7 @@ void FrameInfoWindow::updateDetailsWindow(QListWidgetItem *item)
|
|||||||
//then find all data points
|
//then find all data points
|
||||||
for (int j = 0; j < frameCache.count(); j++)
|
for (int j = 0; j < frameCache.count(); j++)
|
||||||
{
|
{
|
||||||
|
if (j != 0) avgInterval += (frameCache[j].timestamp - frameCache[j-1].timestamp);
|
||||||
thisLen = frameCache.at(j).len;
|
thisLen = frameCache.at(j).len;
|
||||||
if (thisLen > maxLen) maxLen = thisLen;
|
if (thisLen > maxLen) maxLen = thisLen;
|
||||||
if (thisLen < minLen) minLen = thisLen;
|
if (thisLen < minLen) minLen = thisLen;
|
||||||
@@ -119,6 +123,8 @@ void FrameInfoWindow::updateDetailsWindow(QListWidgetItem *item)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
avgInterval = avgInterval / (frameCache.count() - 1);
|
||||||
|
|
||||||
tempItem = new QTreeWidgetItem();
|
tempItem = new QTreeWidgetItem();
|
||||||
|
|
||||||
if (minLen < maxLen)
|
if (minLen < maxLen)
|
||||||
@@ -128,6 +134,10 @@ void FrameInfoWindow::updateDetailsWindow(QListWidgetItem *item)
|
|||||||
|
|
||||||
baseNode->addChild(tempItem);
|
baseNode->addChild(tempItem);
|
||||||
|
|
||||||
|
tempItem = new QTreeWidgetItem();
|
||||||
|
tempItem->setText(0, tr("Average inter-frame interval: ") + QString::number(avgInterval) + "us");
|
||||||
|
baseNode->addChild(tempItem);
|
||||||
|
|
||||||
for (int c = 0; c < maxLen; c++)
|
for (int c = 0; c < maxLen; c++)
|
||||||
{
|
{
|
||||||
dataBase = new QTreeWidgetItem();
|
dataBase = new QTreeWidgetItem();
|
||||||
|
|||||||
+18
-4
@@ -22,7 +22,8 @@ fuzzy scope - Try to find potential places where a given value might be stored -
|
|||||||
|
|
||||||
|
|
||||||
Things currently broken or in need of attention:
|
Things currently broken or in need of attention:
|
||||||
1. The details window should tell you the min/max/avg time between frames of this ID
|
1. Need to standardize application where things might differ. All byte and bit references
|
||||||
|
should be 0-7 not 1-8. All timings should be in microseconds.
|
||||||
2. The windows that deal with canbus data should update based on incoming frames. It should not be required to load files to use these windows
|
2. The windows that deal with canbus data should update based on incoming frames. It should not be required to load files to use these windows
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -222,7 +223,20 @@ void MainWindow::loadCRTDFile(QString filename)
|
|||||||
if (line.length() > 2)
|
if (line.length() > 2)
|
||||||
{
|
{
|
||||||
QList<QByteArray> tokens = line.split(' ');
|
QList<QByteArray> tokens = line.split(' ');
|
||||||
thisFrame.timestamp = (int64_t)(tokens[0].toDouble() * 1000);
|
int multiplier;
|
||||||
|
int idxOfDecimal = tokens[0].indexOf('.');
|
||||||
|
if (idxOfDecimal > -1) {
|
||||||
|
int decimalPlaces = tokens[0].length() - tokens[0].indexOf('.') - 1;
|
||||||
|
//the result of the above is the # of digits after the decimal.
|
||||||
|
//This program deals in microsecond so turn the value into microseconds
|
||||||
|
multiplier = pow(10, 6 - decimalPlaces);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
multiplier = 1; //special case. Assume no decimal means microseconds
|
||||||
|
}
|
||||||
|
//qDebug() << "decimal places " << decimalPlaces;
|
||||||
|
thisFrame.timestamp = (int64_t)(tokens[0].toDouble() * multiplier);
|
||||||
if (tokens[1] == "R11" || tokens[1] == "R29")
|
if (tokens[1] == "R11" || tokens[1] == "R29")
|
||||||
{
|
{
|
||||||
thisFrame.ID = tokens[2].toInt(NULL, 16);
|
thisFrame.ID = tokens[2].toInt(NULL, 16);
|
||||||
@@ -256,12 +270,12 @@ void MainWindow::saveCRTDFile(QString filename)
|
|||||||
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text))
|
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
outFile->write(QString::number(frames->at(0).timestamp / 1000.0).toUtf8() + tr(" CXX GVRET-PC Reverse Engineering Tool Output").toUtf8());
|
outFile->write(QString::number(frames->at(0).timestamp / 1000000.0).toUtf8() + tr(" CXX GVRET-PC Reverse Engineering Tool Output V").toUtf8() + QString::number(VERSION).toUtf8());
|
||||||
outFile->write("\n");
|
outFile->write("\n");
|
||||||
|
|
||||||
for (int c = 0; c < frames->count(); c++)
|
for (int c = 0; c < frames->count(); c++)
|
||||||
{
|
{
|
||||||
outFile->write(QString::number(frames->at(c).timestamp).toUtf8());
|
outFile->write(QString::number(frames->at(c).timestamp / 1000000.0).toUtf8());
|
||||||
outFile->putChar(' ');
|
outFile->putChar(' ');
|
||||||
if (frames->at(c).extended)
|
if (frames->at(c).extended)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user