From 4efbe96de1501da5e144093bd26b10d83fba5465 Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Fri, 26 Dec 2025 09:06:19 +0300 Subject: [PATCH] perf: updated critical section --- zh_encoder.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zh_encoder.c b/zh_encoder.c index d06a685..680b32f 100644 --- a/zh_encoder.c +++ b/zh_encoder.c @@ -155,7 +155,9 @@ esp_err_t zh_encoder_set(zh_encoder_handle_t *handle, double position) ZH_ERROR_CHECK(handle != NULL, ESP_ERR_INVALID_ARG, NULL, "Encoder set position failed. Invalid argument."); ZH_ERROR_CHECK(handle->is_initialized == true, ESP_FAIL, NULL, "Encoder set position failed. Encoder not initialized."); ZH_ERROR_CHECK(position <= handle->encoder_max_value && position >= handle->encoder_min_value, ESP_ERR_INVALID_ARG, NULL, "Encoder set position failed. Invalid argument."); + taskENTER_CRITICAL(&_spinlock); handle->encoder_position = position; + taskEXIT_CRITICAL(&_spinlock); ZH_LOGI("Encoder set position completed successfully."); return ESP_OK; } @@ -175,7 +177,9 @@ esp_err_t zh_encoder_reset(zh_encoder_handle_t *handle) ZH_LOGI("Encoder reset started."); ZH_ERROR_CHECK(handle != NULL, ESP_ERR_INVALID_ARG, NULL, "Encoder reset failed. Invalid argument."); ZH_ERROR_CHECK(handle->is_initialized == true, ESP_FAIL, NULL, "Encoder reset failed. Encoder not initialized."); + taskENTER_CRITICAL(&_spinlock); handle->encoder_position = (handle->encoder_min_value + handle->encoder_max_value) / 2; + taskEXIT_CRITICAL(&_spinlock); ZH_LOGI("Encoder reset completed successfully."); return ESP_OK; }