Converted more code to be easier to generalize to larger CAN payloads

for CAN-FD. Improved some code to be faster. Fixed up some compile
time warnings.
This commit is contained in:
Collin Kidder
2019-12-15 15:02:06 -05:00
parent ef24036d1c
commit 8beb0e31a0
28 changed files with 589 additions and 435 deletions
+13 -11
View File
@@ -237,8 +237,8 @@ void UDSScanWindow::scanUDS()
for (id = startID; id <= endID; id++)
{
test.ID = id;
test.data.clear();
test.setFrameId( id );
test.payload().clear();
if (ui->ckTester->isChecked())
{
@@ -354,17 +354,19 @@ void UDSScanWindow::gotUDSReply(UDS_MESSAGE msg)
int offset = ui->spinReplyOffset->value();
UDS_MESSAGE sentFrame;
bool gotReply = false;
unsigned char *data = reinterpret_cast<unsigned char *>(msg.payload().data());
int dataLen = msg.payload().length();
int numSending = sendingFrames.length();
if (numSending == 0) return;
if (currIdx >= numSending) return;
sentFrame = sendingFrames[currIdx];
id = msg.ID;
id = msg.frameId();
qDebug() << "UDS message ID " << QString::number(msg.ID,16) << " service: " << QString::number(msg.service, 16) << " subfunc: " << QString::number(msg.subFunc, 16);
qDebug() << "UDS message ID " << QString::number(msg.frameId(),16) << " service: " << QString::number(msg.service, 16) << " subfunc: " << QString::number(msg.subFunc, 16);
if ((id == (uint32_t)(sentFrame.ID + offset)) || ui->cbAllowAdaptiveOffset->isChecked())
if ((id == (uint32_t)(sentFrame.frameId() + offset)) || ui->cbAllowAdaptiveOffset->isChecked())
{
serviceShortName = udsHandler->getServiceShortDesc(sentFrame.service);
if (serviceShortName.length() < 3) serviceShortName = QString::number(sentFrame.service, 16);
@@ -374,10 +376,10 @@ void UDSScanWindow::gotUDSReply(UDS_MESSAGE msg)
QTreeWidgetItem *nodePositive = new QTreeWidgetItem();
QString reply = "POSITIVE ";
for (int i = 0; i < msg.data.length(); i++)
for (int i = 0; i < dataLen; i++)
{
reply.append(" ");
reply.append(Utility::formatHexNum(msg.data[i]));
reply.append(Utility::formatHexNum(data[i]));
}
nodePositive->setText(0, reply);
nodePositive->setForeground(0, QBrush(Qt::darkGreen));
@@ -387,12 +389,12 @@ void UDSScanWindow::gotUDSReply(UDS_MESSAGE msg)
}
else if ( msg.isErrorReply && (msg.service == sendingFrames[currIdx].service) )
{
if (msg.data.length())
if (dataLen)
{
setupNodes(id);
QTreeWidgetItem *nodeNegative = new QTreeWidgetItem();
qDebug() << ui->spinNumBytes->value();
nodeNegative->setText(0, "NEGATIVE - " + udsHandler->getNegativeResponseShort(msg.data[0]));
nodeNegative->setText(0, "NEGATIVE - " + udsHandler->getNegativeResponseShort(data[0]));
nodeNegative->setForeground(0, QBrush(Qt::darkRed));
nodeSubFunc->addChild(nodeNegative);
nodeSubFunc->setForeground(0, QBrush(Qt::darkRed));
@@ -413,10 +415,10 @@ void UDSScanWindow::setupNodes(uint32_t replyID)
if (serviceShortName.length() < 3) serviceShortName = QString::number(sendingFrames[currIdx].service, 16);
QTreeWidgetItem *replyNode = nullptr;
if (!nodeID || nodeID->text(0) != Utility::formatHexNum(sendingFrames[currIdx].ID))
if (!nodeID || nodeID->text(0) != Utility::formatHexNum(sendingFrames[currIdx].frameId()))
{
nodeID = new QTreeWidgetItem();
nodeID->setText(0, Utility::formatHexNum(sendingFrames[currIdx].ID));
nodeID->setText(0, Utility::formatHexNum(sendingFrames[currIdx].frameId()));
ui->treeResults->addTopLevelItem(nodeID);
nodeService = nullptr;
}