|  | /* | 
|  | * | 
|  | *    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-Commands.h.zapt | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #include <app/data-model/DecodableList.h> | 
|  | #include <app/data-model/Encode.h> | 
|  | #include <app/data-model/List.h> | 
|  | #include <app/data-model/NullObject.h> | 
|  | #include <app/data-model/Nullable.h> | 
|  | #include <lib/core/DataModelTypes.h> | 
|  | #include <lib/core/Optional.h> | 
|  | #include <lib/core/TLV.h> | 
|  | #include <lib/support/BitMask.h> | 
|  |  | 
|  | #include <clusters/shared/Enums.h> | 
|  | #include <clusters/shared/Structs.h> | 
|  |  | 
|  | #include <clusters/TimeSynchronization/ClusterId.h> | 
|  | #include <clusters/TimeSynchronization/CommandIds.h> | 
|  | #include <clusters/TimeSynchronization/Enums.h> | 
|  | #include <clusters/TimeSynchronization/Structs.h> | 
|  |  | 
|  | #include <cstdint> | 
|  |  | 
|  | namespace chip { | 
|  | namespace app { | 
|  | namespace Clusters { | 
|  | namespace TimeSynchronization { | 
|  | namespace Commands { | 
|  | // Forward-declarations so we can reference these later. | 
|  |  | 
|  | namespace SetUTCTime { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetUTCTime | 
|  |  | 
|  | namespace SetTrustedTimeSource { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetTrustedTimeSource | 
|  |  | 
|  | namespace SetTimeZone { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetTimeZone | 
|  |  | 
|  | namespace SetTimeZoneResponse { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetTimeZoneResponse | 
|  |  | 
|  | namespace SetDSTOffset { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetDSTOffset | 
|  |  | 
|  | namespace SetDefaultNTP { | 
|  | struct Type; | 
|  | struct DecodableType; | 
|  | } // namespace SetDefaultNTP | 
|  |  | 
|  | } // namespace Commands | 
|  |  | 
|  | namespace Commands { | 
|  | namespace SetUTCTime { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kUTCTime     = 0, | 
|  | kGranularity = 1, | 
|  | kTimeSource  = 2, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetUTCTime::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | uint64_t UTCTime            = static_cast<uint64_t>(0); | 
|  | GranularityEnum granularity = static_cast<GranularityEnum>(0); | 
|  | Optional<TimeSourceEnum> timeSource; | 
|  |  | 
|  | CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = DataModel::NullObjectType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetUTCTime::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  | static constexpr bool kIsFabricScoped = false; | 
|  |  | 
|  | uint64_t UTCTime            = static_cast<uint64_t>(0); | 
|  | GranularityEnum granularity = static_cast<GranularityEnum>(0); | 
|  | Optional<TimeSourceEnum> timeSource; | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader); | 
|  | }; | 
|  | }; // namespace SetUTCTime | 
|  | namespace SetTrustedTimeSource { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kTrustedTimeSource = 0, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTrustedTimeSource::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | DataModel::Nullable<Structs::FabricScopedTrustedTimeSourceStruct::Type> trustedTimeSource; | 
|  |  | 
|  | CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = DataModel::NullObjectType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTrustedTimeSource::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  | static constexpr bool kIsFabricScoped = true; | 
|  |  | 
|  | DataModel::Nullable<Structs::FabricScopedTrustedTimeSourceStruct::DecodableType> trustedTimeSource; | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader, FabricIndex aAccessingFabricIndex); | 
|  | }; | 
|  | }; // namespace SetTrustedTimeSource | 
|  | namespace SetTimeZone { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kTimeZone = 0, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTimeZone::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | DataModel::List<const Structs::TimeZoneStruct::Type> timeZone; | 
|  |  | 
|  | CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = Clusters::TimeSynchronization::Commands::SetTimeZoneResponse::DecodableType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTimeZone::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  | static constexpr bool kIsFabricScoped = false; | 
|  |  | 
|  | DataModel::DecodableList<Structs::TimeZoneStruct::DecodableType> timeZone; | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader); | 
|  | }; | 
|  | }; // namespace SetTimeZone | 
|  | namespace SetTimeZoneResponse { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kDSTOffsetRequired = 0, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTimeZoneResponse::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | bool DSTOffsetRequired = static_cast<bool>(0); | 
|  |  | 
|  | CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = DataModel::NullObjectType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetTimeZoneResponse::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | bool DSTOffsetRequired = static_cast<bool>(0); | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader); | 
|  | }; | 
|  | }; // namespace SetTimeZoneResponse | 
|  | namespace SetDSTOffset { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kDSTOffset = 0, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetDSTOffset::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | DataModel::List<const Structs::DSTOffsetStruct::Type> DSTOffset; | 
|  |  | 
|  | CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = DataModel::NullObjectType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetDSTOffset::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  | static constexpr bool kIsFabricScoped = false; | 
|  |  | 
|  | DataModel::DecodableList<Structs::DSTOffsetStruct::DecodableType> DSTOffset; | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader); | 
|  | }; | 
|  | }; // namespace SetDSTOffset | 
|  | namespace SetDefaultNTP { | 
|  | enum class Fields : uint8_t | 
|  | { | 
|  | kDefaultNTP = 0, | 
|  | }; | 
|  |  | 
|  | struct Type | 
|  | { | 
|  | public: | 
|  | // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetDefaultNTP::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  |  | 
|  | DataModel::Nullable<chip::CharSpan> defaultNTP; | 
|  |  | 
|  | CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; | 
|  |  | 
|  | using ResponseType = DataModel::NullObjectType; | 
|  |  | 
|  | static constexpr bool MustUseTimedInvoke() { return false; } | 
|  | }; | 
|  |  | 
|  | struct DecodableType | 
|  | { | 
|  | public: | 
|  | static constexpr CommandId GetCommandId() { return Commands::SetDefaultNTP::Id; } | 
|  | static constexpr ClusterId GetClusterId() { return Clusters::TimeSynchronization::Id; } | 
|  | static constexpr bool kIsFabricScoped = false; | 
|  |  | 
|  | DataModel::Nullable<chip::CharSpan> defaultNTP; | 
|  |  | 
|  | CHIP_ERROR Decode(TLV::TLVReader & reader); | 
|  | }; | 
|  | }; // namespace SetDefaultNTP | 
|  | } // namespace Commands | 
|  | } // namespace TimeSynchronization | 
|  | } // namespace Clusters | 
|  | } // namespace app | 
|  | } // namespace chip |