Skip to content

Commit c4632a6

Browse files
Some code updates on composition logic after project-chip#36493 (project-chip#36681)
* Remove some stutterning from endpoint composition (pattern repeated) * Remove some explitic bits, add comments about what endpoint composition patterns are * Restyle * Restyled by clang-format * Fix typo --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 2bc3251 commit c4632a6

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

src/app/clusters/descriptor/descriptor.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ CHIP_ERROR DescriptorAttrAccess::ReadPartsAttribute(EndpointId endpoint, Attribu
105105
return CHIP_NO_ERROR;
106106
});
107107
}
108-
else if (endpointInfo.has_value() &&
109-
endpointInfo->compositionPattern == DataModel::EndpointCompositionPattern::kFullFamilyPattern)
108+
else if (endpointInfo.has_value() && endpointInfo->compositionPattern == DataModel::EndpointCompositionPattern::kFullFamily)
110109
{
111110
err = aEncoder.EncodeList([endpoint](const auto & encoder) -> CHIP_ERROR {
112111
auto endpointEntry = InteractionModelEngine::GetInstance()->GetDataModelProvider()->FirstEndpoint();
@@ -134,7 +133,7 @@ CHIP_ERROR DescriptorAttrAccess::ReadPartsAttribute(EndpointId endpoint, Attribu
134133
return CHIP_NO_ERROR;
135134
});
136135
}
137-
else if (endpointInfo.has_value() && endpointInfo->compositionPattern == DataModel::EndpointCompositionPattern::kTreePattern)
136+
else if (endpointInfo.has_value() && endpointInfo->compositionPattern == DataModel::EndpointCompositionPattern::kTree)
138137
{
139138
err = aEncoder.EncodeList([endpoint](const auto & encoder) -> CHIP_ERROR {
140139
auto endpointEntry = InteractionModelEngine::GetInstance()->GetDataModelProvider()->FirstEndpoint();

src/app/codegen-data-model-provider/CodegenDataModelProvider.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,11 @@ std::optional<DataModel::EndpointInfo> GetEndpointInfoAtIndex(uint16_t endpointI
321321
EndpointId parent = emberAfParentEndpointFromIndex(endpointIndex);
322322
if (GetCompositionForEndpointIndex(endpointIndex) == EndpointComposition::kFullFamily)
323323
{
324-
return DataModel::EndpointInfo(parent, DataModel::EndpointCompositionPattern::kFullFamilyPattern);
324+
return DataModel::EndpointInfo(parent, DataModel::EndpointCompositionPattern::kFullFamily);
325325
}
326326
if (GetCompositionForEndpointIndex(endpointIndex) == EndpointComposition::kTree)
327327
{
328-
return DataModel::EndpointInfo(parent, DataModel::EndpointCompositionPattern::kTreePattern);
328+
return DataModel::EndpointInfo(parent, DataModel::EndpointCompositionPattern::kTree);
329329
}
330330
return std::nullopt;
331331
}

src/app/codegen-data-model-provider/tests/TestCodegenModelViaMocks.cpp

+14-14
Original file line numberDiff line numberDiff line change
@@ -898,55 +898,55 @@ TEST(TestCodegenModelViaMocks, IterateOverEndpoints)
898898
EndpointEntry ep = model.FirstEndpoint();
899899
EXPECT_EQ(ep.id, kMockEndpoint1);
900900
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
901-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
901+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
902902
ep = model.NextEndpoint(kMockEndpoint1);
903903
EXPECT_EQ(ep.id, kMockEndpoint2);
904904
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
905-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTreePattern);
905+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTree);
906906
ep = model.NextEndpoint(kMockEndpoint2);
907907
EXPECT_EQ(ep.id, kMockEndpoint3);
908908
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
909-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
909+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
910910
ep = model.NextEndpoint(kMockEndpoint3);
911911
EXPECT_EQ(ep.id, kInvalidEndpointId);
912912

913913
/// Some out of order requests should work as well
914914
ep = model.NextEndpoint(kMockEndpoint2);
915915
EXPECT_EQ(ep.id, kMockEndpoint3);
916916
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
917-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
917+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
918918
ep = model.NextEndpoint(kMockEndpoint2);
919919
EXPECT_EQ(ep.id, kMockEndpoint3);
920920
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
921-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
921+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
922922
ep = model.NextEndpoint(kMockEndpoint1);
923923
EXPECT_EQ(ep.id, kMockEndpoint2);
924924
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
925-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTreePattern);
925+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTree);
926926
ep = model.NextEndpoint(kMockEndpoint1);
927927
EXPECT_EQ(ep.id, kMockEndpoint2);
928928
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
929-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTreePattern);
929+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTree);
930930
ep = model.NextEndpoint(kMockEndpoint2);
931931
EXPECT_EQ(ep.id, kMockEndpoint3);
932932
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
933-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
933+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
934934
ep = model.NextEndpoint(kMockEndpoint1);
935935
EXPECT_EQ(ep.id, kMockEndpoint2);
936936
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
937-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTreePattern);
937+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kTree);
938938
ep = model.NextEndpoint(kMockEndpoint3);
939939
EXPECT_EQ(ep.id, kInvalidEndpointId);
940940
ep = model.NextEndpoint(kMockEndpoint3);
941941
EXPECT_EQ(ep.id, kInvalidEndpointId);
942942
ep = model.FirstEndpoint();
943943
EXPECT_EQ(ep.id, kMockEndpoint1);
944944
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
945-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
945+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
946946
ep = model.FirstEndpoint();
947947
EXPECT_EQ(ep.id, kMockEndpoint1);
948948
EXPECT_EQ(ep.info.parentId, kInvalidEndpointId);
949-
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamilyPattern);
949+
EXPECT_EQ(ep.info.compositionPattern, EndpointCompositionPattern::kFullFamily);
950950

951951
// invalid endpoiunts
952952
ep = model.NextEndpoint(kInvalidEndpointId);
@@ -964,17 +964,17 @@ TEST(TestCodegenModelViaMocks, GetEndpointInfo)
964964
ASSERT_TRUE(info.has_value());
965965
EXPECT_EQ(info->parentId, kInvalidEndpointId); // NOLINT(bugprone-unchecked-optional-access)
966966
EXPECT_EQ(info->compositionPattern, // NOLINT(bugprone-unchecked-optional-access)
967-
EndpointCompositionPattern::kFullFamilyPattern);
967+
EndpointCompositionPattern::kFullFamily);
968968
info = model.GetEndpointInfo(kMockEndpoint2);
969969
ASSERT_TRUE(info.has_value());
970970
EXPECT_EQ(info->parentId, kInvalidEndpointId); // NOLINT(bugprone-unchecked-optional-access)
971971
EXPECT_EQ(info->compositionPattern, // NOLINT(bugprone-unchecked-optional-access)
972-
EndpointCompositionPattern::kTreePattern);
972+
EndpointCompositionPattern::kTree);
973973
info = model.GetEndpointInfo(kMockEndpoint3);
974974
ASSERT_TRUE(info.has_value());
975975
EXPECT_EQ(info->parentId, kInvalidEndpointId); // NOLINT(bugprone-unchecked-optional-access)
976976
EXPECT_EQ(info->compositionPattern, // NOLINT(bugprone-unchecked-optional-access)
977-
EndpointCompositionPattern::kFullFamilyPattern);
977+
EndpointCompositionPattern::kFullFamily);
978978

979979
// invalid endpoiunts
980980
info = model.GetEndpointInfo(kInvalidEndpointId);

src/app/data-model-provider/MetadataTypes.h

+14-5
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,20 @@ namespace chip {
3333
namespace app {
3434
namespace DataModel {
3535

36+
/// Represents various endpoint composition patters as defined in the spec
37+
/// as `9.2.1. Endpoint Composition patterns`
3638
enum class EndpointCompositionPattern : uint8_t
3739
{
38-
kTreePattern = 0x1,
39-
kFullFamilyPattern = 0x2,
40+
// Tree pattern supports a general tree of endpoints. Commonly used for
41+
// device types that support physical device composition (e.g. Refrigerator)
42+
kTree = 0x1,
43+
44+
// A full-family pattern is a list fo all descendant endpoints, with no
45+
// imposed hierarchy.
46+
//
47+
// For example the Root Node and Aggregator device types use the full-familiy
48+
// pattern, as defined in their device type specification
49+
kFullFamily = 0x2,
4050
};
4151

4252
struct EndpointInfo
@@ -46,9 +56,8 @@ struct EndpointInfo
4656
EndpointId parentId;
4757
EndpointCompositionPattern compositionPattern;
4858

49-
explicit EndpointInfo(EndpointId parent) : parentId(parent), compositionPattern(EndpointCompositionPattern::kFullFamilyPattern)
50-
{}
51-
explicit EndpointInfo(EndpointId parent, EndpointCompositionPattern pattern) : parentId(parent), compositionPattern(pattern) {}
59+
explicit EndpointInfo(EndpointId parent) : parentId(parent), compositionPattern(EndpointCompositionPattern::kFullFamily) {}
60+
EndpointInfo(EndpointId parent, EndpointCompositionPattern pattern) : parentId(parent), compositionPattern(pattern) {}
5261
};
5362

5463
struct EndpointEntry

0 commit comments

Comments
 (0)