Skip to content

Commit 3580e65

Browse files
Add setter API for SupportedModesManager
1 parent fb1d2d8 commit 3580e65

File tree

5 files changed

+19
-15
lines changed

5 files changed

+19
-15
lines changed

examples/all-clusters-app/all-clusters-common/include/static-supported-modes-manager.h

+1-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace ModeSelect {
3131
* This implementation statically defines the options.
3232
*/
3333

34-
class StaticSupportedModesManager : public chip::app::Clusters::ModeSelect::SupportedModesManager
34+
class StaticSupportedModesManager : public SupportedModesManager
3535
{
3636
using ModeOptionStructType = Structs::ModeOptionStruct::Type;
3737
using storage_value_type = const ModeOptionStructType;
@@ -52,8 +52,6 @@ class StaticSupportedModesManager : public chip::app::Clusters::ModeSelect::Supp
5252
static const EndpointSpanPair supportedOptionsByEndpoints[MATTER_DM_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT];
5353

5454
public:
55-
static const StaticSupportedModesManager instance;
56-
5755
SupportedModesManager::ModeOptionsProvider getModeOptionsProvider(EndpointId endpointId) const override;
5856

5957
Protocols::InteractionModel::Status getModeOptionByMode(EndpointId endpointId, uint8_t mode,
@@ -62,12 +60,8 @@ class StaticSupportedModesManager : public chip::app::Clusters::ModeSelect::Supp
6260
~StaticSupportedModesManager(){};
6361

6462
StaticSupportedModesManager() {}
65-
66-
static inline const StaticSupportedModesManager & getStaticSupportedModesManagerInstance() { return instance; }
6763
};
6864

69-
const SupportedModesManager * getSupportedModesManager();
70-
7165
} // namespace ModeSelect
7266
} // namespace Clusters
7367
} // namespace app

examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp

-7
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ const StaticSupportedModesManager::EndpointSpanPair
3939
EndpointSpanPair(1, Span<storage_value_type>(StaticSupportedModesManager::coffeeOptions)) // Options for Endpoint 1
4040
};
4141

42-
const StaticSupportedModesManager StaticSupportedModesManager::instance = StaticSupportedModesManager();
43-
4442
SupportedModesManager::ModeOptionsProvider StaticSupportedModesManager::getModeOptionsProvider(EndpointId endpointId) const
4543
{
4644
for (auto & endpointSpanPair : supportedOptionsByEndpoints)
@@ -76,8 +74,3 @@ Status StaticSupportedModesManager::getModeOptionByMode(unsigned short endpointI
7674
ChipLogProgress(Zcl, "Cannot find the mode %u", mode);
7775
return Status::InvalidCommand;
7876
}
79-
80-
const ModeSelect::SupportedModesManager * ModeSelect::getSupportedModesManager()
81-
{
82-
return &StaticSupportedModesManager::instance;
83-
}

examples/all-clusters-app/linux/main-common.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
#include <platform/DeviceInstanceInfoProvider.h>
5959
#include <platform/DiagnosticDataProvider.h>
6060
#include <platform/PlatformManager.h>
61+
#include <static-supported-modes-manager.h>
6162
#include <static-supported-temperature-levels.h>
6263
#include <system/SystemPacketBuffer.h>
6364
#include <transport/SessionManager.h>
@@ -80,6 +81,7 @@ AllClustersCommandDelegate sAllClustersCommandDelegate;
8081
Clusters::WindowCovering::WindowCoveringManager sWindowCoveringManager;
8182

8283
Clusters::TemperatureControl::AppSupportedTemperatureLevelsDelegate sAppSupportedTemperatureLevelsDelegate;
84+
Clusters::ModeSelect::StaticSupportedModesManager sStaticSupportedModesManager;
8385
Clusters::ValveConfigurationAndControl::ValveControlDelegate sValveDelegate;
8486
Clusters::TimeSynchronization::ExtendedTimeSyncDelegate sTimeSyncDelegate;
8587

@@ -246,6 +248,8 @@ void ApplicationInit()
246248
MatterDishwasherAlarmServerInit();
247249
#endif
248250
Clusters::TemperatureControl::SetInstance(&sAppSupportedTemperatureLevelsDelegate);
251+
Clusters::ModeSelect::setSupportedModesManager(&sStaticSupportedModesManager);
252+
;
249253

250254
Clusters::ValveConfigurationAndControl::SetDefaultDelegate(chip::EndpointId(1), &sValveDelegate);
251255
Clusters::TimeSynchronization::SetDefaultDelegate(&sTimeSyncDelegate);

src/app/clusters/mode-select-server/mode-select-server.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@ using BootReasonType = GeneralDiagnostics::BootReasonEnum;
4949

5050
static InteractionModel::Status verifyModeValue(const EndpointId endpointId, const uint8_t newMode);
5151

52+
ModeSelect::SupportedModesManager *sSupportedModesManager = nullptr;
53+
54+
const SupportedModesManager * ModeSelect::getSupportedModesManager()
55+
{
56+
return sSupportedModesManager;
57+
}
58+
59+
void ModeSelect::setSupportedModesManager(ModeSelect::SupportedModesManager * aSupportedModesManager)
60+
{
61+
sSupportedModesManager = aSupportedModesManager;
62+
}
5263
namespace {
5364

5465
inline bool areStartUpModeAndCurrentModeNonVolatile(EndpointId endpoint);

src/app/clusters/mode-select-server/supported-modes-manager.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ class SupportedModesManager
3434
{
3535

3636
using ModeOptionStructType = Structs::ModeOptionStruct::Type;
37-
3837
public:
3938
/**
4039
* A class that can return the supported ModeOptions for a specific endpoint.
@@ -80,10 +79,13 @@ class SupportedModesManager
8079
const ModeOptionStructType ** dataPtr) const = 0;
8180

8281
virtual ~SupportedModesManager() {}
82+
8383
};
8484

8585
const SupportedModesManager * getSupportedModesManager();
8686

87+
void setSupportedModesManager(SupportedModesManager * aSupportedModesManager);
88+
8789
} // namespace ModeSelect
8890
} // namespace Clusters
8991
} // namespace app

0 commit comments

Comments
 (0)