From a364444f76475538c4f239f646f335bdb33cb5ec Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Wed, 19 Feb 2020 21:01:45 -0500 Subject: [PATCH] Fixes to isotp handler --- bus_protocols/isotp_handler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bus_protocols/isotp_handler.cpp b/bus_protocols/isotp_handler.cpp index ecfb332..c589cdc 100644 --- a/bus_protocols/isotp_handler.cpp +++ b/bus_protocols/isotp_handler.cpp @@ -268,18 +268,21 @@ void ISOTP_HANDLER::processFrame(const CANFrame &frame) } if (!pMsg) return; if (!pMsg->isMultiframe) return; //if we didn't get a frame type 1 (start of multiframe) first then ignore this frame. - ln = pMsg->payload().length() - pMsg->payload().count(); + dataBytes.clear(); + dataBytes.append(pMsg->payload()); + ln = pMsg->reportedLength - pMsg->payload().count(); //offset = pMsg->data.count(); if (useExtendedAddressing) { if (ln > 6) ln = 6; - for (int j = 0; j < ln; j++) pMsg->payload().append(frame.payload()[j+2]); + for (int j = 0; j < ln; j++) dataBytes.append(frame.payload()[j+2]); } else { if (ln > 7) ln = 7; - for (int j = 0; j < ln; j++) pMsg->payload().append(frame.payload()[j+1]); + for (int j = 0; j < ln; j++) dataBytes.append(frame.payload()[j+1]); } + pMsg->setPayload(dataBytes); if (pMsg->reportedLength <= pMsg->payload().count()) { qDebug() << "Emitting multiframe ISOTP message";