From e4dacce882003958802f8f0e56241b14ffce2532 Mon Sep 17 00:00:00 2001 From: willem Date: Fri, 16 Sep 2022 12:25:01 +0200 Subject: [PATCH] optimize --- firmware/src/commu_task.cpp | 18 +++++++++++++----- firmware/src/commu_task.h | 6 ++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/firmware/src/commu_task.cpp b/firmware/src/commu_task.cpp index 57ff87f..e455160 100644 --- a/firmware/src/commu_task.cpp +++ b/firmware/src/commu_task.cpp @@ -27,9 +27,14 @@ QueueHandle_t CommuTask::getKnobStateQueue() { return knob_state_queue_; } -void CommuTask::setAngleValue(uint32_t angle) +void CommuTask::setAngleValue(int32_t angle) { - angle_ = angle; + if(angle_ != angle) + { + angle_ = angle; + valuesUpdated = true; + log_d("new Angle valeu: %u", angle_); + } //log_d("setAngleCalled = %u", angle); } @@ -70,11 +75,14 @@ void CommuTask::run() { continue; } - if(millis() - lastSensorUpdate > 1000) + setAngleValue(state.current_position); + + if(millis() - lastSensorUpdate > 1000 && valuesUpdated) { - angle.setValue(state.current_position); - log_d("new angle=%u", state.current_position); + angle.setValue(angle_); + log_d("new angle=%u", angle_); lastSensorUpdate = millis(); + valuesUpdated = false; } diff --git a/firmware/src/commu_task.h b/firmware/src/commu_task.h index 032b47d..2a06fdc 100644 --- a/firmware/src/commu_task.h +++ b/firmware/src/commu_task.h @@ -23,7 +23,7 @@ class CommuTask : public Task { CommuTask(const uint8_t task_core); ~CommuTask(); - void setAngleValue(uint32_t angle); + void setAngleValue(int32_t angle); QueueHandle_t getKnobStateQueue(); @@ -33,9 +33,11 @@ class CommuTask : public Task { private: - uint32_t angle_ =0; + int32_t angle_ =0; SemaphoreHandle_t mutex_; + bool valuesUpdated = false; + QueueHandle_t knob_state_queue_;