blob: 8071cbca942fe46ac74397399d18704cd91528d0 [file] [log] [blame]
/*
*
* Copyright (c) 2023 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <app-common/zap-generated/cluster-objects.h>
#include <app/CommandHandlerInterface.h>
#include <app/util/util.h>
#include <utility>
namespace chip {
namespace app {
namespace Clusters {
namespace ModeBase {
namespace Attributes {
namespace SupportedModes {
static constexpr AttributeId Id = 0x00000000;
struct TypeInfo
{
using Type = DataModel::List<const detail::Structs::ModeOptionStruct::Type>;
using DecodableType = DataModel::DecodableList<detail::Structs::ModeOptionStruct::DecodableType>;
using DecodableArgType = DecodableType &;
static constexpr AttributeId GetAttributeId() { return Attributes::SupportedModes::Id; }
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SupportedModes
namespace CurrentMode {
static constexpr AttributeId Id = 0x00000001;
struct TypeInfo
{
using Type = uint8_t;
using DecodableType = uint8_t;
using DecodableArgType = uint8_t;
static constexpr AttributeId GetAttributeId() { return Attributes::CurrentMode::Id; }
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace CurrentMode
namespace StartUpMode {
static constexpr AttributeId Id = 0x00000002;
struct TypeInfo
{
using Type = DataModel::Nullable<uint8_t>;
using DecodableType = DataModel::Nullable<uint8_t>;
using DecodableArgType = const DecodableType &;
static constexpr AttributeId GetAttributeId() { return Attributes::StartUpMode::Id; }
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace StartUpMode
namespace OnMode {
static constexpr AttributeId Id = 0x00000003;
struct TypeInfo
{
using Type = DataModel::Nullable<uint8_t>;
using DecodableType = DataModel::Nullable<uint8_t>;
using DecodableArgType = const DecodableType &;
static constexpr AttributeId GetAttributeId() { return Attributes::OnMode::Id; }
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace OnMode
namespace GeneratedCommandList {
static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id;
} // namespace GeneratedCommandList
namespace AcceptedCommandList {
static constexpr AttributeId Id = Globals::Attributes::AcceptedCommandList::Id;
} // namespace AcceptedCommandList
namespace AttributeList {
static constexpr AttributeId Id = Globals::Attributes::AttributeList::Id;
} // namespace AttributeList
namespace FeatureMap {
static constexpr AttributeId Id = Globals::Attributes::FeatureMap::Id;
} // namespace FeatureMap
namespace ClusterRevision {
static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id;
} // namespace ClusterRevision
} // namespace Attributes
enum class Feature : uint32_t
{
kOnOff = 0x1,
};
namespace Commands {
namespace ChangeToModeResponse {
static constexpr CommandId Id = 0x00000001;
enum class Fields : uint8_t
{
kStatus = 0,
kStatusText = 1,
};
struct Type
{
public:
static constexpr CommandId GetCommandId() { return Commands::ChangeToModeResponse::Id; }
uint8_t status = static_cast<uint8_t>(0);
Optional<CharSpan> statusText;
CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
using ResponseType = DataModel::NullObjectType;
static constexpr bool MustUseTimedInvoke() { return false; }
};
struct DecodableType
{
public:
static constexpr CommandId GetCommandId() { return Commands::ChangeToModeResponse::Id; }
uint8_t status = static_cast<uint8_t>(0);
Optional<CharSpan> statusText;
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
}; // namespace ChangeToModeResponse
namespace ChangeToMode {
static constexpr CommandId Id = 0x00000000;
enum class Fields : uint8_t
{
kNewMode = 0,
};
struct Type
{
public:
static constexpr CommandId GetCommandId() { return Commands::ChangeToMode::Id; }
uint8_t newMode = static_cast<uint8_t>(0);
CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
using ResponseType = Clusters::ModeBase::Commands::ChangeToModeResponse::DecodableType;
static constexpr bool MustUseTimedInvoke() { return false; }
};
struct DecodableType
{
public:
static constexpr CommandId GetCommandId() { return Commands::ChangeToMode::Id; }
uint8_t newMode = static_cast<uint8_t>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
}; // namespace ChangeToMode
} // namespace Commands
// enums
// Enum for ModeTag
enum class ModeTag : uint16_t
{
kAuto = 0x0,
kQuick = 0x1,
kQuiet = 0x2,
kLowNoise = 0x3,
kLowEnergy = 0x4,
kVacation = 0x5,
kMin = 0x6,
kMax = 0x7,
kNight = 0x8,
kDay = 0x9,
};
// Enum for StatusCode
enum class StatusCode : uint8_t
{
kSuccess = 0x0,
kUnsupportedMode = 0x1,
kGenericFailure = 0x2,
kInvalidInMode = 0x3,
};
} // namespace ModeBase
} // namespace Clusters
} // namespace app
} // namespace chip