forked from project-chip/connectedhomeip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDefaultServerCluster.cpp
110 lines (96 loc) · 3.42 KB
/
DefaultServerCluster.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* Copyright (c) 2025 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.
*/
#include <app/server-cluster/DefaultServerCluster.h>
#include <access/Privilege.h>
#include <app-common/zap-generated/ids/Attributes.h>
#include <app/data-model-provider/MetadataTypes.h>
#include <crypto/RandUtils.h>
#include <lib/support/BitFlags.h>
#include <optional>
#include <protocols/interaction_model/StatusCode.h>
namespace chip {
namespace app {
namespace {
using namespace chip::app::Clusters;
using namespace chip::app::DataModel;
constexpr std::array<AttributeEntry, 5> kGlobalAttributeEntries{ {
{
Globals::Attributes::ClusterRevision::Id,
BitFlags<AttributeQualityFlags>(),
Access::Privilege::kView,
std::nullopt,
},
{
Globals::Attributes::FeatureMap::Id,
BitFlags<AttributeQualityFlags>(),
Access::Privilege::kView,
std::nullopt,
},
{
Globals::Attributes::AttributeList::Id,
BitFlags<AttributeQualityFlags>(AttributeQualityFlags::kListAttribute),
Access::Privilege::kView,
std::nullopt,
},
{
Globals::Attributes::AcceptedCommandList::Id,
BitFlags<AttributeQualityFlags>(AttributeQualityFlags::kListAttribute),
Access::Privilege::kView,
std::nullopt,
},
{
Globals::Attributes::GeneratedCommandList::Id,
BitFlags<AttributeQualityFlags>(AttributeQualityFlags::kListAttribute),
Access::Privilege::kView,
std::nullopt,
},
} };
} // namespace
DefaultServerCluster::DefaultServerCluster()
{
// SPEC - 7.10.3. Cluster Data Version
// A cluster data version SHALL be initialized randomly when it is first published.
mDataVersion = Crypto::GetRandU32();
}
CHIP_ERROR DefaultServerCluster::Attributes(const ConcreteClusterPath & path, DataModel::ListBuilder<AttributeEntry> & builder)
{
return builder.ReferenceExisting(kGlobalAttributeEntries);
}
BitFlags<ClusterQualityFlags> DefaultServerCluster::GetClusterFlags() const
{
return {};
}
ActionReturnStatus DefaultServerCluster::WriteAttribute(const WriteAttributeRequest & request, AttributeValueDecoder & decoder)
{
return Protocols::InteractionModel::Status::UnsupportedWrite;
}
std::optional<ActionReturnStatus>
DefaultServerCluster::InvokeCommand(const InvokeRequest & request, chip::TLV::TLVReader & input_arguments, CommandHandler * handler)
{
return Protocols::InteractionModel::Status::UnsupportedCommand;
}
CHIP_ERROR DefaultServerCluster::AcceptedCommands(const ConcreteClusterPath & path,
DataModel::ListBuilder<AcceptedCommandEntry> & builder)
{
return CHIP_NO_ERROR;
}
CHIP_ERROR DefaultServerCluster::GeneratedCommands(const ConcreteClusterPath & path, DataModel::ListBuilder<CommandId> & builder)
{
return CHIP_NO_ERROR;
}
} // namespace app
} // namespace chip