// 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; };