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