Various fixes to issues caused by recent transition to QCanBusFrame
This commit is contained in:
@@ -156,7 +156,9 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame)
|
|||||||
//int offset;
|
//int offset;
|
||||||
ISOTP_MESSAGE msg;
|
ISOTP_MESSAGE msg;
|
||||||
ISOTP_MESSAGE *pMsg;
|
ISOTP_MESSAGE *pMsg;
|
||||||
|
QByteArray dataBytes;
|
||||||
const unsigned char *data = reinterpret_cast<const unsigned char *>(frame.payload().constData());
|
const unsigned char *data = reinterpret_cast<const unsigned char *>(frame.payload().constData());
|
||||||
|
qDebug() << frame.payload().count();
|
||||||
//int dataLen = frame.payload().count();
|
//int dataLen = frame.payload().count();
|
||||||
|
|
||||||
frameType = 0;
|
frameType = 0;
|
||||||
@@ -185,16 +187,29 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame)
|
|||||||
if (frameLen > 7) return;
|
if (frameLen > 7) return;
|
||||||
|
|
||||||
msg.bus = frame.bus;
|
msg.bus = frame.bus;
|
||||||
|
msg.setFrameType(QCanBusFrame::FrameType::DataFrame);
|
||||||
msg.setExtendedFrameFormat( frame.hasExtendedFrameFormat() );
|
msg.setExtendedFrameFormat( frame.hasExtendedFrameFormat() );
|
||||||
msg.setFrameId(ID);
|
msg.setFrameId(ID);
|
||||||
msg.isReceived = frame.isReceived;
|
msg.isReceived = frame.isReceived;
|
||||||
msg.payload().reserve(frameLen);
|
dataBytes.reserve(frameLen);
|
||||||
msg.reportedLength = frameLen;
|
msg.reportedLength = frameLen;
|
||||||
msg.setTimeStamp(frame.timeStamp());
|
msg.setTimeStamp(frame.timeStamp());
|
||||||
msg.isMultiframe = false;
|
msg.isMultiframe = false;
|
||||||
if (useExtendedAddressing) for (int j = 0; j < frameLen; j++) msg.payload().append(frame.payload()[j+2]);
|
if (useExtendedAddressing)
|
||||||
else for (int j = 0; j < frameLen; j++) msg.payload().append(frame.payload()[j+1]);
|
{
|
||||||
//qDebug() << "Emitting single frame ISOTP message";
|
for (int j = 0; j < frameLen; j++)
|
||||||
|
{
|
||||||
|
dataBytes.append(data[j+2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int j = 0; j < frameLen; j++)
|
||||||
|
{
|
||||||
|
dataBytes.append(data[j+1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qDebug() << "Emitting single frame ISOTP message";
|
||||||
emit newISOMessage(msg);
|
emit newISOMessage(msg);
|
||||||
break;
|
break;
|
||||||
case 1: //first frame of a multi-frame message
|
case 1: //first frame of a multi-frame message
|
||||||
@@ -210,9 +225,9 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame)
|
|||||||
{
|
{
|
||||||
frameLen += data[2];
|
frameLen += data[2];
|
||||||
frameLen = frameLen & 0xFFF;
|
frameLen = frameLen & 0xFFF;
|
||||||
msg.payload().reserve(frameLen);
|
dataBytes.reserve(frameLen);
|
||||||
msg.reportedLength = frameLen;
|
msg.reportedLength = frameLen;
|
||||||
for (int j = 0; j < 5; j++) msg.payload().append(frame.payload()[3 + j]);
|
for (int j = 0; j < 5; j++) dataBytes.append(frame.payload()[3 + j]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -220,9 +235,10 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame)
|
|||||||
frameLen = frameLen & 0xFFF;
|
frameLen = frameLen & 0xFFF;
|
||||||
msg.payload().reserve(frameLen);
|
msg.payload().reserve(frameLen);
|
||||||
msg.reportedLength = frameLen;
|
msg.reportedLength = frameLen;
|
||||||
for (int j = 0; j < 6; j++) msg.payload().append(frame.payload()[2 + j]);
|
for (int j = 0; j < 6; j++) dataBytes.append(frame.payload()[2 + j]);
|
||||||
}
|
}
|
||||||
msg.lastSequence = -1;
|
msg.lastSequence = -1;
|
||||||
|
msg.setPayload(dataBytes);
|
||||||
messageBuffer.append(msg);
|
messageBuffer.append(msg);
|
||||||
//The sending ID is set to the last ID we used to send from this class which is
|
//The sending ID is set to the last ID we used to send from this class which is
|
||||||
//very likely to be correct. But, caution, there is a chance that it isn't. Beware.
|
//very likely to be correct. But, caution, there is a chance that it isn't. Beware.
|
||||||
@@ -266,7 +282,7 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame)
|
|||||||
}
|
}
|
||||||
if (pMsg->reportedLength <= pMsg->payload().count())
|
if (pMsg->reportedLength <= pMsg->payload().count())
|
||||||
{
|
{
|
||||||
//qDebug() << "Emitting multiframe ISOTP message";
|
qDebug() << "Emitting multiframe ISOTP message";
|
||||||
checkNeedFlush(pMsg->frameId());
|
checkNeedFlush(pMsg->frameId());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -316,7 +332,7 @@ void ISOTP_HANDLER::checkNeedFlush(uint64_t ID)
|
|||||||
qDebug() << "Flushing a partial frame " << QString::number(messageBuffer[i].frameId(), 16) << " " << messageBuffer[i].reportedLength << " " << messageBuffer[i].payload().count();
|
qDebug() << "Flushing a partial frame " << QString::number(messageBuffer[i].frameId(), 16) << " " << messageBuffer[i].reportedLength << " " << messageBuffer[i].payload().count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit newISOMessage(messageBuffer[i]);
|
if (messageBuffer[i].reportedLength > 0) emit newISOMessage(messageBuffer[i]);
|
||||||
messageBuffer.removeAt(i);
|
messageBuffer.removeAt(i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ QListWidgetItem * FilterUtility::createFilterItem(int32_t id, QListWidget* paren
|
|||||||
// Filter labeling (show interpreted frame names next to the CAN addr ID)
|
// Filter labeling (show interpreted frame names next to the CAN addr ID)
|
||||||
MatchingCriteria_t matchingCriteria;
|
MatchingCriteria_t matchingCriteria;
|
||||||
DBC_MESSAGE *msg = dbcHandler->findMessageForFilter(id,&matchingCriteria);
|
DBC_MESSAGE *msg = dbcHandler->findMessageForFilter(id,&matchingCriteria);
|
||||||
if (msg != NULL)
|
if (msg != nullptr)
|
||||||
{
|
{
|
||||||
filterItemName.append(" ");
|
filterItemName.append(" ");
|
||||||
filterItemName.append(msg->name);
|
filterItemName.append(msg->name);
|
||||||
|
|||||||
+1
-1
@@ -3201,7 +3201,7 @@ bool FrameFileIO::loadCanDumpFile(QString filename, QVector<CANFrame>* frames)
|
|||||||
QByteArray bytes(tokens[3].at(1) - '0', 0);
|
QByteArray bytes(tokens[3].at(1) - '0', 0);
|
||||||
for (int c = 0; c < thisFrame.payload().length(); c++)
|
for (int c = 0; c < thisFrame.payload().length(); c++)
|
||||||
{
|
{
|
||||||
bytes[c] = static_cast<char>(tokens[4 + c].toInt(nullptr, 16));
|
if ((4 + c) < tokens.size()) bytes[c] = static_cast<char>(tokens[4 + c].toInt(nullptr, 16));
|
||||||
}
|
}
|
||||||
thisFrame.setPayload(bytes);
|
thisFrame.setPayload(bytes);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -511,7 +511,9 @@ void FrameSenderWindow::doModifiers(int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Finally, drop the result into the proper data byte
|
//Finally, drop the result into the proper data byte
|
||||||
sendData->payload().data()[mod->destByte] = (char) shadowReg;
|
QByteArray newArr(sendData->payload());
|
||||||
|
newArr[mod->destByte] = (char) shadowReg;
|
||||||
|
sendData->setPayload(newArr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -830,6 +832,7 @@ void FrameSenderWindow::processCellChange(int line, int col)
|
|||||||
sendingData[line].count = 0;
|
sendingData[line].count = 0;
|
||||||
|
|
||||||
int numBuses = CANConManager::getInstance()->getNumBuses();
|
int numBuses = CANConManager::getInstance()->getNumBuses();
|
||||||
|
QByteArray arr;
|
||||||
|
|
||||||
switch (col)
|
switch (col)
|
||||||
{
|
{
|
||||||
@@ -865,7 +868,8 @@ void FrameSenderWindow::processCellChange(int line, int col)
|
|||||||
tempVal = Utility::ParseStringToNum(ui->tableSender->item(line, 3)->text());
|
tempVal = Utility::ParseStringToNum(ui->tableSender->item(line, 3)->text());
|
||||||
if (tempVal < 0) tempVal = 0;
|
if (tempVal < 0) tempVal = 0;
|
||||||
if (tempVal > 8) tempVal = 8;
|
if (tempVal > 8) tempVal = 8;
|
||||||
sendingData[line].payload().resize(tempVal);
|
arr.resize(tempVal);
|
||||||
|
sendingData[line].setPayload(arr);
|
||||||
break;
|
break;
|
||||||
case 4: // Ext
|
case 4: // Ext
|
||||||
if (ui->tableSender->item(line, 4)->checkState() == Qt::Checked) {
|
if (ui->tableSender->item(line, 4)->checkState() == Qt::Checked) {
|
||||||
@@ -885,10 +889,13 @@ void FrameSenderWindow::processCellChange(int line, int col)
|
|||||||
for (int i = 0; i < 8; i++) sendingData[line].payload().data()[i] = 0;
|
for (int i = 0; i < 8; i++) sendingData[line].payload().data()[i] = 0;
|
||||||
|
|
||||||
tokens = ui->tableSender->item(line, 6)->text().split(" ");
|
tokens = ui->tableSender->item(line, 6)->text().split(" ");
|
||||||
|
arr.clear();
|
||||||
|
arr.reserve(tokens.count());
|
||||||
for (int j = 0; j < tokens.count(); j++)
|
for (int j = 0; j < tokens.count(); j++)
|
||||||
{
|
{
|
||||||
sendingData[line].payload().data()[j] = (uint8_t)Utility::ParseStringToNum(tokens[j]);
|
arr.append((uint8_t)Utility::ParseStringToNum(tokens[j]));
|
||||||
}
|
}
|
||||||
|
sendingData[line].setPayload(arr);
|
||||||
break;
|
break;
|
||||||
case 7: //triggers
|
case 7: //triggers
|
||||||
processTriggerText(line);
|
processTriggerText(line);
|
||||||
|
|||||||
+19
-19
@@ -609,7 +609,7 @@ void FlowViewWindow::changeID(QString newID)
|
|||||||
|
|
||||||
updateGraphLocation();
|
updateGraphLocation();
|
||||||
|
|
||||||
memcpy(currBytes, frameCache.at(currentPosition).payload(), 8);
|
memcpy(currBytes, frameCache.at(currentPosition).payload().constData(), 8);
|
||||||
memcpy(refBytes, currBytes, 8);
|
memcpy(refBytes, currBytes, 8);
|
||||||
|
|
||||||
updateDataView();
|
updateDataView();
|
||||||
@@ -645,7 +645,7 @@ void FlowViewWindow::btnStopClick()
|
|||||||
currentPosition = 0;
|
currentPosition = 0;
|
||||||
|
|
||||||
|
|
||||||
memcpy(currBytes, frameCache.at(currentPosition).payload().data_ptr(), 8);
|
memcpy(currBytes, frameCache.at(currentPosition).payload().constData(), 8);
|
||||||
memcpy(refBytes, currBytes, 8);
|
memcpy(refBytes, currBytes, 8);
|
||||||
|
|
||||||
updateFrameLabel();
|
updateFrameLabel();
|
||||||
@@ -705,23 +705,23 @@ void FlowViewWindow::timerTriggered()
|
|||||||
void FlowViewWindow::updateDataView()
|
void FlowViewWindow::updateDataView()
|
||||||
{
|
{
|
||||||
|
|
||||||
ui->txtCurr1->setText(Utility::formatNumber((char)currBytes[0]));
|
ui->txtCurr1->setText(Utility::formatNumber((unsigned char)currBytes[0]));
|
||||||
ui->txtCurr2->setText(Utility::formatNumber((char)currBytes[1]));
|
ui->txtCurr2->setText(Utility::formatNumber((unsigned char)currBytes[1]));
|
||||||
ui->txtCurr3->setText(Utility::formatNumber((char)currBytes[2]));
|
ui->txtCurr3->setText(Utility::formatNumber((unsigned char)currBytes[2]));
|
||||||
ui->txtCurr4->setText(Utility::formatNumber((char)currBytes[3]));
|
ui->txtCurr4->setText(Utility::formatNumber((unsigned char)currBytes[3]));
|
||||||
ui->txtCurr5->setText(Utility::formatNumber((char)currBytes[4]));
|
ui->txtCurr5->setText(Utility::formatNumber((unsigned char)currBytes[4]));
|
||||||
ui->txtCurr6->setText(Utility::formatNumber((char)currBytes[5]));
|
ui->txtCurr6->setText(Utility::formatNumber((unsigned char)currBytes[5]));
|
||||||
ui->txtCurr7->setText(Utility::formatNumber((char)currBytes[6]));
|
ui->txtCurr7->setText(Utility::formatNumber((unsigned char)currBytes[6]));
|
||||||
ui->txtCurr8->setText(Utility::formatNumber((char)currBytes[7]));
|
ui->txtCurr8->setText(Utility::formatNumber((unsigned char)currBytes[7]));
|
||||||
|
|
||||||
ui->txtRef1->setText(Utility::formatNumber((char)refBytes[0]));
|
ui->txtRef1->setText(Utility::formatNumber((unsigned char)refBytes[0]));
|
||||||
ui->txtRef2->setText(Utility::formatNumber((char)refBytes[1]));
|
ui->txtRef2->setText(Utility::formatNumber((unsigned char)refBytes[1]));
|
||||||
ui->txtRef3->setText(Utility::formatNumber((char)refBytes[2]));
|
ui->txtRef3->setText(Utility::formatNumber((unsigned char)refBytes[2]));
|
||||||
ui->txtRef4->setText(Utility::formatNumber((char)refBytes[3]));
|
ui->txtRef4->setText(Utility::formatNumber((unsigned char)refBytes[3]));
|
||||||
ui->txtRef5->setText(Utility::formatNumber((char)refBytes[4]));
|
ui->txtRef5->setText(Utility::formatNumber((unsigned char)refBytes[4]));
|
||||||
ui->txtRef6->setText(Utility::formatNumber((char)refBytes[5]));
|
ui->txtRef6->setText(Utility::formatNumber((unsigned char)refBytes[5]));
|
||||||
ui->txtRef7->setText(Utility::formatNumber((char)refBytes[6]));
|
ui->txtRef7->setText(Utility::formatNumber((unsigned char)refBytes[6]));
|
||||||
ui->txtRef8->setText(Utility::formatNumber((char)refBytes[7]));
|
ui->txtRef8->setText(Utility::formatNumber((unsigned char)refBytes[7]));
|
||||||
|
|
||||||
ui->flowView->setReference(refBytes, false);
|
ui->flowView->setReference(refBytes, false);
|
||||||
ui->flowView->updateData(currBytes, true);
|
ui->flowView->updateData(currBytes, true);
|
||||||
@@ -782,7 +782,7 @@ void FlowViewWindow::updatePosition(bool forward)
|
|||||||
playbackTimer->stop();
|
playbackTimer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(currBytes, frameCache.at(currentPosition).payload().data(), 8);
|
memcpy(currBytes, frameCache.at(currentPosition).payload().constData(), 8);
|
||||||
|
|
||||||
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].frameId(), frameCache[currentPosition].timeStamp().microSeconds() / 1000000.0);
|
if (ui->cbSync->checkState() == Qt::Checked) emit sendCenterTimeID(frameCache[currentPosition].frameId(), frameCache[currentPosition].timeStamp().microSeconds() / 1000000.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "ui_isotp_interpreterwindow.h"
|
#include "ui_isotp_interpreterwindow.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "helpwindow.h"
|
#include "helpwindow.h"
|
||||||
|
#include "filterutility.h"
|
||||||
|
|
||||||
ISOTP_InterpreterWindow::ISOTP_InterpreterWindow(const QVector<CANFrame> *frames, QWidget *parent) :
|
ISOTP_InterpreterWindow::ISOTP_InterpreterWindow(const QVector<CANFrame> *frames, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
@@ -136,7 +137,7 @@ void ISOTP_InterpreterWindow::listFilterItemChanged(QListWidgetItem *item)
|
|||||||
{
|
{
|
||||||
if (item)
|
if (item)
|
||||||
{
|
{
|
||||||
int id = item->text().toInt(nullptr, 16);
|
int id = FilterUtility::getIdAsInt(item);
|
||||||
bool state = item->checkState();
|
bool state = item->checkState();
|
||||||
//qDebug() << id << "*" << state;
|
//qDebug() << id << "*" << state;
|
||||||
idFilters[id] = state;
|
idFilters[id] = state;
|
||||||
@@ -240,22 +241,6 @@ void ISOTP_InterpreterWindow::newUDSMessage(UDS_MESSAGE msg)
|
|||||||
|
|
||||||
buildText = ui->txtFrameDetails->toPlainText();
|
buildText = ui->txtFrameDetails->toPlainText();
|
||||||
|
|
||||||
/*
|
|
||||||
buildText.append("UDS Message:\n");
|
|
||||||
if (msg.isErrorReply)
|
|
||||||
{
|
|
||||||
buildText.append("Error reply for service " + udsDecoder->getServiceShortDesc(msg.service));
|
|
||||||
buildText.append("\nError Desc: " + udsDecoder->getNegativeResponseShort(msg.subFunc));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (msg.service < 0x3F || (msg.service > 0x7F && msg.service < 0xAF))
|
|
||||||
buildText.append("Request for service " + udsDecoder->getServiceShortDesc(msg.service) + " Sub Func: " + QString::number(msg.subFunc));
|
|
||||||
else
|
|
||||||
buildText.append("Response on service " + udsDecoder->getServiceShortDesc(msg.service - 0x40) + " Sub Func: " + QString::number(msg.subFunc));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//Much more detailed analysis than the code above. You'll like it.
|
|
||||||
buildText.append(udsDecoder->getDetailedMessageAnalysis(msg));
|
buildText.append(udsDecoder->getDetailedMessageAnalysis(msg));
|
||||||
|
|
||||||
ui->txtFrameDetails->setPlainText(buildText);
|
ui->txtFrameDetails->setPlainText(buildText);
|
||||||
@@ -275,9 +260,7 @@ void ISOTP_InterpreterWindow::newISOMessage(ISOTP_MESSAGE msg)
|
|||||||
{
|
{
|
||||||
idFilters.insert(msg.frameId(), true);
|
idFilters.insert(msg.frameId(), true);
|
||||||
|
|
||||||
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(msg.frameId(), msg.hasExtendedFrameFormat()), ui->listFilter);
|
FilterUtility::createCheckableFilterItem(msg.frameId(), true, ui->listFilter);
|
||||||
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
|
|
||||||
listItem->setCheckState(Qt::Checked);
|
|
||||||
}
|
}
|
||||||
if (!idFilters[msg.frameId()]) return;
|
if (!idFilters[msg.frameId()]) return;
|
||||||
messages.append(msg);
|
messages.append(msg);
|
||||||
@@ -303,5 +286,3 @@ void ISOTP_InterpreterWindow::newISOMessage(ISOTP_MESSAGE msg)
|
|||||||
}
|
}
|
||||||
ui->tableIsoFrames->setItem(rowNum, 5, new QTableWidgetItem(tempString));
|
ui->tableIsoFrames->setItem(rowNum, 5, new QTableWidgetItem(tempString));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
#include "helpwindow.h"
|
#include "helpwindow.h"
|
||||||
|
#include "filterutility.h"
|
||||||
|
|
||||||
RangeStateWindow::RangeStateWindow(const QVector<CANFrame> *frames, QWidget *parent) :
|
RangeStateWindow::RangeStateWindow(const QVector<CANFrame> *frames, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
@@ -68,7 +69,7 @@ RangeStateWindow::RangeStateWindow(const QVector<CANFrame> *frames, QWidget *par
|
|||||||
[=](QListWidgetItem *item)
|
[=](QListWidgetItem *item)
|
||||||
{
|
{
|
||||||
bool isChecked = false;
|
bool isChecked = false;
|
||||||
int id = Utility::ParseStringToNum(item->text());
|
int id = FilterUtility::getIdAsInt(item);
|
||||||
if (item->checkState() == Qt::Checked) isChecked = true;
|
if (item->checkState() == Qt::Checked) isChecked = true;
|
||||||
idFilters[id] = isChecked;
|
idFilters[id] = isChecked;
|
||||||
});
|
});
|
||||||
@@ -161,9 +162,7 @@ void RangeStateWindow::updatedFrames(int numFrames)
|
|||||||
if (!idFilters.contains(thisFrame.frameId()))
|
if (!idFilters.contains(thisFrame.frameId()))
|
||||||
{
|
{
|
||||||
idFilters.insert(thisFrame.frameId(), true);
|
idFilters.insert(thisFrame.frameId(), true);
|
||||||
QListWidgetItem* listItem = new QListWidgetItem(Utility::formatCANID(thisFrame.frameId(), thisFrame.hasExtendedFrameFormat()), ui->listFilter);
|
FilterUtility::createCheckableFilterItem(thisFrame.frameId(), true, ui->listFilter);
|
||||||
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
|
|
||||||
listItem->setCheckState(Qt::Checked); //default all filters to be set active
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,11 +181,7 @@ void RangeStateWindow::refreshFilterList()
|
|||||||
if (!idFilters.contains(id))
|
if (!idFilters.contains(id))
|
||||||
{
|
{
|
||||||
idFilters.insert(id, true);
|
idFilters.insert(id, true);
|
||||||
QListWidgetItem* listItem;
|
FilterUtility::createCheckableFilterItem(id, true, ui->listFilter);
|
||||||
if (id < 0x800) listItem = new QListWidgetItem(Utility::formatCANID(id, false), ui->listFilter);
|
|
||||||
else listItem = new QListWidgetItem(Utility::formatCANID(id, true), ui->listFilter);
|
|
||||||
listItem->setFlags(listItem->flags() | Qt::ItemIsUserCheckable); // set checkable flag
|
|
||||||
listItem->setCheckState(Qt::Checked); //default all filters to be set active
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-4
@@ -306,9 +306,10 @@ void ISOTPScriptHelper::setFilter(QJSValue id, QJSValue mask, QJSValue bus)
|
|||||||
void ISOTPScriptHelper::sendISOTP(QJSValue bus, QJSValue id, QJSValue length, QJSValue dataBytes)
|
void ISOTPScriptHelper::sendISOTP(QJSValue bus, QJSValue id, QJSValue length, QJSValue dataBytes)
|
||||||
{
|
{
|
||||||
ISOTP_MESSAGE msg;
|
ISOTP_MESSAGE msg;
|
||||||
|
QByteArray dataArray;
|
||||||
msg.setExtendedFrameFormat(false);
|
msg.setExtendedFrameFormat(false);
|
||||||
msg.setFrameId(id.toUInt());
|
msg.setFrameId(id.toUInt());
|
||||||
msg.payload().resize(length.toInt());
|
dataArray.resize(length.toInt());
|
||||||
|
|
||||||
int dataLen = msg.payload().length();
|
int dataLen = msg.payload().length();
|
||||||
|
|
||||||
@@ -316,8 +317,9 @@ void ISOTPScriptHelper::sendISOTP(QJSValue bus, QJSValue id, QJSValue length, QJ
|
|||||||
|
|
||||||
for (int i = 0; i < dataLen; i++)
|
for (int i = 0; i < dataLen; i++)
|
||||||
{
|
{
|
||||||
msg.payload()[i] = static_cast<int8_t>(dataBytes.property(i).toInt());
|
dataArray[i] = static_cast<int8_t>(dataBytes.property(i).toInt());
|
||||||
}
|
}
|
||||||
|
msg.setPayload(dataArray);
|
||||||
|
|
||||||
msg.bus = bus.toInt();
|
msg.bus = bus.toInt();
|
||||||
|
|
||||||
@@ -379,9 +381,10 @@ void UDSScriptHelper::setFilter(QJSValue id, QJSValue mask, QJSValue bus)
|
|||||||
void UDSScriptHelper::sendUDS(QJSValue bus, QJSValue id, QJSValue service, QJSValue sublen, QJSValue subFunc, QJSValue length, QJSValue data)
|
void UDSScriptHelper::sendUDS(QJSValue bus, QJSValue id, QJSValue service, QJSValue sublen, QJSValue subFunc, QJSValue length, QJSValue data)
|
||||||
{
|
{
|
||||||
UDS_MESSAGE msg;
|
UDS_MESSAGE msg;
|
||||||
|
QByteArray dataArray;
|
||||||
msg.setExtendedFrameFormat(false);
|
msg.setExtendedFrameFormat(false);
|
||||||
msg.setFrameId( id.toUInt() );
|
msg.setFrameId( id.toUInt() );
|
||||||
msg.payload().resize(length.toUInt());
|
dataArray.resize(length.toUInt());
|
||||||
msg.service = service.toUInt();
|
msg.service = service.toUInt();
|
||||||
msg.subFuncLen = sublen.toUInt();
|
msg.subFuncLen = sublen.toUInt();
|
||||||
msg.subFunc = subFunc.toUInt();
|
msg.subFunc = subFunc.toUInt();
|
||||||
@@ -390,8 +393,9 @@ void UDSScriptHelper::sendUDS(QJSValue bus, QJSValue id, QJSValue service, QJSVa
|
|||||||
|
|
||||||
for (int i = 0; i < msg.payload().length(); i++)
|
for (int i = 0; i < msg.payload().length(); i++)
|
||||||
{
|
{
|
||||||
msg.payload().append(static_cast<uint8_t>(data.property(static_cast<quint32>(i)).toInt()));
|
dataArray[i] = (static_cast<uint8_t>(data.property(static_cast<quint32>(i)).toInt()));
|
||||||
}
|
}
|
||||||
|
msg.setPayload(dataArray);
|
||||||
|
|
||||||
msg.bus = bus.toInt();
|
msg.bus = bus.toInt();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user