blob: 6d05b4f1663810c20ccbf4a22bfd3c6284e3c7f1 [file] [log] [blame]
// Copyright 2022 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIBEC_CHARGE_CONTROL_SET_COMMAND_H_
#define LIBEC_CHARGE_CONTROL_SET_COMMAND_H_
#include <brillo/brillo_export.h>
#include "libec/ec_command.h"
namespace ec {
class BRILLO_EXPORT ChargeControlSetCommand
: public EcCommand<struct ec_params_charge_control, EmptyParam> {
public:
// Default args create a basic set command for default charging state.
explicit ChargeControlSetCommand(uint32_t mode = CHARGE_CONTROL_NORMAL,
uint8_t lower = -1,
uint8_t upper = -1)
: EcCommand(EC_CMD_CHARGE_CONTROL, 2) {
Req()->cmd = EC_CHARGE_CONTROL_CMD_SET;
Req()->mode = mode;
Req()->sustain_soc.lower = lower;
Req()->sustain_soc.upper = upper;
}
~ChargeControlSetCommand() override = default;
};
static_assert(!std::is_copy_constructible<ChargeControlSetCommand>::value,
"EcCommands are not copyable by default");
static_assert(!std::is_copy_assignable<ChargeControlSetCommand>::value,
"EcCommands are not copy-assignable by default");
} // namespace ec
#endif // LIBEC_CHARGE_CONTROL_SET_COMMAND_H_