Skip to content

Commit 4f14a77

Browse files
Addressed comments on using ID, added RAII for MockConfig
1 parent c18cd6c commit 4f14a77

File tree

5 files changed

+48
-23
lines changed

5 files changed

+48
-23
lines changed

src/app/clusters/scenes-server/SceneHandlerImpl.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,15 @@ void CapAttributeID(AttributeValuePairType & aVPair, const EmberAfAttributeMetad
5555
// https://github.com/project-chip/connectedhomeip/issues/24177
5656
CHIP_ERROR ValidateAttributePath(EndpointId endpoint, ClusterId cluster, AttributeValuePairType & aVPair)
5757
{
58-
bool attIndex = emberAfContainsAttribute(endpoint, cluster, aVPair.attributeID);
59-
if (!attIndex)
58+
const EmberAfAttributeMetadata * metadata = emberAfLocateAttributeMetadata(endpoint, cluster, aVPair.attributeID);
59+
60+
if (nullptr == metadata)
6061
{
6162
return CHIP_ERROR_UNSUPPORTED_ATTRIBUTE;
6263
}
6364

64-
EmberAfAttributeMetadata metadata = *emberAfLocateAttributeMetadata(endpoint, cluster, aVPair.attributeID);
65-
6665
// Cap value based on the attribute type size
67-
CapAttributeID(aVPair, &metadata);
66+
CapAttributeID(aVPair, metadata);
6867

6968
return CHIP_NO_ERROR;
7069
}

src/app/tests/TestSceneTable.cpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,17 @@ constexpr chip::EndpointId kTestEndpoint2 = chip::Test::kMockEndpoint2;
5656
constexpr chip::EndpointId kTestEndpoint3 = chip::Test::kMockEndpoint3;
5757

5858
// Test Attribute ID
59-
constexpr uint32_t kOnOffAttId = 0x0000;
60-
constexpr uint32_t kCurrentLevelId = 0x0000;
61-
constexpr uint32_t kCurrentFrequencyId = 0x0004;
62-
constexpr uint32_t kCurrentSaturationId = 0x0001;
63-
constexpr uint32_t kCurrentXId = 0x0003;
64-
constexpr uint32_t kCurrentYId = 0x0004;
65-
constexpr uint32_t kColorTemperatureMiredsId = 0x0007;
66-
constexpr uint32_t kEnhancedCurrentHueId = 0x4000;
67-
constexpr uint32_t kColorLoopActiveId = 0x4002;
68-
constexpr uint32_t kColorLoopDirectionId = 0x4003;
69-
constexpr uint32_t kColorLoopTimeId = 0x4004;
59+
constexpr uint32_t kOnOffAttId = app::Clusters::OnOff::Attributes::OnOff::Id;
60+
constexpr uint32_t kCurrentLevelId = app::Clusters::LevelControl::Attributes::CurrentLevel::Id;
61+
constexpr uint32_t kCurrentFrequencyId = app::Clusters::LevelControl::Attributes::CurrentFrequency::Id;
62+
constexpr uint32_t kCurrentSaturationId = app::Clusters::ColorControl::Attributes::CurrentSaturation::Id;
63+
constexpr uint32_t kCurrentXId = app::Clusters::ColorControl::Attributes::CurrentX::Id;
64+
constexpr uint32_t kCurrentYId = app::Clusters::ColorControl::Attributes::CurrentY::Id;
65+
constexpr uint32_t kColorTemperatureMiredsId = app::Clusters::ColorControl::Attributes::ColorTemperatureMireds::Id;
66+
constexpr uint32_t kEnhancedCurrentHueId = app::Clusters::ColorControl::Attributes::EnhancedCurrentHue::Id;
67+
constexpr uint32_t kColorLoopActiveId = app::Clusters::ColorControl::Attributes::ColorLoopActive::Id;
68+
constexpr uint32_t kColorLoopDirectionId = app::Clusters::ColorControl::Attributes::ColorLoopDirection::Id;
69+
constexpr uint32_t kColorLoopTimeId = app::Clusters::ColorControl::Attributes::ColorLoopTime::Id;
7070

7171
// Test Group ID
7272
constexpr chip::GroupId kGroup1 = 0x101;

src/app/util/mock/Functions.h

-3
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,5 @@ void ResetVersion();
4747
/// be returned by emberAfDataVersionStorage
4848
DataVersion GetVersion();
4949

50-
/// Resets the mock attribute storage to the default configuration.
51-
void ResetMockNodeConfig();
52-
5350
} // namespace Test
5451
} // namespace chip

src/app/util/mock/MockNodeConfigImpl.cpp

+17-4
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
using namespace chip::Test;
2323
using namespace chip::app::Clusters::Globals::Attributes;
2424

25-
static const MockNodeConfig * mockConfig = nullptr;
26-
2725
const MockNodeConfig & DefaultMockNodeConfig()
2826
{
2927
// clang-format off
@@ -68,12 +66,27 @@ const MockNodeConfig & DefaultMockNodeConfig()
6866
return config;
6967
}
7068

69+
// Getter function to access the config
70+
const MockNodeConfig & MockNodeConfigRAII::GetConfig() const
71+
{
72+
return (configHandle != nullptr) ? *configHandle : DefaultMockNodeConfig();
73+
}
74+
75+
// Setter function to set the config
76+
void MockNodeConfigRAII::SetConfig(const MockNodeConfig * newConfig)
77+
{
78+
configHandle = newConfig;
79+
}
80+
81+
// Instance of RAII wrapper
82+
static MockNodeConfigRAII mockNodeConfigRAII;
83+
7184
const MockNodeConfig & GetMockNodeConfig()
7285
{
73-
return (mockConfig != nullptr) ? *mockConfig : DefaultMockNodeConfig();
86+
return mockNodeConfigRAII.GetConfig();
7487
}
7588

7689
void SetMockNodeConfig(const MockNodeConfig * config)
7790
{
78-
mockConfig = config;
91+
mockNodeConfigRAII.SetConfig(config);
7992
}

src/app/util/mock/MockNodeConfigImpl.h

+16
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@
2020

2121
#include <app/util/mock/MockNodeConfig.h>
2222

23+
// RAII wrapper class for MockNodeConfig
24+
class MockNodeConfigRAII
25+
{
26+
using MockNodeConfig = chip::Test::MockNodeConfig;
27+
28+
public:
29+
explicit MockNodeConfigRAII(const MockNodeConfig * config = nullptr) : configHandle(config) {}
30+
~MockNodeConfigRAII() { configHandle = nullptr; };
31+
32+
const MockNodeConfig & GetConfig() const;
33+
void SetConfig(const MockNodeConfig * newConfig);
34+
35+
private:
36+
const chip::Test::MockNodeConfig * configHandle;
37+
};
38+
2339
const chip::Test::MockNodeConfig & GetMockNodeConfig();
2440

2541
void SetMockNodeConfig(const chip::Test::MockNodeConfig * config);

0 commit comments

Comments
 (0)