From 55afa81cf15e43ad09faef9133391c3af7d04a9f Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Sat, 2 Sep 2023 16:46:23 +0200 Subject: [PATCH] Convert from FreeRTOS Semaphore to std::mutex --- lib/Hoymiles/src/Hoymiles.cpp | 15 ++------------- lib/Hoymiles/src/Hoymiles.h | 2 +- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/lib/Hoymiles/src/Hoymiles.cpp b/lib/Hoymiles/src/Hoymiles.cpp index 535f492..6b1bd7a 100644 --- a/lib/Hoymiles/src/Hoymiles.cpp +++ b/lib/Hoymiles/src/Hoymiles.cpp @@ -12,18 +12,10 @@ #include "inverters/HM_4CH.h" #include -#define HOY_SEMAPHORE_TAKE() \ - do { \ - } while (xSemaphoreTake(_xSemaphore, portMAX_DELAY) != pdPASS) -#define HOY_SEMAPHORE_GIVE() xSemaphoreGive(_xSemaphore) - HoymilesClass Hoymiles; void HoymilesClass::init() { - _xSemaphore = xSemaphoreCreateMutex(); - HOY_SEMAPHORE_GIVE(); // release before first use - _pollInterval = 0; _radioNrf.reset(new HoymilesRadio_NRF()); _radioCmt.reset(new HoymilesRadio_CMT()); @@ -41,7 +33,7 @@ void HoymilesClass::initCMT(int8_t pin_sdio, int8_t pin_clk, int8_t pin_cs, int8 void HoymilesClass::loop() { - HOY_SEMAPHORE_TAKE(); + std::lock_guard lock(_mutex); _radioNrf->loop(); _radioCmt->loop(); @@ -116,8 +108,6 @@ void HoymilesClass::loop() } } } - - HOY_SEMAPHORE_GIVE(); } std::shared_ptr HoymilesClass::addInverter(const char* name, uint64_t serial) @@ -195,9 +185,8 @@ void HoymilesClass::removeInverterBySerial(uint64_t serial) { for (uint8_t i = 0; i < _inverters.size(); i++) { if (_inverters[i]->serial() == serial) { - HOY_SEMAPHORE_TAKE(); + std::lock_guard lock(_mutex); _inverters.erase(_inverters.begin() + i); - HOY_SEMAPHORE_GIVE(); return; } } diff --git a/lib/Hoymiles/src/Hoymiles.h b/lib/Hoymiles/src/Hoymiles.h index a8f0655..11b8476 100644 --- a/lib/Hoymiles/src/Hoymiles.h +++ b/lib/Hoymiles/src/Hoymiles.h @@ -43,7 +43,7 @@ private: std::unique_ptr _radioNrf; std::unique_ptr _radioCmt; - SemaphoreHandle_t _xSemaphore; + std::mutex _mutex; uint32_t _pollInterval = 0; uint32_t _lastPoll = 0;