Feature: Set Limit transfer only to "OK" if the queue does not contain any more commands

This commit is contained in:
Thomas Basler 2024-12-15 13:23:45 +01:00
parent 8acae28c59
commit 5265c6281f
3 changed files with 10 additions and 1 deletions

View File

@ -161,6 +161,11 @@ void HoymilesRadio::removeCommands(InverterAbstract* inv)
_commandQueue.removeAllEntriesForInverter(inv);
}
uint8_t HoymilesRadio::countSimilarCommands(std::shared_ptr<CommandAbstract> cmd)
{
return _commandQueue.countSimilarCommands(cmd);
}
bool HoymilesRadio::isIdle() const
{
return !_busyFlag;

View File

@ -24,6 +24,7 @@ public:
bool isInitialized() const;
void removeCommands(InverterAbstract* inv);
uint8_t countSimilarCommands(std::shared_ptr<CommandAbstract> cmd);
void enqueCommand(std::shared_ptr<CommandAbstract> cmd)
{

View File

@ -87,7 +87,10 @@ bool ActivePowerControlCommand::handleResponse(const fragment_t fragment[], cons
}
}
_inv->SystemConfigPara()->setLastUpdateCommand(millis());
std::shared_ptr<ActivePowerControlCommand> cmd(std::shared_ptr<ActivePowerControlCommand>(), this);
if (_inv->getRadio()->countSimilarCommands(cmd) == 1) {
_inv->SystemConfigPara()->setLastLimitCommandSuccess(CMD_OK);
}
return true;
}