A partial commit that changes CANFrame over to be based on

QCanBusFrame so that things are more compatible with other Qt based
CAN bus code. Not complete yet but getting there.
This commit is contained in:
Collin Kidder
2019-12-11 21:17:33 -05:00
parent 29b635a009
commit 0baffa300f
22 changed files with 272 additions and 278 deletions
+6 -6
View File
@@ -140,10 +140,10 @@ void DiscreteStateWindow::updatedFrames(int numFrames)
{
thisFrame = modelFrames->at(i);
if (!idFilters.contains(thisFrame.ID))
if (!idFilters.contains(thisFrame.frameId()))
{
idFilters.insert(thisFrame.ID, true);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(thisFrame.ID, thisFrame.extended), ui->listID);
idFilters.insert(thisFrame.frameId(), true);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(thisFrame.frameId(), thisFrame.hasExtendedFrameFormat()), ui->listID);
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
listItem->setCheckState(Qt::Checked); //default all filters to be set active
}
@@ -164,11 +164,11 @@ void DiscreteStateWindow::refreshFilterList()
for (int i = 0; i < modelFrames->length(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
id = thisFrame.ID;
id = thisFrame.frameId();
if (!idFilters.contains(id))
{
idFilters.insert(id, true);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(id, thisFrame.extended), ui->listID);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(id, thisFrame.hasExtendedFrameFormat()), ui->listID);
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
listItem->setCheckState(Qt::Checked); //default all filters to be set active
}
@@ -359,7 +359,7 @@ void DiscreteStateWindow::calculateResults()
frameCache.clear();
for (int i = 0; i < modelFrames->count(); i++)
{
if (modelFrames->at(i).ID == (unsigned int)it.key()) frameCache.append(modelFrames->at(i));
if (modelFrames->at(i).frameId() == (unsigned int)it.key()) frameCache.append(modelFrames->at(i));
}
for (int bits = maxBits; bits >= minBits; bits--)
{
+24 -24
View File
@@ -152,22 +152,22 @@ void FileComparatorWindow::calculateDetails()
for (int x = 0; x < interestedFrames.count(); x++)
{
CANFrame frame = interestedFrames.at(x);
if (interestedIDs.contains(frame.ID)) //if we saw this ID before then add to the QList in there
if (interestedIDs.contains(frame.frameId())) //if we saw this ID before then add to the QList in there
{
for (unsigned int y = 0; y < frame.len; y++)
for (unsigned int y = 0; y < frame.payload().length(); y++)
{
interestedIDs[frame.ID].values[y][frame.data[y]]++;
tmp = frame.data[y];
interestedIDs[frame.frameId()].values[y][frame.payload()[y]]++;
tmp = frame.payload()[y];
tmp = tmp << (8 * y);
interestedIDs[frame.ID].bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(interestedIDs[frame.ID].bitmap, 16);
interestedIDs[frame.frameId()].bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(interestedIDs[frame.frameId()].bitmap, 16);
}
}
else //never seen this ID before so add one
{
FrameData *newData = new FrameData();
newData->ID = frame.ID;
newData->dataLen = frame.len;
newData->ID = frame.frameId();
newData->dataLen = frame.payload().length();
//it would be possible to implement a constructor for FrameData
//that sets the bitmap and values to zero. That would be cleaner and better.
newData->bitmap = 0;
@@ -179,15 +179,15 @@ void FileComparatorWindow::calculateDetails()
}
}
//memset(newData->values, 0, 256 * 8);
for (unsigned int y = 0; y < frame.len; y++)
for (unsigned int y = 0; y < frame.payload().length(); y++)
{
newData->values[y][frame.data[y]] = 1;
tmp = frame.data[y];
newData->values[y][frame.payload()[y]] = 1;
tmp = frame.payload()[y];
tmp = tmp << (8 * y);
newData->bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(newData->bitmap, 16);
}
interestedIDs.insert(frame.ID, *newData);
interestedIDs.insert(frame.frameId(), *newData);
}
}
@@ -196,22 +196,22 @@ void FileComparatorWindow::calculateDetails()
for (int x = 0; x < referenceFrames.count(); x++)
{
CANFrame frame = referenceFrames.at(x);
if (referenceIDs.contains(frame.ID)) //if we saw this ID before then add to the QList in there
if (referenceIDs.contains(frame.frameId())) //if we saw this ID before then add to the QList in there
{
for (unsigned int y = 0; y < frame.len; y++)
for (unsigned int y = 0; y < frame.payload().length(); y++)
{
referenceIDs[frame.ID].values[y][frame.data[y]]++;
tmp = frame.data[y];
referenceIDs[frame.frameId()].values[y][frame.payload()[y]]++;
tmp = frame.payload()[y];
tmp = tmp << (8 * y);
referenceIDs[frame.ID].bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(referenceIDs[frame.ID].bitmap, 16);
referenceIDs[frame.frameId()].bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(referenceIDs[frame.frameId()].bitmap, 16);
}
}
else //never seen this ID before so add one
{
FrameData *newData = new FrameData();
newData->ID = frame.ID;
newData->dataLen = frame.len;
newData->ID = frame.frameId();
newData->dataLen = frame.payload().length();
newData->bitmap = 0;
for (int x = 0; x < 8; x++)
{
@@ -221,15 +221,15 @@ void FileComparatorWindow::calculateDetails()
}
}
//memset(newData->values, 0, 256 * 8);
for (unsigned int y = 0; y < frame.len; y++)
for (unsigned int y = 0; y < frame.payload().length(); y++)
{
newData->values[y][frame.data[y]] = 1;
tmp = frame.data[y];
newData->values[y][frame.payload()[y]] = 1;
tmp = frame.payload()[y];
tmp = tmp << (8 * y);
newData->bitmap |= tmp;
//qDebug() << "bitmap: " << QString::number(newData->bitmap, 16);
}
referenceIDs.insert(frame.ID, *newData);
referenceIDs.insert(frame.frameId(), *newData);
}
}
+28 -27
View File
@@ -250,7 +250,7 @@ void FlowViewWindow::plottableDoubleClick(QCPAbstractPlottable* plottable, QMous
int id = 0;
//apply transforms to get the X axis value where we double clicked
double coord = plottable->keyAxis()->pixelToCoord(event->localPos().x());
if (frameCache.count() > 0) id = frameCache[0].ID;
if (frameCache.count() > 0) id = frameCache[0].frameId();
if (secondsMode) emit sendCenterTimeID(id, coord);
else emit sendCenterTimeID(id, coord / 1000000.0);
}
@@ -278,7 +278,7 @@ void FlowViewWindow::gotCenterTimeID(int32_t ID, double timestamp)
int bestIdx = -1;
for (int i = 0; i < frameCache.count(); i++)
{
if (frameCache[i].timestamp > t_stamp)
if (frameCache[i].timeStamp().microSeconds() > t_stamp)
{
bestIdx = i - 1;
break;
@@ -428,20 +428,20 @@ void FlowViewWindow::updatedFrames(int numFrames)
{
if (numFrames > modelFrames->count()) return;
unsigned int refID;
if (frameCache.count() > 0) refID = frameCache[0].ID;
if (frameCache.count() > 0) refID = frameCache[0].frameId();
else refID = 0;
bool needRefresh = false;
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
{
thisFrame = modelFrames->at(i);
if (!foundID.contains(thisFrame.ID))
if (!foundID.contains(thisFrame.frameId()))
{
foundID.append(thisFrame.ID);
FilterUtility::createFilterItem(thisFrame.ID, ui->listFrameID);
foundID.append(thisFrame.frameId());
FilterUtility::createFilterItem(thisFrame.frameId(), ui->listFrameID);
}
if (thisFrame.ID == refID)
if (thisFrame.frameId() == refID)
{
frameCache.append(thisFrame);
@@ -450,18 +450,18 @@ void FlowViewWindow::updatedFrames(int numFrames)
if (ui->cbTimeGraph->isChecked())
{
if (secondsMode){
newX[k].append((double)(thisFrame.timestamp) / 1000000.0);
newX[k].append((double)(thisFrame.timeStamp().microSeconds()) / 1000000.0);
}
else
{
newX[k].append(thisFrame.timestamp);
newX[k].append(thisFrame.timeStamp().microSeconds());
}
}
else
{
newX[k].append(x[k].count());
}
newY[k].append(thisFrame.data[k]);
newY[k].append(thisFrame.payload()[k]);
needRefresh = true;
}
}
@@ -469,7 +469,7 @@ void FlowViewWindow::updatedFrames(int numFrames)
if (ui->cbLiveMode->checkState() == Qt::Checked)
{
currentPosition = frameCache.count() - 1;
memcpy(currBytes, frameCache.at(currentPosition).data, 8);
memcpy(currBytes, frameCache.at(currentPosition).payload(), 8);
memcpy(refBytes, currBytes, 8);
}
@@ -482,7 +482,7 @@ void FlowViewWindow::updatedFrames(int numFrames)
}
ui->graphView->replot();
updateDataView();
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].ID, frameCache[currentPosition].timestamp / 1000000.0);
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].frameId(), frameCache[currentPosition].timeStamp().microSeconds() / 1000000.0);
}
}
updateFrameLabel();
@@ -512,16 +512,16 @@ void FlowViewWindow::createGraph(int byteNum)
for (int j = 0; j < numEntries; j++)
{
tempVal = frameCache[j].data[byteNum];
tempVal = frameCache[j].payload()[byteNum];
if (graphByTime)
{
if (secondsMode){
x[byteNum][j] = (double)(frameCache[j].timestamp) / 1000000.0;
x[byteNum][j] = (double)(frameCache[j].timeStamp().microSeconds()) / 1000000.0;
}
else
{
x[byteNum][j] = frameCache[j].timestamp;
x[byteNum][j] = frameCache[j].timeStamp().microSeconds();
}
}
else
@@ -551,7 +551,7 @@ void FlowViewWindow::refreshIDList()
for (int i = 0; i < modelFrames->count(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
id = thisFrame.ID;
id = thisFrame.frameId();
if (!foundID.contains(id))
{
foundID.append(id);
@@ -581,9 +581,9 @@ void FlowViewWindow::changeID(QString newID)
for (int x = 0; x < modelFrames->count(); x++)
{
CANFrame thisFrame = modelFrames->at(x);
if (thisFrame.ID == id)
if (thisFrame.frameId() == id)
{
for (int j = thisFrame.len; j < 8; j++) thisFrame.data[j] = 0;
thisFrame.payload().clear();
frameCache.append(thisFrame);
}
}
@@ -600,7 +600,7 @@ void FlowViewWindow::changeID(QString newID)
updateGraphLocation();
memcpy(currBytes, frameCache.at(currentPosition).data, 8);
memcpy(currBytes, frameCache.at(currentPosition).payload(), 8);
memcpy(refBytes, currBytes, 8);
updateDataView();
@@ -635,7 +635,8 @@ void FlowViewWindow::btnStopClick()
playbackActive = false;
currentPosition = 0;
memcpy(currBytes, frameCache.at(currentPosition).data, 8);
memcpy(currBytes, frameCache.at(currentPosition).payload().data_ptr(), 8);
memcpy(refBytes, currBytes, 8);
updateFrameLabel();
@@ -757,7 +758,7 @@ void FlowViewWindow::updatePosition(bool forward)
uint8_t cngByte;
for (int i = 0; i < 8; i++)
{
cngByte = currBytes[i] ^ frameCache.at(currentPosition).data[i];
cngByte = currBytes[i] ^ frameCache.at(currentPosition).payload()[i];
changedBits |= (uint64_t)cngByte << (8ull * i);
}
@@ -771,9 +772,9 @@ void FlowViewWindow::updatePosition(bool forward)
playbackTimer->stop();
}
memcpy(currBytes, frameCache.at(currentPosition).data, 8);
memcpy(currBytes, frameCache.at(currentPosition).payload().data(), 8);
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].ID, frameCache[currentPosition].timestamp / 1000000.0);
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].frameId(), frameCache[currentPosition].timeStamp().microSeconds() / 1000000.0);
}
void FlowViewWindow::updateGraphLocation()
@@ -787,9 +788,9 @@ void FlowViewWindow::updateGraphLocation()
{
if (secondsMode)
{
ui->graphView->xAxis->setRange(frameCache[start].timestamp / 1000000.0, frameCache[end].timestamp / 1000000.0);
ui->graphView->xAxis->setRange(frameCache[start].timeStamp().microSeconds() / 1000000.0, frameCache[end].timeStamp().microSeconds() / 1000000.0);
/*
ui->graphView->xAxis->setTickStep((frameCache[end].timestamp - frameCache[start].timestamp)/ 3000000.0);
ui->graphView->xAxis->setTickStep((frameCache[end].timeStamp().microSeconds() - frameCache[start].timeStamp().microSeconds())/ 3000000.0);
ui->graphView->xAxis->setSubTickCount(0);
ui->graphView->xAxis->setNumberFormat("f");
ui->graphView->xAxis->setNumberPrecision(6);
@@ -797,9 +798,9 @@ void FlowViewWindow::updateGraphLocation()
}
else
{
ui->graphView->xAxis->setRange(frameCache[start].timestamp, frameCache[end].timestamp);
ui->graphView->xAxis->setRange(frameCache[start].timeStamp().microSeconds(), frameCache[end].timeStamp().microSeconds());
/*
ui->graphView->xAxis->setTickStep((frameCache[end].timestamp - frameCache[start].timestamp)/ 3.0);
ui->graphView->xAxis->setTickStep((frameCache[end].timeStamp().microSeconds() - frameCache[start].timeStamp().microSeconds())/ 3.0);
ui->graphView->xAxis->setSubTickCount(0);
ui->graphView->xAxis->setNumberFormat("f");
ui->graphView->xAxis->setNumberPrecision(0); */
+13 -13
View File
@@ -211,14 +211,14 @@ void FrameInfoWindow::updatedFrames(int numFrames)
for (int x = modelFrames->count() - numFrames; x < modelFrames->count(); x++)
{
CANFrame thisFrame = modelFrames->at(x);
int32_t id = static_cast<int32_t>(thisFrame.ID);
int32_t id = static_cast<int32_t>(thisFrame.frameId());
if (!foundID.contains(id))
{
foundID.append(id);
FilterUtility::createFilterItem(id, ui->listFrameID);
}
if (currID == modelFrames->at(x).ID)
if (currID == modelFrames->at(x).frameId())
{
thisID = true;
break;
@@ -275,7 +275,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
for (int i = 0; i < modelFrames->count(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
if (thisFrame.ID == static_cast<uint32_t>(targettedID)) frameCache.append(thisFrame);
if (thisFrame.frameId() == static_cast<uint32_t>(targettedID)) frameCache.append(thisFrame);
}
ui->treeDetails->clear();
@@ -285,7 +285,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
baseNode = new QTreeWidgetItem();
baseNode->setText(0, QString("ID: ") + newID );
if (frameCache[0].extended) //if these frames seem to be extended then try for J1939 decoding
if (frameCache[0].hasExtendedFrameFormat()) //if these frames seem to be extended then try for J1939 decoding
{
// ------- J1939 decoding ----------
J1939ID jid;
@@ -367,7 +367,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
for (int c = 0; c < 8; c++)
{
changedBits[c] = 0;
referenceBits[c] = frameCache.at(0).data[c];
referenceBits[c] = frameCache.at(0).payload()[c];
//qDebug() << referenceBits[c];
}
@@ -378,19 +378,19 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
for (int j = 0; j < frameCache.count(); j++)
{
byteGraphX.append(j);
for (uint32_t bytcnt = 0; bytcnt < frameCache[j].len; bytcnt++)
for (uint32_t bytcnt = 0; bytcnt < frameCache[j].payload().length(); bytcnt++)
{
byteGraphY[bytcnt].append(frameCache[j].data[bytcnt]);
byteGraphY[bytcnt].append(frameCache[j].payload()[bytcnt]);
}
if (j != 0)
{
//TODO - we try the interval whichever way doesn't go negative. But, we should probably sort the frame list before
//starting so that the intervals are all correct.
if (frameCache[j].timestamp > frameCache[j-1].timestamp)
thisInterval = (frameCache[j].timestamp - frameCache[j-1].timestamp);
if (frameCache[j].timeStamp().microSeconds() > frameCache[j-1].timeStamp().microSeconds())
thisInterval = (frameCache[j].timeStamp().microSeconds() - frameCache[j-1].timeStamp().microSeconds());
else
thisInterval = (frameCache[j-1].timestamp - frameCache[j].timestamp);
thisInterval = (frameCache[j-1].timeStamp().microSeconds() - frameCache[j].timeStamp().microSeconds());
sortedIntervals.push_back(thisInterval);
intervalSum += thisInterval;
@@ -398,12 +398,12 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
if (thisInterval < minInterval) minInterval = thisInterval;
avgInterval += thisInterval;
}
thisLen = frameCache.at(j).len;
thisLen = frameCache.at(j).payload().length();
if (thisLen > maxLen) maxLen = thisLen;
if (thisLen < minLen) minLen = thisLen;
for (int c = 0; c < thisLen; c++)
{
unsigned char dat = frameCache.at(j).data[c];
unsigned char dat = frameCache.at(j).payload()[c];
if (minData[c] > dat) minData[c] = dat;
if (maxData[c] < dat) maxData[c] = dat;
dataHistogram[dat][c]++; //add one to count for this
@@ -600,7 +600,7 @@ void FrameInfoWindow::refreshIDList()
for (int i = 0; i < modelFrames->count(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
id = (int)thisFrame.ID;
id = (int)thisFrame.frameId();
if (!foundID.contains(id))
{
foundID.append(id);
+9 -9
View File
@@ -94,7 +94,7 @@ void FuzzingWindow::updatedFrames(int numFrames)
if (numFrames > modelFrames->count()) return;
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
{
id = modelFrames->at(i).ID;
id = modelFrames->at(i).frameId();
if (!foundIDs.contains(id))
{
foundIDs.append(id);
@@ -133,17 +133,17 @@ void FuzzingWindow::changedNumDataBytes(int newVal)
void FuzzingWindow::timerTriggered()
{
CANFrame thisFrame;
thisFrame.remote = false;
sendingBuffer.clear();
int buses = ui->cbBuses->currentIndex();
for (int count = 0; count < ui->spinBurst->value(); count++)
{
thisFrame.ID = currentID;
for (int i = 0; i < 8; i++) thisFrame.data[i] = currentBytes[i];
if (currentID > 0x7FF) thisFrame.extended = true;
else thisFrame.extended = false;
thisFrame.bus = 0; //hard coded for now. TODO: do not hard code
thisFrame.len = ui->spinBytes->value();
thisFrame.setFrameId(currentID);
QByteArray bytes(ui->spinBytes->value(), 0);
for (int i = 0; i < bytes.length(); i++) bytes[i] = currentBytes[i];
thisFrame.setPayload(bytes);
if (currentID > 0x7FF) thisFrame.setExtendedFrameFormat(true);
else thisFrame.setExtendedFrameFormat(false);
thisFrame.bus = 0; //hard coded for now. TODO: do not hard code
if (buses < (ui->cbBuses->count() - 1))
{
@@ -371,7 +371,7 @@ void FuzzingWindow::refreshIDList()
for (int i = 0; i < modelFrames->count(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
id = thisFrame.ID;
id = thisFrame.frameId();
if (!foundIDs.contains(id))
{
foundIDs.append(id);
+11 -13
View File
@@ -186,7 +186,7 @@ void GraphingWindow::updatedFrames(int numFrames)
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
{
thisFrame = modelFrames->at(i);
if (graphParams[j].ID == thisFrame.ID)
if (graphParams[j].ID == thisFrame.frameId())
{
appendToGraph(graphParams[j], thisFrame, x, y);
appendedToGraph = true;
@@ -1075,15 +1075,15 @@ void GraphingWindow::appendToGraph(GraphParams &params, CANFrame &frame, QVector
{
params.strideSoFar = 0;
int64_t tempVal; //64 bit temp value.
tempVal = Utility::processIntegerSignal(frame.data, params.startBit, params.numBits, params.intelFormat, params.isSigned); //& params.mask;
tempVal = Utility::processIntegerSignal(frame.payload(), params.startBit, params.numBits, params.intelFormat, params.isSigned); //& params.mask;
double xVal, yVal;
if (secondsMode)
{
xVal = ((double)(frame.timestamp) / 1000000.0 - params.xbias);
xVal = ((double)(frame.timeStamp().microSeconds()) / 1000000.0 - params.xbias);
}
else
{
xVal = (frame.timestamp - params.xbias);
xVal = (frame.timeStamp().microSeconds() - params.xbias);
}
yVal = (tempVal * params.scale) + params.bias;
params.x.append(xVal);
@@ -1113,7 +1113,7 @@ void GraphingWindow::createGraph(GraphParams &params, bool createGraphParam)
for (int i = 0; i < modelFrames->count(); i++)
{
CANFrame thisFrame = modelFrames->at(i);
if (thisFrame.ID == params.ID && thisFrame.remote == false) frameCache.append(thisFrame);
if (thisFrame.frameId() == params.ID && thisFrame.frameType() == QCanBusFrame::DataFrame) frameCache.append(thisFrame);
}
//to fix weirdness where a graph that has no data won't be able to be edited, selected, or deleted properly
@@ -1122,12 +1122,10 @@ void GraphingWindow::createGraph(GraphParams &params, bool createGraphParam)
if (frameCache.count() == 0)
{
CANFrame dummy;
dummy.ID = params.ID;
dummy.setFrameId(params.ID);
dummy.bus = 0;
dummy.len = 8;
dummy.remote = false;
dummy.timestamp = 0;
for (int i = 0; i < 8; i++) dummy.data[i] = 0;
dummy.setPayload(QByteArray(8, 0));
dummy.setFrameType(QCanBusFrame::DataFrame);
frameCache.append(dummy);
}
@@ -1147,15 +1145,15 @@ void GraphingWindow::createGraph(GraphParams &params, bool createGraphParam)
for (int j = 0; j < numEntries; j++)
{
int k = j * params.stride;
tempVal = Utility::processIntegerSignal(frameCache[k].data, sBit, bits, intelFormat, isSigned); //& params.mask;
tempVal = Utility::processIntegerSignal(frameCache[k].payload(), sBit, bits, intelFormat, isSigned); //& params.mask;
//qDebug() << tempVal;
if (secondsMode)
{
params.x[j] = (frameCache[k].timestamp) / 1000000.0;
params.x[j] = (frameCache[k].timeStamp().microSeconds()) / 1000000.0;
}
else
{
params.x[j] = frameCache[k].timestamp;
params.x[j] = frameCache[k].timeStamp.microSeconds();
}
params.y[j] = (tempVal * params.scale) + params.bias;
if (params.y[j] < yminval) yminval = params.y[j];
+12 -12
View File
@@ -158,10 +158,10 @@ void RangeStateWindow::updatedFrames(int numFrames)
for (int i = modelFrames->count() - numFrames; i < modelFrames->count(); i++)
{
thisFrame = modelFrames->at(i);
if (!idFilters.contains(thisFrame.ID))
if (!idFilters.contains(thisFrame.frameId()))
{
idFilters.insert(thisFrame.ID, true);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(thisFrame.ID, thisFrame.extended), ui->listFilter);
idFilters.insert(thisFrame.frameId(), true);
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(thisFrame.frameId(), thisFrame.hasExtendedFrameFormat()), ui->listFilter);
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
listItem->setCheckState(Qt::Checked); //default all filters to be set active
}
@@ -178,7 +178,7 @@ void RangeStateWindow::refreshFilterList()
for (int i = 0; i < modelFrames->length(); i++)
{
id = modelFrames->at(i).ID;
id = modelFrames->at(i).frameId();
if (!idFilters.contains(id))
{
idFilters.insert(id, true);
@@ -223,7 +223,7 @@ void RangeStateWindow::recalcButton()
id = iter.key();
for (int j = 0; j < modelFrames->count(); j++)
{
if (modelFrames->at(j).ID == id) frameCache.append(modelFrames->at(j));
if (modelFrames->at(j).frameId() == id) frameCache.append(modelFrames->at(j));
}
//now we've got a list with all the same ID. Time to send it off for processing
signalsFactory();
@@ -247,7 +247,7 @@ void RangeStateWindow::signalsFactory()
int granularity = ui->spinGranularity->value();
int sigType = ui->cbSignalMode->currentIndex() + 1;
int signedType = ui->cbSignedMode->currentIndex() + 1;
int maxBits = frameCache.at(0).len * 8;
int maxBits = frameCache.at(0).payload().length() * 8;
int sens = ui->slideSensitivity->value();
for (int sigSize = maxSig; sigSize >= minSig; sigSize -= granularity)
@@ -297,7 +297,7 @@ bool RangeStateWindow::processSignal(int startBit, int bitLength, int sensitivit
for (i = 0; i < numFrames; i++)
{
valu = Utility::processIntegerSignal(frameCache.at(i).data, startBit, bitLength, !bigEndian, isSigned);
valu = Utility::processIntegerSignal(frameCache.at(i).payload(), startBit, bitLength, !bigEndian, isSigned);
if (valu < lowestValue) lowestValue = valu;
if (valu > highestValue) highestValue = valu;
}
@@ -316,7 +316,7 @@ bool RangeStateWindow::processSignal(int startBit, int bitLength, int sensitivit
return false; //doesn't range enough.
for (i = 0; i < numFrames; i++)
scaledVals.append((int)((Utility::processIntegerSignal(frameCache.at(i).data, startBit, bitLength, !bigEndian, isSigned) - lowestValue)));
scaledVals.append((int)((Utility::processIntegerSignal(frameCache.at(i).payload(), startBit, bitLength, !bigEndian, isSigned) - lowestValue)));
for (i = 1; i < numFrames; i++)
{
@@ -365,9 +365,9 @@ bool RangeStateWindow::processSignal(int startBit, int bitLength, int sensitivit
{
//createGraph(scaledVals);
QString temp;
temp = "ID: " + QString::number(frameCache.at(0).ID, 16) + " startBit: " + QString::number(startBit) + " len: " + QString::number(bitLength);
temp = "ID: " + QString::number(frameCache.at(0).frameId(), 16) + " startBit: " + QString::number(startBit) + " len: " + QString::number(bitLength);
int64_t foundSig;
foundSig = frameCache.at(0).ID;
foundSig = frameCache.at(0).frameId();
foundSig += (int64_t)startBit << 32;
foundSig += (int64_t)bitLength << 40;
@@ -474,12 +474,12 @@ void RangeStateWindow::clickedSignalList(int idx)
for (int j = 0; j < modelFrames->count(); j++)
{
if (modelFrames->at(j).ID == id) frameCache.append(modelFrames->at(j));
if (modelFrames->at(j).frameId() == id) frameCache.append(modelFrames->at(j));
}
int numFrames = frameCache.count();
QVector<int> values;
values.reserve(numFrames);
for (int i = 0; i < numFrames; i++) values.append((int)((Utility::processIntegerSignal(frameCache.at(i).data, startBit, bitLength, !isBigEndian, isSigned))));
for (int i = 0; i < numFrames; i++) values.append((int)((Utility::processIntegerSignal(frameCache.at(i).payload(), startBit, bitLength, !isBigEndian, isSigned))));
createGraph(values);
}
+6 -6
View File
@@ -10,11 +10,11 @@ SnifferItem::SnifferItem(const CANFrame& pFrame, quint32 seq):
mNotch[i] =0;
mMarker.data[i] = 0;
mMarker.dataTimestamp[i] = 0;
mCurrent.data[i] = pFrame.data[i];
mCurrent.data[i] = pFrame.payload()[i];
mCurrent.dataTimestamp[i] = seq;
}
mLastMarker = mMarker;
mCurrent.len = pFrame.len;
mCurrent.len = pFrame.payload().length();
/* that's dirty */
update(pFrame, seq, false);
update(pFrame, seq, false);
@@ -115,18 +115,18 @@ void SnifferItem::update(const CANFrame& pFrame, quint32 timeSeq, bool mute)
/* copy new value */
for (int i = 0; i < 8; i++)
{
maskedData = pFrame.data[i];
maskedData = pFrame.payload()[i];
if (mute) maskedData &= ~mNotch[i];
maskedCurr = mCurrent.data[i];
if (mute) maskedCurr &= ~mNotch[i];
if (maskedCurr != maskedData)
{
mCurrent.data[i] = pFrame.data[i];
mCurrent.data[i] = pFrame.payload()[i];
mCurrent.dataTimestamp[i] = timeSeq;
}
}
mCurrent.len = pFrame.len;
mCurrentTime = pFrame.timestamp;
mCurrent.len = pFrame.payload().length();
mCurrentTime = pFrame.timeStamp().microSeconds();
/* update marker */
//We "OR" our stored marker with the changed bits.
+6 -6
View File
@@ -300,20 +300,20 @@ void SnifferModel::update(CANConnection*, QVector<CANFrame>& pFrames)
{
foreach(const CANFrame& frame, pFrames)
{
if(!mMap.contains(frame.ID))
if(!mMap.contains(frame.frameId()))
{
int index = std::distance(mMap.begin(), mMap.lowerBound(frame.ID));
int index = std::distance(mMap.begin(), mMap.lowerBound(frame.frameId()));
/* add the frame */
beginInsertRows(QModelIndex(), index, index);
mMap[frame.ID] = new SnifferItem(frame, mTimeSequence);
mMap[frame.ID]->update(frame, mTimeSequence, mMuteNotched);
mMap[frame.frameId()] = new SnifferItem(frame, mTimeSequence);
mMap[frame.frameId()]->update(frame, mTimeSequence, mMuteNotched);
endInsertRows();
emit idChange(frame.ID, true);
emit idChange(frame.frameId(), true);
}
else
//updateData
mMap[frame.ID]->update(frame, mTimeSequence, mMuteNotched);
mMap[frame.frameId()]->update(frame, mTimeSequence, mMuteNotched);
}
}
+6 -6
View File
@@ -196,13 +196,13 @@ void TemporalGraphWindow::generateGraph()
x.reserve(frameCount);
y.reserve(frameCount);
xminval = xmaxval = modelFrames->at(0).timestamp / 1000000.0;
yminval = ymaxval = modelFrames->at(0).ID;
xminval = xmaxval = modelFrames->at(0).timeStamp().microSeconds() / 1000000.0;
yminval = ymaxval = modelFrames->at(0).frameId();
for (int i = 0; i < frameCount; i++)
{
x.append(modelFrames->at(i).timestamp / 1000000.0);
y.append(modelFrames->at(i).ID);
x.append(modelFrames->at(i).timeStamp().microSeconds() / 1000000.0);
y.append(modelFrames->at(i).frameId());
if (x[i] > xmaxval) xmaxval = x[i];
if (x[i] < xminval) xminval = x[i];
if (y[i] > ymaxval) ymaxval = y[i];
@@ -246,8 +246,8 @@ void TemporalGraphWindow::generateGraph()
for (int i = 0; i < frameCount; i++)
{
int x = static_cast<int>(((modelFrames->at(i).timestamp / 1000000.0) - xminval) * 4.0);
int y = static_cast<int>(modelFrames->at(i).ID - yminval) / 30;
int x = static_cast<int>(((modelFrames->at(i).timeStamp().microSeconds() / 1000000.0) - xminval) * 4.0);
int y = static_cast<int>(modelFrames->at(i).frameId() - yminval) / 30;
double val = colorMap->data()->cell(x, y);
double inc;
inc = 1 / (val + 1); //logarithmic decay