| /* | 
 |  * | 
 |  *    Copyright (c) 2022 Project CHIP Authors | 
 |  * | 
 |  *    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. | 
 |  */ | 
 |  | 
 | // THIS FILE IS GENERATED BY ZAP | 
 | // This file is generated from clusters-Attributes.h.zapt | 
 |  | 
 | #pragma once | 
 |  | 
 | #include <app/ConcreteAttributePath.h> | 
 | #include <app/data-model/DecodableList.h> | 
 | #include <app/data-model/List.h> | 
 | #include <app/data-model/Nullable.h> | 
 | #include <app/util/basic-types.h> | 
 | #include <lib/core/TLV.h> | 
 | #include <lib/support/BitMask.h> | 
 |  | 
 | #include <clusters/shared/Attributes.h> | 
 | #include <clusters/shared/Enums.h> | 
 | #include <clusters/shared/Structs.h> | 
 |  | 
 | #include <clusters/PumpConfigurationAndControl/AttributeIds.h> | 
 | #include <clusters/PumpConfigurationAndControl/ClusterId.h> | 
 | #include <clusters/PumpConfigurationAndControl/Enums.h> | 
 | #include <clusters/PumpConfigurationAndControl/Structs.h> | 
 |  | 
 | namespace chip { | 
 | namespace app { | 
 | namespace Clusters { | 
 | namespace PumpConfigurationAndControl { | 
 | namespace Attributes { | 
 |  | 
 | namespace MaxPressure { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxPressure::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxPressure | 
 | namespace MaxSpeed { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxSpeed::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxSpeed | 
 | namespace MaxFlow { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxFlow::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxFlow | 
 | namespace MinConstPressure { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MinConstPressure::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MinConstPressure | 
 | namespace MaxConstPressure { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxConstPressure::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxConstPressure | 
 | namespace MinCompPressure { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MinCompPressure::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MinCompPressure | 
 | namespace MaxCompPressure { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxCompPressure::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxCompPressure | 
 | namespace MinConstSpeed { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MinConstSpeed::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MinConstSpeed | 
 | namespace MaxConstSpeed { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxConstSpeed::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxConstSpeed | 
 | namespace MinConstFlow { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MinConstFlow::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MinConstFlow | 
 | namespace MaxConstFlow { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxConstFlow::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxConstFlow | 
 | namespace MinConstTemp { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MinConstTemp::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MinConstTemp | 
 | namespace MaxConstTemp { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::MaxConstTemp::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace MaxConstTemp | 
 | namespace PumpStatus { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::BitMask<chip::app::Clusters::PumpConfigurationAndControl::PumpStatusBitmap>; | 
 |     using DecodableType    = chip::BitMask<chip::app::Clusters::PumpConfigurationAndControl::PumpStatusBitmap>; | 
 |     using DecodableArgType = chip::BitMask<chip::app::Clusters::PumpConfigurationAndControl::PumpStatusBitmap>; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::PumpStatus::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace PumpStatus | 
 | namespace EffectiveOperationMode { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |     using DecodableType    = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |     using DecodableArgType = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::EffectiveOperationMode::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace EffectiveOperationMode | 
 | namespace EffectiveControlMode { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |     using DecodableType    = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |     using DecodableArgType = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::EffectiveControlMode::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace EffectiveControlMode | 
 | namespace Capacity { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<int16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<int16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::Capacity::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace Capacity | 
 | namespace Speed { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint16_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::Speed::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace Speed | 
 | namespace LifetimeRunningHours { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint32_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::LifetimeRunningHours::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace LifetimeRunningHours | 
 | namespace Power { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint32_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::Power::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace Power | 
 | namespace LifetimeEnergyConsumed { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableType    = chip::app::DataModel::Nullable<uint32_t>; | 
 |     using DecodableArgType = const chip::app::DataModel::Nullable<uint32_t> &; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::LifetimeEnergyConsumed::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace LifetimeEnergyConsumed | 
 | namespace OperationMode { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |     using DecodableType    = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |     using DecodableArgType = chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::OperationMode::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace OperationMode | 
 | namespace ControlMode { | 
 | struct TypeInfo | 
 | { | 
 |     using Type             = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |     using DecodableType    = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |     using DecodableArgType = chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum; | 
 |  | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |     static constexpr AttributeId GetAttributeId() { return Attributes::ControlMode::Id; } | 
 |     static constexpr bool MustUseTimedWrite() { return false; } | 
 | }; | 
 | } // namespace ControlMode | 
 | namespace GeneratedCommandList { | 
 | struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo | 
 | { | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 | }; | 
 | } // namespace GeneratedCommandList | 
 | namespace AcceptedCommandList { | 
 | struct TypeInfo : public Clusters::Globals::Attributes::AcceptedCommandList::TypeInfo | 
 | { | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 | }; | 
 | } // namespace AcceptedCommandList | 
 | namespace AttributeList { | 
 | struct TypeInfo : public Clusters::Globals::Attributes::AttributeList::TypeInfo | 
 | { | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 | }; | 
 | } // namespace AttributeList | 
 | namespace FeatureMap { | 
 | struct TypeInfo : public Clusters::Globals::Attributes::FeatureMap::TypeInfo | 
 | { | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 | }; | 
 | } // namespace FeatureMap | 
 | namespace ClusterRevision { | 
 | struct TypeInfo : public Clusters::Globals::Attributes::ClusterRevision::TypeInfo | 
 | { | 
 |     static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 | }; | 
 | } // namespace ClusterRevision | 
 |  | 
 | struct TypeInfo | 
 | { | 
 |     struct DecodableType | 
 |     { | 
 |         static constexpr ClusterId GetClusterId() { return Clusters::PumpConfigurationAndControl::Id; } | 
 |  | 
 |         CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path); | 
 |  | 
 |         Attributes::MaxPressure::TypeInfo::DecodableType maxPressure; | 
 |         Attributes::MaxSpeed::TypeInfo::DecodableType maxSpeed; | 
 |         Attributes::MaxFlow::TypeInfo::DecodableType maxFlow; | 
 |         Attributes::MinConstPressure::TypeInfo::DecodableType minConstPressure; | 
 |         Attributes::MaxConstPressure::TypeInfo::DecodableType maxConstPressure; | 
 |         Attributes::MinCompPressure::TypeInfo::DecodableType minCompPressure; | 
 |         Attributes::MaxCompPressure::TypeInfo::DecodableType maxCompPressure; | 
 |         Attributes::MinConstSpeed::TypeInfo::DecodableType minConstSpeed; | 
 |         Attributes::MaxConstSpeed::TypeInfo::DecodableType maxConstSpeed; | 
 |         Attributes::MinConstFlow::TypeInfo::DecodableType minConstFlow; | 
 |         Attributes::MaxConstFlow::TypeInfo::DecodableType maxConstFlow; | 
 |         Attributes::MinConstTemp::TypeInfo::DecodableType minConstTemp; | 
 |         Attributes::MaxConstTemp::TypeInfo::DecodableType maxConstTemp; | 
 |         Attributes::PumpStatus::TypeInfo::DecodableType pumpStatus = | 
 |             static_cast<chip::BitMask<chip::app::Clusters::PumpConfigurationAndControl::PumpStatusBitmap>>(0); | 
 |         Attributes::EffectiveOperationMode::TypeInfo::DecodableType effectiveOperationMode = | 
 |             static_cast<chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum>(0); | 
 |         Attributes::EffectiveControlMode::TypeInfo::DecodableType effectiveControlMode = | 
 |             static_cast<chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum>(0); | 
 |         Attributes::Capacity::TypeInfo::DecodableType capacity; | 
 |         Attributes::Speed::TypeInfo::DecodableType speed; | 
 |         Attributes::LifetimeRunningHours::TypeInfo::DecodableType lifetimeRunningHours; | 
 |         Attributes::Power::TypeInfo::DecodableType power; | 
 |         Attributes::LifetimeEnergyConsumed::TypeInfo::DecodableType lifetimeEnergyConsumed; | 
 |         Attributes::OperationMode::TypeInfo::DecodableType operationMode = | 
 |             static_cast<chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum>(0); | 
 |         Attributes::ControlMode::TypeInfo::DecodableType controlMode = | 
 |             static_cast<chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum>(0); | 
 |         Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; | 
 |         Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; | 
 |         Attributes::AttributeList::TypeInfo::DecodableType attributeList; | 
 |         Attributes::FeatureMap::TypeInfo::DecodableType featureMap           = static_cast<uint32_t>(0); | 
 |         Attributes::ClusterRevision::TypeInfo::DecodableType clusterRevision = static_cast<uint16_t>(0); | 
 |     }; | 
 | }; | 
 | } // namespace Attributes | 
 | } // namespace PumpConfigurationAndControl | 
 | } // namespace Clusters | 
 | } // namespace app | 
 | } // namespace chip |