Convert from FreeRTOS Semaphore to std::mutex
This commit is contained in:
parent
986d67a3d0
commit
55afa81cf1
@ -12,18 +12,10 @@
|
|||||||
#include "inverters/HM_4CH.h"
|
#include "inverters/HM_4CH.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
#define HOY_SEMAPHORE_TAKE() \
|
|
||||||
do { \
|
|
||||||
} while (xSemaphoreTake(_xSemaphore, portMAX_DELAY) != pdPASS)
|
|
||||||
#define HOY_SEMAPHORE_GIVE() xSemaphoreGive(_xSemaphore)
|
|
||||||
|
|
||||||
HoymilesClass Hoymiles;
|
HoymilesClass Hoymiles;
|
||||||
|
|
||||||
void HoymilesClass::init()
|
void HoymilesClass::init()
|
||||||
{
|
{
|
||||||
_xSemaphore = xSemaphoreCreateMutex();
|
|
||||||
HOY_SEMAPHORE_GIVE(); // release before first use
|
|
||||||
|
|
||||||
_pollInterval = 0;
|
_pollInterval = 0;
|
||||||
_radioNrf.reset(new HoymilesRadio_NRF());
|
_radioNrf.reset(new HoymilesRadio_NRF());
|
||||||
_radioCmt.reset(new HoymilesRadio_CMT());
|
_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()
|
void HoymilesClass::loop()
|
||||||
{
|
{
|
||||||
HOY_SEMAPHORE_TAKE();
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
_radioNrf->loop();
|
_radioNrf->loop();
|
||||||
_radioCmt->loop();
|
_radioCmt->loop();
|
||||||
|
|
||||||
@ -116,8 +108,6 @@ void HoymilesClass::loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HOY_SEMAPHORE_GIVE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<InverterAbstract> HoymilesClass::addInverter(const char* name, uint64_t serial)
|
std::shared_ptr<InverterAbstract> 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++) {
|
for (uint8_t i = 0; i < _inverters.size(); i++) {
|
||||||
if (_inverters[i]->serial() == serial) {
|
if (_inverters[i]->serial() == serial) {
|
||||||
HOY_SEMAPHORE_TAKE();
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
_inverters.erase(_inverters.begin() + i);
|
_inverters.erase(_inverters.begin() + i);
|
||||||
HOY_SEMAPHORE_GIVE();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,7 +43,7 @@ private:
|
|||||||
std::unique_ptr<HoymilesRadio_NRF> _radioNrf;
|
std::unique_ptr<HoymilesRadio_NRF> _radioNrf;
|
||||||
std::unique_ptr<HoymilesRadio_CMT> _radioCmt;
|
std::unique_ptr<HoymilesRadio_CMT> _radioCmt;
|
||||||
|
|
||||||
SemaphoreHandle_t _xSemaphore;
|
std::mutex _mutex;
|
||||||
|
|
||||||
uint32_t _pollInterval = 0;
|
uint32_t _pollInterval = 0;
|
||||||
uint32_t _lastPoll = 0;
|
uint32_t _lastPoll = 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user