blob: f4fe6563b7cbca82fe9fdf6ee0bdc632285aafa0 [file] [log] [blame]
/*
*
* 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-shared-Structs.h.zapt
#pragma once
#include <app/data-model/DecodableList.h>
#include <app/data-model/List.h>
#include <app/data-model/Nullable.h>
#include <lib/core/CHIPError.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 <cstdint>
namespace chip {
namespace app {
namespace Clusters {
// Structs shared across multiple clusters.
namespace detail {
namespace Structs {
namespace ModeTagStruct {
enum class Fields : uint8_t
{
kMfgCode = 0,
kValue = 1,
};
struct Type
{
public:
Optional<chip::VendorId> mfgCode;
uint16_t value = static_cast<uint16_t>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace ModeTagStruct
namespace ModeOptionStruct {
enum class Fields : uint8_t
{
kLabel = 0,
kMode = 1,
kModeTags = 2,
};
struct Type
{
public:
chip::CharSpan label;
uint8_t mode = static_cast<uint8_t>(0);
DataModel::List<const Structs::ModeTagStruct::Type> modeTags;
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
struct DecodableType
{
public:
chip::CharSpan label;
uint8_t mode = static_cast<uint8_t>(0);
DataModel::DecodableList<Structs::ModeTagStruct::DecodableType> modeTags;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
};
} // namespace ModeOptionStruct
namespace MeasurementAccuracyRangeStruct {
enum class Fields : uint8_t
{
kRangeMin = 0,
kRangeMax = 1,
kPercentMax = 2,
kPercentMin = 3,
kPercentTypical = 4,
kFixedMax = 5,
kFixedMin = 6,
kFixedTypical = 7,
};
struct Type
{
public:
int64_t rangeMin = static_cast<int64_t>(0);
int64_t rangeMax = static_cast<int64_t>(0);
Optional<chip::Percent100ths> percentMax;
Optional<chip::Percent100ths> percentMin;
Optional<chip::Percent100ths> percentTypical;
Optional<uint64_t> fixedMax;
Optional<uint64_t> fixedMin;
Optional<uint64_t> fixedTypical;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace MeasurementAccuracyRangeStruct
namespace MeasurementAccuracyStruct {
enum class Fields : uint8_t
{
kMeasurementType = 0,
kMeasured = 1,
kMinMeasuredValue = 2,
kMaxMeasuredValue = 3,
kAccuracyRanges = 4,
};
struct Type
{
public:
MeasurementTypeEnum measurementType = static_cast<MeasurementTypeEnum>(0);
bool measured = static_cast<bool>(0);
int64_t minMeasuredValue = static_cast<int64_t>(0);
int64_t maxMeasuredValue = static_cast<int64_t>(0);
DataModel::List<const Structs::MeasurementAccuracyRangeStruct::Type> accuracyRanges;
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
struct DecodableType
{
public:
MeasurementTypeEnum measurementType = static_cast<MeasurementTypeEnum>(0);
bool measured = static_cast<bool>(0);
int64_t minMeasuredValue = static_cast<int64_t>(0);
int64_t maxMeasuredValue = static_cast<int64_t>(0);
DataModel::DecodableList<Structs::MeasurementAccuracyRangeStruct::DecodableType> accuracyRanges;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
};
} // namespace MeasurementAccuracyStruct
namespace ViewportStruct {
enum class Fields : uint8_t
{
kX1 = 0,
kY1 = 1,
kX2 = 2,
kY2 = 3,
};
struct Type
{
public:
uint16_t x1 = static_cast<uint16_t>(0);
uint16_t y1 = static_cast<uint16_t>(0);
uint16_t x2 = static_cast<uint16_t>(0);
uint16_t y2 = static_cast<uint16_t>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace ViewportStruct
namespace ApplicationStruct {
enum class Fields : uint8_t
{
kCatalogVendorID = 0,
kApplicationID = 1,
};
struct Type
{
public:
uint16_t catalogVendorID = static_cast<uint16_t>(0);
chip::CharSpan applicationID;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace ApplicationStruct
namespace ErrorStateStruct {
enum class Fields : uint8_t
{
kErrorStateID = 0,
kErrorStateLabel = 1,
kErrorStateDetails = 2,
};
struct Type
{
public:
uint8_t errorStateID = static_cast<uint8_t>(0);
Optional<chip::CharSpan> errorStateLabel;
Optional<chip::CharSpan> errorStateDetails;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace ErrorStateStruct
namespace ICEServerStruct {
enum class Fields : uint8_t
{
kUrls = 1,
kUsername = 2,
kCredential = 3,
kCaid = 4,
};
struct Type
{
public:
DataModel::List<const chip::CharSpan> urls;
Optional<chip::CharSpan> username;
Optional<chip::CharSpan> credential;
Optional<uint16_t> caid;
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
struct DecodableType
{
public:
DataModel::DecodableList<chip::CharSpan> urls;
Optional<chip::CharSpan> username;
Optional<chip::CharSpan> credential;
Optional<uint16_t> caid;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
};
} // namespace ICEServerStruct
namespace LabelStruct {
enum class Fields : uint8_t
{
kLabel = 0,
kValue = 1,
};
struct Type
{
public:
chip::CharSpan label;
chip::CharSpan value;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace LabelStruct
namespace OperationalStateStruct {
enum class Fields : uint8_t
{
kOperationalStateID = 0,
kOperationalStateLabel = 1,
};
struct Type
{
public:
uint8_t operationalStateID = static_cast<uint8_t>(0);
Optional<chip::CharSpan> operationalStateLabel;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace OperationalStateStruct
namespace WebRTCSessionStruct {
enum class Fields : uint8_t
{
kId = 1,
kPeerNodeID = 2,
kPeerEndpointID = 3,
kStreamUsage = 4,
kVideoStreamID = 5,
kAudioStreamID = 6,
kMetadataOptions = 7,
kFabricIndex = 254,
};
struct Type
{
public:
uint16_t id = static_cast<uint16_t>(0);
chip::NodeId peerNodeID = static_cast<chip::NodeId>(0);
chip::EndpointId peerEndpointID = static_cast<chip::EndpointId>(0);
StreamUsageEnum streamUsage = static_cast<StreamUsageEnum>(0);
DataModel::Nullable<uint16_t> videoStreamID;
DataModel::Nullable<uint16_t> audioStreamID;
chip::BitMask<WebRTCMetadataOptionsBitmap> metadataOptions = static_cast<chip::BitMask<WebRTCMetadataOptionsBitmap>>(0);
chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = true;
auto GetFabricIndex() const { return fabricIndex; }
void SetFabricIndex(chip::FabricIndex fabricIndex_) { fabricIndex = fabricIndex_; }
CHIP_ERROR EncodeForWrite(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
CHIP_ERROR EncodeForRead(TLV::TLVWriter & aWriter, TLV::Tag aTag, FabricIndex aAccessingFabricIndex) const;
private:
CHIP_ERROR DoEncode(TLV::TLVWriter & aWriter, TLV::Tag aTag, const Optional<FabricIndex> & aAccessingFabricIndex) const;
};
using DecodableType = Type;
} // namespace WebRTCSessionStruct
} // namespace Structs
} // namespace detail
// Global structs.
namespace Globals {
namespace Structs {
namespace CurrencyStruct {
enum class Fields : uint8_t
{
kCurrency = 0,
kDecimalPoints = 1,
};
struct Type
{
public:
uint16_t currency = static_cast<uint16_t>(0);
uint8_t decimalPoints = static_cast<uint8_t>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace CurrencyStruct
namespace PriceStruct {
enum class Fields : uint8_t
{
kAmount = 0,
kCurrency = 1,
};
struct Type
{
public:
int64_t amount = static_cast<int64_t>(0);
Globals::Structs::CurrencyStruct::Type currency;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace PriceStruct
namespace MeasurementAccuracyRangeStruct {
enum class Fields : uint8_t
{
kRangeMin = 0,
kRangeMax = 1,
kPercentMax = 2,
kPercentMin = 3,
kPercentTypical = 4,
kFixedMax = 5,
kFixedMin = 6,
kFixedTypical = 7,
};
struct Type
{
public:
int64_t rangeMin = static_cast<int64_t>(0);
int64_t rangeMax = static_cast<int64_t>(0);
Optional<chip::Percent100ths> percentMax;
Optional<chip::Percent100ths> percentMin;
Optional<chip::Percent100ths> percentTypical;
Optional<uint64_t> fixedMax;
Optional<uint64_t> fixedMin;
Optional<uint64_t> fixedTypical;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace MeasurementAccuracyRangeStruct
namespace MeasurementAccuracyStruct {
enum class Fields : uint8_t
{
kMeasurementType = 0,
kMeasured = 1,
kMinMeasuredValue = 2,
kMaxMeasuredValue = 3,
kAccuracyRanges = 4,
};
struct Type
{
public:
Globals::MeasurementTypeEnum measurementType = static_cast<Globals::MeasurementTypeEnum>(0);
bool measured = static_cast<bool>(0);
int64_t minMeasuredValue = static_cast<int64_t>(0);
int64_t maxMeasuredValue = static_cast<int64_t>(0);
DataModel::List<const Globals::Structs::MeasurementAccuracyRangeStruct::Type> accuracyRanges;
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
struct DecodableType
{
public:
Globals::MeasurementTypeEnum measurementType = static_cast<Globals::MeasurementTypeEnum>(0);
bool measured = static_cast<bool>(0);
int64_t minMeasuredValue = static_cast<int64_t>(0);
int64_t maxMeasuredValue = static_cast<int64_t>(0);
DataModel::DecodableList<Globals::Structs::MeasurementAccuracyRangeStruct::DecodableType> accuracyRanges;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
};
} // namespace MeasurementAccuracyStruct
namespace AtomicAttributeStatusStruct {
enum class Fields : uint8_t
{
kAttributeID = 0,
kStatusCode = 1,
};
struct Type
{
public:
chip::AttributeId attributeID = static_cast<chip::AttributeId>(0);
uint8_t statusCode = static_cast<uint8_t>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace AtomicAttributeStatusStruct
namespace LocationDescriptorStruct {
enum class Fields : uint8_t
{
kLocationName = 0,
kFloorNumber = 1,
kAreaType = 2,
};
struct Type
{
public:
chip::CharSpan locationName;
DataModel::Nullable<int16_t> floorNumber;
DataModel::Nullable<Globals::AreaTypeTag> areaType;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace LocationDescriptorStruct
namespace PowerThresholdStruct {
enum class Fields : uint8_t
{
kPowerThreshold = 0,
kApparentPowerThreshold = 1,
kPowerThresholdSource = 2,
};
struct Type
{
public:
Optional<int64_t> powerThreshold;
Optional<int64_t> apparentPowerThreshold;
DataModel::Nullable<Globals::PowerThresholdSourceEnum> powerThresholdSource;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace PowerThresholdStruct
namespace TestGlobalStruct {
enum class Fields : uint8_t
{
kName = 0,
kMyBitmap = 1,
kMyEnum = 2,
};
struct Type
{
public:
chip::CharSpan name;
DataModel::Nullable<chip::BitMask<Globals::TestGlobalBitmap>> myBitmap;
Optional<DataModel::Nullable<Globals::TestGlobalEnum>> myEnum;
CHIP_ERROR Decode(TLV::TLVReader & reader);
static constexpr bool kIsFabricScoped = false;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
};
using DecodableType = Type;
} // namespace TestGlobalStruct
} // namespace Structs
} // namespace Globals
} // namespace Clusters
} // namespace app
} // namespace chip