21
21
#include " AppConfig.h"
22
22
#include " AppEvent.h"
23
23
#include " LEDWidget.h"
24
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
24
25
#include < EnergyEvseMain.h>
26
+ #endif
27
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
28
+ #include < WaterHeaterMain.h>
29
+ #endif
25
30
#include < app-common/zap-generated/cluster-enums.h>
26
31
#include < app-common/zap-generated/cluster-objects.h>
27
32
#include < app-common/zap-generated/ids/Attributes.h>
43
48
44
49
#include < platform/CHIPDeviceLayer.h>
45
50
51
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_EVSE_TRIGGER
52
+ #include < app/clusters/energy-evse-server/EnergyEvseTestEventTriggerHandler.h>
53
+ #endif
54
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_REPORTING_TRIGGER
55
+ #include < app/clusters/electrical-energy-measurement-server/EnergyReportingTestEventTriggerHandler.h>
56
+ #endif
57
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER
58
+ #include < app/clusters/water-heater-management-server/WaterHeaterManagementTestEventTriggerHandler.h>
59
+ #endif
60
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_DEVICE_ENERGY_MANAGEMENT_TRIGGER
61
+ #include < app/clusters/device-energy-management-server/DeviceEnergyManagementTestEventTriggerHandler.h>
62
+ #endif
63
+
46
64
#if (defined(SL_CATALOG_SIMPLE_LED_LED1_PRESENT) || defined(SIWX_917))
47
65
#define EVSE_LED 1
48
66
#else
53
71
#define APP_EVSE_SWITCH 1
54
72
55
73
namespace {
56
- LEDWidget sEvseLED ;
74
+ LEDWidget sEnergyManagementLED ;
57
75
}
58
76
59
77
using namespace chip ;
60
78
using namespace chip ::app;
61
79
using namespace chip ::app::Clusters;
62
80
using namespace chip ::app::Clusters::DeviceEnergyManagement;
63
81
using namespace chip ::app::Clusters::DeviceEnergyManagement::Attributes;
82
+ using namespace chip ::app::Clusters::WaterHeaterManagement;
64
83
using namespace ::chip::DeviceLayer;
65
84
using namespace ::chip::DeviceLayer::Silabs;
66
85
using namespace ::chip::DeviceLayer::Internal;
@@ -72,9 +91,21 @@ namespace Clusters {
72
91
namespace DeviceEnergyManagement {
73
92
74
93
// Keep track of the parsed featureMap option
94
+ #if (CHIP_DEVICE_CONFIG_DEM_SUPPORT_POWER_FORECAST_REPORTING) && (CHIP_DEVICE_CONFIG_DEM_SUPPORT_STATE_FORECAST_REPORTING)
95
+ #error Cannot define CHIP_DEVICE_CONFIG_DEM_SUPPORT_POWER_FORECAST_REPORTING and CHIP_DEVICE_CONFIG_DEM_SUPPORT_STATE_FORECAST_REPORTING
96
+ #endif
97
+
98
+ #if CHIP_DEVICE_CONFIG_DEM_SUPPORT_POWER_FORECAST_REPORTING
75
99
static chip::BitMask<Feature> sFeatureMap (Feature::kPowerAdjustment , Feature::kPowerForecastReporting ,
76
- Feature::kStateForecastReporting , Feature::kStartTimeAdjustment , Feature::kPausable ,
77
- Feature::kForecastAdjustment , Feature::kConstraintBasedAdjustment );
100
+ Feature::kStartTimeAdjustment , Feature::kPausable , Feature::kForecastAdjustment ,
101
+ Feature::kConstraintBasedAdjustment );
102
+ #elif CHIP_DEVICE_CONFIG_DEM_SUPPORT_STATE_FORECAST_REPORTING
103
+ static chip::BitMask<Feature> sFeatureMap (Feature::kPowerAdjustment , Feature::kStateForecastReporting ,
104
+ Feature::kStartTimeAdjustment , Feature::kPausable , Feature::kForecastAdjustment ,
105
+ Feature::kConstraintBasedAdjustment );
106
+ #else
107
+ static chip::BitMask<Feature> sFeatureMap (Feature::kPowerAdjustment );
108
+ #endif
78
109
79
110
chip::BitMask<Feature> GetFeatureMapFromCmdLine ()
80
111
{
@@ -91,14 +122,33 @@ AppTask AppTask::sAppTask;
91
122
void ApplicationInit ()
92
123
{
93
124
chip::DeviceLayer::PlatformMgr ().LockChipStack ();
125
+ SILABS_LOG (" ==================================================" );
126
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
127
+ SILABS_LOG (" energy-management-example EVSE starting. featureMap 0x%08lx" , DeviceEnergyManagement::sFeatureMap .Raw ());
128
+
94
129
EvseApplicationInit ();
95
- sEvseLED .Init (EVSE_LED);
130
+ #endif // CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
131
+
132
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
133
+ SILABS_LOG (" energy-management-example WaterHeater starting. featureMap 0x%08lx" , DeviceEnergyManagement::sFeatureMap .Raw ());
134
+
135
+ FullWhmApplicationInit ();
136
+ #endif // CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
137
+ SILABS_LOG (" ==================================================" );
138
+
139
+ sEnergyManagementLED .Init (EVSE_LED);
96
140
chip::DeviceLayer::PlatformMgr ().UnlockChipStack ();
97
141
}
98
142
void ApplicationShutdown ()
99
143
{
100
144
chip::DeviceLayer::PlatformMgr ().LockChipStack ();
145
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
101
146
EvseApplicationShutdown ();
147
+ #endif // CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
148
+
149
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
150
+ FullWhmApplicationShutdown ();
151
+ #endif // CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
102
152
chip::DeviceLayer::PlatformMgr ().UnlockChipStack ();
103
153
}
104
154
@@ -108,7 +158,11 @@ CHIP_ERROR AppTask::Init()
108
158
chip::DeviceLayer::Silabs::GetPlatform ().SetButtonsCb (AppTask::ButtonEventHandler);
109
159
110
160
#ifdef DISPLAY_ENABLED
111
- GetLCD ().Init ((uint8_t *) " energy-management-App" );
161
+ #if CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_EVSE_DEVICE
162
+ GetLCD ().Init ((uint8_t *) " energy-management-App (EVSE)" );
163
+ #elif CHIP_DEVICE_CONFIG_ENABLE_EXAMPLE_WATER_HEATER_DEVICE
164
+ GetLCD ().Init ((uint8_t *) " energy-management-App (WaterHeater)" );
165
+ #endif
112
166
#endif
113
167
114
168
err = BaseApplication::Init ();
@@ -120,6 +174,44 @@ CHIP_ERROR AppTask::Init()
120
174
121
175
ApplicationInit ();
122
176
177
+ #if (CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_EVSE_TRIGGER) || (CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_REPORTING_TRIGGER) || \
178
+ (CONFIG_CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER) || \
179
+ (CONFIG_CHIP_DEVICE_CONFIG_ENABLE_DEVICE_ENERGY_MANAGEMENT_TRIGGER)
180
+ TestEventTriggerDelegate * pTestEventDelegate = Server::GetInstance ().GetTestEventTriggerDelegate ();
181
+ #endif
182
+
183
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_EVSE_TRIGGER
184
+ static EnergyEvseTestEventTriggerHandler sEnergyEvseTestEventTriggerHandler ;
185
+ if (pTestEventDelegate != nullptr )
186
+ {
187
+ VerifyOrDie (pTestEventDelegate->AddHandler (&sEnergyEvseTestEventTriggerHandler ) == CHIP_NO_ERROR);
188
+ }
189
+ #endif
190
+
191
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ENERGY_REPORTING_TRIGGER
192
+ static EnergyReportingTestEventTriggerHandler sEnergyReportingTestEventTriggerHandler ;
193
+ if (pTestEventDelegate != nullptr )
194
+ {
195
+ VerifyOrDie (pTestEventDelegate->AddHandler (&sEnergyReportingTestEventTriggerHandler ) == CHIP_NO_ERROR);
196
+ }
197
+
198
+ #endif
199
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER
200
+ static WaterHeaterManagementTestEventTriggerHandler sWaterHeaterManagementTestEventTriggerHandler ;
201
+
202
+ if (pTestEventDelegate != nullptr )
203
+ {
204
+ VerifyOrDie (pTestEventDelegate->AddHandler (&sWaterHeaterManagementTestEventTriggerHandler ) == CHIP_NO_ERROR);
205
+ }
206
+ #endif
207
+ #if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_DEVICE_ENERGY_MANAGEMENT_TRIGGER
208
+ static DeviceEnergyManagementTestEventTriggerHandler sDeviceEnergyManagementTestEventTriggerHandler ;
209
+ if (pTestEventDelegate != nullptr )
210
+ {
211
+ VerifyOrDie (pTestEventDelegate->AddHandler (&sDeviceEnergyManagementTestEventTriggerHandler ) == CHIP_NO_ERROR);
212
+ }
213
+ #endif
214
+
123
215
// Update the LCD with the Stored value. Show QR Code if not provisioned
124
216
#ifdef DISPLAY_ENABLED
125
217
GetLCD ().WriteDemoUI (LightMgr ().IsLightOn ());
@@ -168,7 +260,7 @@ void AppTask::AppTaskMain(void * pvParameter)
168
260
}
169
261
}
170
262
171
- void AppTask::EvseActionEventHandler (AppEvent * aEvent)
263
+ void AppTask::EnergyManagementActionEventHandler (AppEvent * aEvent)
172
264
{
173
265
bool initiated = false ;
174
266
int32_t actor;
@@ -201,7 +293,7 @@ void AppTask::ButtonEventHandler(uint8_t button, uint8_t btnAction)
201
293
202
294
if (button == APP_EVSE_SWITCH && btnAction == static_cast <uint8_t >(SilabsPlatform::ButtonAction::ButtonPressed))
203
295
{
204
- button_event.Handler = EvseActionEventHandler ;
296
+ button_event.Handler = EnergyManagementActionEventHandler ;
205
297
AppTask::GetAppTask ().PostEvent (&button_event);
206
298
}
207
299
else if (button == APP_FUNCTION_BUTTON)
0 commit comments