From c2029ccf878851e0b879cb77dd87e1476fe26a08 Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Tue, 26 Apr 2022 13:18:17 +0200
Subject: [PATCH] [General] Minor bugs fixing

---
 src/shared/drivers/runcam/Runcam.h |  2 +-
 src/shared/events/EventBroker.cpp  | 57 +++++++++++++++---------------
 src/shared/events/EventBroker.h    |  4 +--
 src/shared/sensors/HX711/HX711.cpp |  4 +--
 src/shared/utils/MovingAverage.h   | 15 ++++++--
 5 files changed, 44 insertions(+), 38 deletions(-)

diff --git a/src/shared/drivers/runcam/Runcam.h b/src/shared/drivers/runcam/Runcam.h
index fe089afee..eabb564ae 100644
--- a/src/shared/drivers/runcam/Runcam.h
+++ b/src/shared/drivers/runcam/Runcam.h
@@ -130,7 +130,7 @@ public:
 
 private:
     /**
-     * @brief Confiugre Serial Communication
+     * @brief Configure Serial Communication
      */
     bool configureSerialCommunication();
 
diff --git a/src/shared/events/EventBroker.cpp b/src/shared/events/EventBroker.cpp
index 543005be8..b748fc1e9 100644
--- a/src/shared/events/EventBroker.cpp
+++ b/src/shared/events/EventBroker.cpp
@@ -29,7 +29,6 @@ namespace Boardcore
 {
 
 EventBroker::EventBroker() {}
-
 void EventBroker::post(const Event& ev, uint8_t topic)
 {
 #ifdef TRACE_EVENTS
@@ -66,6 +65,34 @@ void EventBroker::removeDelayed(uint16_t id)
     }
 }
 
+void EventBroker::subscribe(EventHandlerBase* subscriber, uint8_t topic)
+{
+    Lock<FastMutex> lock(mtxSubscribers);
+    subscribers[topic].push_back(subscriber);
+}
+
+void EventBroker::unsubscribe(EventHandlerBase* subscriber, uint8_t topic)
+{
+    Lock<FastMutex> lock(mtxSubscribers);
+
+    deleteSubscriber(subscribers.at(topic), subscriber);
+}
+
+void EventBroker::unsubscribe(EventHandlerBase* subscriber)
+{
+    Lock<FastMutex> lock(mtxSubscribers);
+    for (auto it = subscribers.begin(); it != subscribers.end(); it++)
+    {
+        deleteSubscriber(it->second, subscriber);
+    }
+}
+
+void EventBroker::clearDelayedEvents()
+{
+    Lock<FastMutex> lock(mtxDelayedEvents);
+    delayedEvents.clear();
+}
+
 // Posts delayed events with expired deadline
 void EventBroker::run()
 {
@@ -110,28 +137,6 @@ void EventBroker::run()
     }
 }
 
-void EventBroker::subscribe(EventHandlerBase* subscriber, uint8_t topic)
-{
-    Lock<FastMutex> lock(mtxSubscribers);
-    subscribers[topic].push_back(subscriber);
-}
-
-void EventBroker::unsubscribe(EventHandlerBase* subscriber, uint8_t topic)
-{
-    Lock<FastMutex> lock(mtxSubscribers);
-
-    deleteSubscriber(subscribers.at(topic), subscriber);
-}
-
-void EventBroker::unsubscribe(EventHandlerBase* subscriber)
-{
-    Lock<FastMutex> lock(mtxSubscribers);
-    for (auto it = subscribers.begin(); it != subscribers.end(); it++)
-    {
-        deleteSubscriber(it->second, subscriber);
-    }
-}
-
 void EventBroker::deleteSubscriber(vector<EventHandlerBase*>& subs,
                                    EventHandlerBase* subscriber)
 {
@@ -150,10 +155,4 @@ void EventBroker::deleteSubscriber(vector<EventHandlerBase*>& subs,
     }
 }
 
-void EventBroker::clearDelayedEvents()
-{
-    Lock<FastMutex> lock(mtxDelayedEvents);
-    delayedEvents.clear();
-}
-
 }  // namespace Boardcore
diff --git a/src/shared/events/EventBroker.h b/src/shared/events/EventBroker.h
index d769bca42..581ff8011 100644
--- a/src/shared/events/EventBroker.h
+++ b/src/shared/events/EventBroker.h
@@ -148,14 +148,12 @@ public:
 
     /**
      * @brief Construct a new Event Broker object.
+     *
      * Public access required for testing purposes. Use the singleton interface
      * to access this class in production code.
-     *
      */
     EventBroker();
 
-    virtual ~EventBroker(){};
-
 private:
     /**
      * Private structure for holding a delayed event data in the list.
diff --git a/src/shared/sensors/HX711/HX711.cpp b/src/shared/sensors/HX711/HX711.cpp
index ff8c65add..8e3fa9269 100644
--- a/src/shared/sensors/HX711/HX711.cpp
+++ b/src/shared/sensors/HX711/HX711.cpp
@@ -87,9 +87,9 @@ void HX711::setScale(float scale) { this->scale = scale; }
 
 float HX711::getScale() { return scale; }
 
-void HX711::setOffset(float offset) { this->offset = offset * scale; }
+void HX711::setOffset(float offset) { this->offset = offset / scale; }
 
-void HX711::updateOffset(float offset) { this->offset += offset * scale; }
+void HX711::updateOffset(float offset) { this->offset += offset / scale; }
 
 float HX711::getOffset() { return offset; }
 
diff --git a/src/shared/utils/MovingAverage.h b/src/shared/utils/MovingAverage.h
index 94e8fda20..6a6efd1bb 100644
--- a/src/shared/utils/MovingAverage.h
+++ b/src/shared/utils/MovingAverage.h
@@ -45,12 +45,21 @@ public:
         value += newValue * movingAverageCoeff;
     }
 
+    void reset() { value = 0; }
+
+    void setN(int movingAverageN)
+    {
+        this->movingAverageN   = movingAverageN;
+        movingAverageCoeff     = 1 / (float)movingAverageN;
+        movingAverageCompCoeff = 1 - movingAverageCoeff;
+    }
+
 private:
     T value = 0;
 
-    const int movingAverageN           = 20;
-    const float movingAverageCoeff     = 1 / (float)movingAverageN;
-    const float movingAverageCompCoeff = 1 - movingAverageCoeff;
+    int movingAverageN           = 20;
+    float movingAverageCoeff     = 1 / (float)movingAverageN;
+    float movingAverageCompCoeff = 1 - movingAverageCoeff;
 };
 
 }  // namespace Boardcore
-- 
GitLab