Fix: processing of merged data called twice when single frame received
This commit is contained in:
@@ -80,7 +80,7 @@ void CommObd2Can::mainLoop() {
|
|||||||
|
|
||||||
// if delay between commands is defined, check if this delay is not expired
|
// if delay between commands is defined, check if this delay is not expired
|
||||||
if (liveData->delayBetweenCommandsMs != 0) {
|
if (liveData->delayBetweenCommandsMs != 0) {
|
||||||
if (bResponseProcessed & (unsigned long)(millis() - lastDataSent) > liveData->delayBetweenCommandsMs) {
|
if (bResponseProcessed && (unsigned long)(millis() - lastDataSent) > liveData->delayBetweenCommandsMs) {
|
||||||
bResponseProcessed = false;
|
bResponseProcessed = false;
|
||||||
liveData->canSendNextAtCommand = true;
|
liveData->canSendNextAtCommand = true;
|
||||||
return;
|
return;
|
||||||
@@ -245,7 +245,6 @@ uint8_t CommObd2Can::receivePID() {
|
|||||||
lastDataSent = millis();
|
lastDataSent = millis();
|
||||||
syslog->infoNolf(DEBUG_COMM, " CAN READ ");
|
syslog->infoNolf(DEBUG_COMM, " CAN READ ");
|
||||||
CAN->readMsgBuf(&rxId, &rxLen, rxBuf); // Read data: len = data length, buf = data byte(s)
|
CAN->readMsgBuf(&rxId, &rxLen, rxBuf); // Read data: len = data length, buf = data byte(s)
|
||||||
// mockupReceiveCanBuf(&rxId, &rxLen, rxBuf);
|
|
||||||
|
|
||||||
if ((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
|
if ((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
|
||||||
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), rxLen);
|
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), rxLen);
|
||||||
@@ -366,6 +365,8 @@ bool CommObd2Can::processFrameBytes() {
|
|||||||
buffer2string(liveData->responseRowMerged, mergedData.data(), mergedData.size());
|
buffer2string(liveData->responseRowMerged, mergedData.data(), mergedData.size());
|
||||||
liveData->vResponseRowMerged.assign(mergedData.begin(), mergedData.end());
|
liveData->vResponseRowMerged.assign(mergedData.begin(), mergedData.end());
|
||||||
processMergedResponse();
|
processMergedResponse();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user