// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md
#pragma once
#include "Urc.hpp"
namespace at::urc
{
class PoweredDown : public Urc
{
public:
static constexpr std::string_view head_immediate = "POWERED DOWN";
static constexpr std::string_view head_normal = "NORMAL POWER DOWN";
static auto isURC(const std::string &uHead) -> bool
{
auto isImmediatePowerDown = uHead.find(PoweredDown::head_immediate) != std::string::npos;
auto isNormalPowerDown = uHead.find(PoweredDown::head_normal) != std::string::npos;
return isImmediatePowerDown || isNormalPowerDown;
}
using Urc::Urc;
[[nodiscard]] auto isValid() const noexcept -> bool override;
[[nodiscard]] auto isNormalPowerDown() const noexcept -> bool;
[[nodiscard]] auto isImmediatePowerDown() const noexcept -> bool;
void Handle(UrcHandler &h) final
{
h.Handle(*this);
}
private:
bool isNormal = false;
};
} // namespace at::urc