Migrate Datastore to TaskScheduler
This commit is contained in:
parent
12031ed09e
commit
c045b5df48
@ -1,13 +1,12 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include <TimeoutHelper.h>
|
||||
#include <TaskSchedulerDeclarations.h>
|
||||
#include <mutex>
|
||||
|
||||
class DatastoreClass {
|
||||
public:
|
||||
void init();
|
||||
void loop();
|
||||
void init(Scheduler* scheduler);
|
||||
|
||||
// Sum of yield total of all enabled inverters, a inverter which is just disabled at night is also included
|
||||
float getTotalAcYieldTotalEnabled();
|
||||
@ -58,7 +57,10 @@ public:
|
||||
bool getIsAllEnabledReachable();
|
||||
|
||||
private:
|
||||
TimeoutHelper _updateTimeout;
|
||||
void loop();
|
||||
|
||||
Task _loopTask;
|
||||
|
||||
std::mutex _mutex;
|
||||
|
||||
float _totalAcYieldTotalEnabled = 0;
|
||||
|
||||
@ -8,14 +8,21 @@
|
||||
|
||||
DatastoreClass Datastore;
|
||||
|
||||
void DatastoreClass::init()
|
||||
void DatastoreClass::init(Scheduler* scheduler)
|
||||
{
|
||||
_updateTimeout.set(1000);
|
||||
scheduler->addTask(_loopTask);
|
||||
_loopTask.setCallback(std::bind(&DatastoreClass::loop, this));
|
||||
_loopTask.setIterations(TASK_FOREVER);
|
||||
_loopTask.setInterval(1 * TASK_SECOND);
|
||||
_loopTask.enable();
|
||||
}
|
||||
|
||||
void DatastoreClass::loop()
|
||||
{
|
||||
if (Hoymiles.isAllRadioIdle() && _updateTimeout.occured()) {
|
||||
if (!Hoymiles.isAllRadioIdle()) {
|
||||
_loopTask.forceNextIteration();
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t isProducing = 0;
|
||||
uint8_t isReachable = 0;
|
||||
@ -104,9 +111,6 @@ void DatastoreClass::loop()
|
||||
_isAtLeastOnePollEnabled = pollEnabledCount > 0;
|
||||
|
||||
_totalDcIrradiation = _totalDcIrradiationInstalled > 0 ? _totalDcPowerIrradiation / _totalDcIrradiationInstalled * 100.0f : 0;
|
||||
|
||||
_updateTimeout.reset();
|
||||
}
|
||||
}
|
||||
|
||||
float DatastoreClass::getTotalAcYieldTotalEnabled()
|
||||
|
||||
@ -146,7 +146,7 @@ void setup()
|
||||
|
||||
InverterSettings.init();
|
||||
|
||||
Datastore.init();
|
||||
Datastore.init(&scheduler);
|
||||
}
|
||||
|
||||
void loop()
|
||||
@ -157,8 +157,6 @@ void loop()
|
||||
yield();
|
||||
InverterSettings.loop();
|
||||
yield();
|
||||
Datastore.loop();
|
||||
yield();
|
||||
MqttHandleDtu.loop();
|
||||
yield();
|
||||
MqttHandleInverter.loop();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user