diff --git a/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp b/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp index ec5b8f1ce..a0e8c007b 100644 --- a/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp +++ b/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp @@ -233,11 +233,8 @@ void MicrowaveOvenModeDelegateInitCB(void *delegate, uint16_t endpoint_id) void DeviceEnergyManagementModeDelegateInitCB(void *delegate, uint16_t endpoint_id) { - VerifyOrReturn(delegate != nullptr); - DeviceEnergyManagement::Delegate *_delegate = static_cast(delegate); - chip::BitMask feature_map(get_feature_map_value(endpoint_id, DeviceEnergyManagement::Id)); - DeviceEnergyManagement::Instance *instance = new DeviceEnergyManagement::Instance(endpoint_id, *_delegate, feature_map); - (void)instance->Init(); + ModeBase::Delegate *device_energy_management_mode_delegate = static_cast(delegate); + InitModeDelegate(device_energy_management_mode_delegate, endpoint_id, DeviceEnergyManagementMode::Id); } void EnergyEvseDelegateInitCB(void *delegate, uint16_t endpoint_id) diff --git a/examples/all_device_types_app/main/esp_matter_console_helpers.cpp b/examples/all_device_types_app/main/esp_matter_console_helpers.cpp index 8e8d37f7a..cc02a0093 100644 --- a/examples/all_device_types_app/main/esp_matter_console_helpers.cpp +++ b/examples/all_device_types_app/main/esp_matter_console_helpers.cpp @@ -539,6 +539,7 @@ int create(uint8_t device_type_index) energy_evse_config.energy_evse.delegate = &energyEvseDelegate; energy_evse_config.energy_evse_mode.delegate = &evseModeDelegate; energy_evse_config.device_energy_management.delegate = &evseDemDelegate; + energy_evse_config.device_energy_management.feature_flags = cluster::device_energy_management::feature::power_adjustment::get_id(); endpoint = esp_matter::endpoint::energy_evse::create(node, &energy_evse_config, ENDPOINT_FLAG_NONE, NULL); esp_matter::endpoint::power_source::config_t power_source_config; @@ -590,6 +591,7 @@ int create(uint8_t device_type_index) static chip::app::Clusters::DeviceEnergyManagement::MockDeviceEnergyManagementDelegate demDelegate; device_energy_management_config.device_energy_management_mode.delegate = &demModeDelegate; device_energy_management_config.device_energy_management.delegate = &demDelegate; + device_energy_management_config.device_energy_management.feature_flags = cluster::device_energy_management::feature::power_adjustment::get_id(); endpoint = esp_matter::endpoint::device_energy_management::create(node, &device_energy_management_config, ENDPOINT_FLAG_NONE, NULL); break; } diff --git a/examples/all_device_types_app/main/mock_delegates/mock_mode_base_delegate.cpp b/examples/all_device_types_app/main/mock_delegates/mock_mode_base_delegate.cpp index 6b3532e39..3b5d3a2d6 100644 --- a/examples/all_device_types_app/main/mock_delegates/mock_mode_base_delegate.cpp +++ b/examples/all_device_types_app/main/mock_delegates/mock_mode_base_delegate.cpp @@ -31,9 +31,12 @@ CHIP_ERROR MockModeBaseDelegate::GetModeLabelByIndex(uint8_t modeIndex, MutableC CHIP_ERROR MockModeBaseDelegate::GetModeValueByIndex(uint8_t modeIndex, uint8_t &value) { - // Implement your own logic here. - ESP_LOGE(LOG_TAG, "%s is not implemented", __func__); - return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; + // ModeBase instance initialization expects at least one mode to initialize successfully. + if (modeIndex > 0) { + return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; + } + value = 0; + return CHIP_NO_ERROR; } CHIP_ERROR MockModeBaseDelegate::GetModeTagsByIndex(uint8_t modeIndex, DataModel::List &modeTags)