Goal of this change is to prevent a overflow in the command queue by flooding it with MQTT commands and therefor also prevent the reading of the inverter data. To achieve this it is now possible to specify a insert type for each queue element.
28 lines
1001 B
C++
28 lines
1001 B
C++
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
#pragma once
|
|
|
|
#include "DevControlCommand.h"
|
|
|
|
typedef enum { // ToDo: to be verified by field tests
|
|
AbsolutNonPersistent = 0x0000, // 0
|
|
RelativNonPersistent = 0x0001, // 1
|
|
AbsolutPersistent = 0x0100, // 256
|
|
RelativPersistent = 0x0101 // 257
|
|
} PowerLimitControlType;
|
|
|
|
class ActivePowerControlCommand : public DevControlCommand {
|
|
public:
|
|
explicit ActivePowerControlCommand(InverterAbstract* inv, const uint64_t router_address = 0);
|
|
|
|
virtual String getCommandName() const;
|
|
virtual QueueInsertType getQueueInsertType() const { return QueueInsertType::RemoveOldest; }
|
|
virtual bool areSameParameter(CommandAbstract* other);
|
|
|
|
virtual bool handleResponse(const fragment_t fragment[], const uint8_t max_fragment_id);
|
|
virtual void gotTimeout();
|
|
|
|
void setActivePowerLimit(const float limit, const PowerLimitControlType type = RelativNonPersistent);
|
|
float getLimit() const;
|
|
PowerLimitControlType getType() const;
|
|
};
|