From 6bc83826f9011f4b482c8f719d559696f6fe5ee7 Mon Sep 17 00:00:00 2001 From: andreika-git Date: Thu, 12 Oct 2023 00:10:47 +0300 Subject: [PATCH] handleWrapCan() now receives packets https://github.com/rusefi/rusefi/issues/5606 --- firmware/console/binary/tunerstudio.cpp | 4 ++-- simulator/simulator/rusEfiFunctionalTest.cpp | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index cf58d8aa56..a59c400c1b 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -722,8 +722,8 @@ int TunerStudio::handleCrcCommand(TsChannelBase* tsChannel, char *data, int inco break; #if EFI_SIMULATOR case TS_SIMULATE_CAN: - void handleWrapCan(TsChannelBase* tsChannel); - handleWrapCan(tsChannel); + void handleWrapCan(TsChannelBase* tsChannel, char *data, int incomingPacketSize); + handleWrapCan(tsChannel, data, incomingPacketSize - 1); break; #endif // EFI_SIMULATOR case TS_IO_TEST_COMMAND: diff --git a/simulator/simulator/rusEfiFunctionalTest.cpp b/simulator/simulator/rusEfiFunctionalTest.cpp index 35db2f2b49..97cd66e76c 100644 --- a/simulator/simulator/rusEfiFunctionalTest.cpp +++ b/simulator/simulator/rusEfiFunctionalTest.cpp @@ -227,7 +227,23 @@ CANDriver* detectCanDevice(brain_pin_e pinRx, brain_pin_e pinTx) { static uint8_t wrapOutBuffer[BLOCKING_FACTOR + 100]; -void handleWrapCan(TsChannelBase* tsChannel) { +void handleWrapCan(TsChannelBase* tsChannel, char *data, int incomingPacketSize) { + // process incoming CAN packets + if (incomingPacketSize > 0) { + int numPackets = *data++; + incomingPacketSize--; + + for (int i = 0; i < numPackets && incomingPacketSize >= sizeof(CANRxFrame); i++) { + CANRxFrame rxFrame; + memcpy(&rxFrame, data, sizeof(rxFrame)); + + processCanRxMessage(0, rxFrame, getTimeNowNt()); + + data += sizeof(rxFrame); + incomingPacketSize -= sizeof(rxFrame); + } + } + int size = minI(txCanBuffer.getCount(), BLOCKING_FACTOR / sizeof(CANTxFrame)); memcpy(wrapOutBuffer, &size, 2);