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