components/esp_matter: Fix device energy management mode cluster initialization

This commit is contained in:
Mahesh Pimpale
2026-03-16 15:03:46 +05:30
committed by Mahesh
parent 9a0c63936c
commit 9a87312bd7
3 changed files with 10 additions and 8 deletions
@@ -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<DeviceEnergyManagement::Delegate*>(delegate);
chip::BitMask<DeviceEnergyManagement::Feature> 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<ModeBase::Delegate*>(delegate);
InitModeDelegate(device_energy_management_mode_delegate, endpoint_id, DeviceEnergyManagementMode::Id);
}
void EnergyEvseDelegateInitCB(void *delegate, uint16_t endpoint_id)
@@ -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;
}
@@ -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<detail::Structs::ModeTagStruct::Type> &modeTags)