From f734893f0e25cbbc8634184736279e4f1dcb8c5b Mon Sep 17 00:00:00 2001 From: Luca Erbetta <luca.erbetta@skywarder.eu> Date: Thu, 19 May 2022 16:04:33 +0200 Subject: [PATCH] [Canbus] UNpress F to pay respects and fix 50% packet drops --- src/tests/drivers/canbus/test-canbus-2way.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/tests/drivers/canbus/test-canbus-2way.cpp b/src/tests/drivers/canbus/test-canbus-2way.cpp index ab566f0e4..cd85d04a6 100644 --- a/src/tests/drivers/canbus/test-canbus-2way.cpp +++ b/src/tests/drivers/canbus/test-canbus-2way.cpp @@ -37,7 +37,7 @@ #include "drivers/canbus/Canbus.h" #include "utils/collections/CircularBuffer.h" -constexpr uint32_t BAUD_RATE = 1000 * 1000; +constexpr uint32_t BAUD_RATE = 500 * 1000; constexpr float SAMPLE_POINT = 87.5f / 100.0f; constexpr uint32_t MSG_DEADLINE = 100; // ms constexpr uint32_t MSG_LOST_DEADLINE = 400; // ms @@ -77,11 +77,13 @@ void handleCanMessage(Canbus::CanRXPacket packet) else if (packet.packet.data[0] == 0x55) // This is a response to a request { Lock<FastMutex> l(mutexMsgs); + for (size_t i = 0; i < msgs.count(); ++i) { CanMsg& msg = msgs.get(i); if (msg.id == packet.packet.id) { + msg.id = 0; msg.ts = getTick() - msg.ts; break; @@ -98,7 +100,7 @@ void sendNewRequest() if (packet.id % 2 == 0) { - packet.id = 0xFFFFFFFF - packet.id; + packet.id = 0xFFFFFFF - packet.id; } packet.ext = 1; @@ -166,7 +168,7 @@ public: { StatsResult res __attribute__((unused)) = msgstats.getStats(); - TRACE( + printf( "Total packets: %u, Missed deadlines: %u, Lost packets: " "%u, Mean ping: %.2f, " "Max ping: %.0f, Min ping: %.0f, Buffer full: %u\n", @@ -176,7 +178,7 @@ public: Canbus::BusLoadEstimation::BusLoadInfo info __attribute__((unused)) = canManager->getLoadSensor().getLoadInfo(); - TRACE( + printf( "Payload rate: %.2f kbps, Frame rate: %.2f kbps, Load: " "%.2f %%\n", info.payloadBitRate / 1000.0f, info.totalBitRate / 1000.0f, @@ -231,12 +233,16 @@ int main() canManager->start(); mc.start(); - + const int slp = 5; for (;;) { sendNewRequest(); + Thread::sleep(slp); + sendNewRequest(); + Thread::sleep(slp); sendNewRequest(); + Thread::sleep(slp); sendNewRequest(); - Thread::sleep(2); + Thread::sleep(slp); } } -- GitLab