From 874d750a1cec3bf99ec4181933666d7c214abc32 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Wed, 29 Nov 2023 11:37:49 +0000 Subject: [PATCH 01/15] Fix #30665 (EVSE) - Changed to use amperage_mA, energy_mWh - removed max on epoch_s - removed access for operate - removed side for events --- .../data-model/chip/energy-evse-cluster.xml | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml index 8eed118f9ef953..6cd2a47dab50c5 100644 --- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml @@ -71,7 +71,7 @@ limitations under the License. - + Energy EVSE @@ -88,15 +88,15 @@ limitations under the License. State SupplyState FaultState - ChargingEnabledUntil + ChargingEnabledUntil - DischargingEnabledUntil - CircuitCapacity - MinimumChargeCurrent - MaximumChargeCurrent + DischargingEnabledUntil + CircuitCapacity + MinimumChargeCurrent + MaximumChargeCurrent - MaximumDischargeCurrent - + MaximumDischargeCurrent + UserMaximumChargeCurrent @@ -115,7 +115,7 @@ limitations under the License. NextChargeTargetTime - NextChargeRequiredEnergy + NextChargeRequiredEnergy NextChargeTargetSoC @@ -127,48 +127,41 @@ limitations under the License. StateOfCharge - BatteryCapacity + BatteryCapacity VehicleID SessionID SessionDuration - SessionEnergyCharged + SessionEnergyCharged - SessionEnergyDischarged + SessionEnergyDischarged - Allows a client to disable the EVSE from charging and discharging. - - - + + Allows a client to enable the EVSE to charge an EV. - - + Allows a client to enable the EVSE to discharge an EV. - Allows a client to put the EVSE into a self-diagnostics mode. - Allows a client to set the user specified charging targets. - Allows a client to retrieve the user specified charging targets. - Allows a client to clear all stored charging targets. @@ -176,39 +169,39 @@ limitations under the License. The GetTargetsResponse is sent in response to the GetTargets Command. - + EVConnected - + EVNotDetected - - + + - + EnergyTransferStarted - + - + EnergyTransferStopped - + - + Fault - + RFID From 35a06a7d2853f065b6b86e5990985a9f31b76be3 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Wed, 29 Nov 2023 15:28:55 +0000 Subject: [PATCH 02/15] Fix #30665 updates to try to get further with ZAP and autogen, but still fails with some parts of regen_all --- .../matter_idl/generators/type_definitions.py | 4 +++ src/app/zap-templates/common/override.js | 5 +++ .../zcl/data-model/chip/chip-types.xml | 5 +++ .../data_model/controller-clusters.matter | 34 +++++++++---------- .../data_model/controller-clusters.zap | 3 +- .../app-common/zap-generated/attribute-type.h | 4 +++ .../zap-generated/attributes/Accessors.cpp | 22 ++++++------ .../zap-generated/attributes/Accessors.h | 18 +++++----- 8 files changed, 57 insertions(+), 38 deletions(-) diff --git a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py index 29d496b48315bb..f244294b6bb192 100644 --- a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py +++ b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py @@ -190,6 +190,7 @@ def is_struct(self) -> bool: # Derived types # Specification describes them in section '7.18.2. Derived Data Types' "action_id": BasicInteger(idl_name="action_id", byte_count=1, is_signed=False), + "amperage_mA": BasicInteger(idl_name="amperage_mA", byte_count=8, is_signed=True), "attrib_id": BasicInteger(idl_name="attrib_id", byte_count=4, is_signed=False), "cluster_id": BasicInteger(idl_name="cluster_id", byte_count=4, is_signed=False), "command_id": BasicInteger(idl_name="command_id", byte_count=4, is_signed=False), @@ -198,6 +199,7 @@ def is_struct(self) -> bool: "devtype_id": BasicInteger(idl_name="devtype_id", byte_count=4, is_signed=False), "elapsed_s": BasicInteger(idl_name="elapsed_s", byte_count=4, is_signed=False), "endpoint_no": BasicInteger(idl_name="endpoint_no", byte_count=2, is_signed=False), + "energy_mWh": BasicInteger(idl_name="energy_mWh", byte_count=8, is_signed=True), "entry_idx": BasicInteger(idl_name="entry_idx", byte_count=2, is_signed=False), "epoch_s": BasicInteger(idl_name="epoch_s", byte_count=4, is_signed=False), "epoch_us": BasicInteger(idl_name="epoch_us", byte_count=8, is_signed=False), @@ -212,6 +214,7 @@ def is_struct(self) -> bool: "percent": BasicInteger(idl_name="percent", byte_count=1, is_signed=False), "percent100ths": BasicInteger(idl_name="percent100ths", byte_count=2, is_signed=False), "posix_ms": BasicInteger(idl_name="posix_ms", byte_count=8, is_signed=False), + "power_mW": BasicInteger(idl_name="power_mW", byte_count=8, is_signed=True), "priority": BasicInteger(idl_name="priority", byte_count=1, is_signed=False), "status": BasicInteger(idl_name="status", byte_count=2, is_signed=False), "systime_ms": BasicInteger(idl_name="systime_ms", byte_count=8, is_signed=False), @@ -221,6 +224,7 @@ def is_struct(self) -> bool: "tod": BasicInteger(idl_name="tod", byte_count=4, is_signed=False), "trans_id": BasicInteger(idl_name="trans_id", byte_count=4, is_signed=False), "vendor_id": BasicInteger(idl_name="vendor_id", byte_count=2, is_signed=False), + "voltage_mV": BasicInteger(idl_name="voltage_mV", byte_count=8, is_signed=True), } diff --git a/src/app/zap-templates/common/override.js b/src/app/zap-templates/common/override.js index 98420cdabb1fda..de7bd90165bfc3 100644 --- a/src/app/zap-templates/common/override.js +++ b/src/app/zap-templates/common/override.js @@ -74,6 +74,11 @@ function atomicType(arg) return 'chip::Percent'; case 'percent100ths': return 'chip::Percent100ths'; + case 'power_mW': + case 'amperage_mA': + case 'voltage_mV': + case 'energy_mWh': + return 'int64_t'; case 'epoch_us': case 'systime_us': case 'posix_ms': diff --git a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml index 0756fd85569f6c..40b5fc808f5ba9 100644 --- a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml +++ b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml @@ -56,6 +56,11 @@ limitations under the License. + + + + + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 54eae3531eadd4..33acf1e0c9616f 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -4370,7 +4370,7 @@ provisional cluster EnergyEvse = 153 { struct ChargingTargetStruct { int16u targetTime = 0; optional percent targetSoC = 1; - optional int64s addedEnergy = 2; + optional energy_mWh addedEnergy = 2; } info event EVConnected = 0 { @@ -4381,21 +4381,21 @@ provisional cluster EnergyEvse = 153 { int32u sessionID = 0; StateEnum state = 1; elapsed_s sessionDuration = 2; - int64s sessionEnergyCharged = 3; - optional int64s sessionEnergyDischarged = 4; + energy_mWh sessionEnergyCharged = 3; + optional energy_mWh sessionEnergyDischarged = 4; } info event EnergyTransferStarted = 2 { int32u sessionID = 0; StateEnum state = 1; - int64s maximumCurrent = 2; + amperage_mA maximumCurrent = 2; } info event EnergyTransferStopped = 3 { int32u sessionID = 0; StateEnum state = 1; EnergyTransferStoppedReasonEnum reason = 2; - int64s energyTransferred = 4; + energy_mWh energyTransferred = 4; } critical event Fault = 4 { @@ -4414,26 +4414,26 @@ provisional cluster EnergyEvse = 153 { readonly attribute FaultStateEnum faultState = 2; readonly attribute nullable epoch_s chargingEnabledUntil = 3; readonly attribute optional nullable epoch_s dischargingEnabledUntil = 4; - readonly attribute int64s circuitCapacity = 5; - readonly attribute int64s minimumChargeCurrent = 6; - readonly attribute int64s maximumChargeCurrent = 7; - readonly attribute optional int64s maximumDischargeCurrent = 8; - attribute access(write: manage) optional int64s userMaximumChargeCurrent = 9; + readonly attribute amperage_mA circuitCapacity = 5; + readonly attribute amperage_mA minimumChargeCurrent = 6; + readonly attribute amperage_mA maximumChargeCurrent = 7; + readonly attribute optional amperage_mA maximumDischargeCurrent = 8; + attribute access(write: manage) optional amperage_mA userMaximumChargeCurrent = 9; attribute access(write: manage) optional elapsed_s randomizationDelayWindow = 10; readonly attribute optional int8u numberOfWeeklyTargets = 33; readonly attribute optional int8u numberOfDailyTargets = 34; readonly attribute optional nullable epoch_s nextChargeStartTime = 35; readonly attribute optional nullable epoch_s nextChargeTargetTime = 36; - readonly attribute optional nullable int64s nextChargeRequiredEnergy = 37; + readonly attribute optional nullable energy_mWh nextChargeRequiredEnergy = 37; readonly attribute optional nullable percent nextChargeTargetSoC = 38; attribute access(write: manage) optional nullable int16u approximateEVEfficiency = 39; readonly attribute optional nullable percent stateOfCharge = 48; - readonly attribute optional nullable int64s batteryCapacity = 49; + readonly attribute optional nullable energy_mWh batteryCapacity = 49; readonly attribute optional nullable char_string<32> vehicleID = 50; readonly attribute nullable int32u sessionID = 64; readonly attribute elapsed_s sessionDuration = 65; - readonly attribute int64s sessionEnergyCharged = 66; - readonly attribute optional int64s sessionEnergyDischarged = 67; + readonly attribute energy_mWh sessionEnergyCharged = 66; + readonly attribute optional energy_mWh sessionEnergyDischarged = 67; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4448,13 +4448,13 @@ provisional cluster EnergyEvse = 153 { request struct EnableChargingRequest { nullable epoch_s chargingEnabledUntil = 0; - int64s minimumChargeCurrent = 1; - int64s maximumChargeCurrent = 2; + amperage_mA minimumChargeCurrent = 1; + amperage_mA maximumChargeCurrent = 2; } request struct EnableDischargingRequest { nullable epoch_s dischargingEnabledUntil = 0; - int64s maximumDischargeCurrent = 1; + amperage_mA maximumDischargeCurrent = 1; } request struct SetTargetsRequest { diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index 67b8da72bb5505..9bb8be22fae1a2 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -5400,5 +5400,6 @@ "endpointId": 1, "networkId": 0 } - ] + ], + "log": [] } \ No newline at end of file diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-type.h b/zzz_generated/app-common/app-common/zap-generated/attribute-type.h index e79d1281b33a8c..6b3b35cc4aa684 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attribute-type.h +++ b/zzz_generated/app-common/app-common/zap-generated/attribute-type.h @@ -74,6 +74,10 @@ enum ZCL_SYSTIME_MS_ATTRIBUTE_TYPE = 0xD1, // System Time Milliseconds ZCL_ELAPSED_S_ATTRIBUTE_TYPE = 0xD2, // Elapsed Time Seconds ZCL_TEMPERATURE_ATTRIBUTE_TYPE = 0xD8, // Temperature + ZCL_POWER_M_W_ATTRIBUTE_TYPE = 0xD9, // Power milliwatts + ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE = 0xDA, // Amperage milliamps + ZCL_VOLTAGE_M_V_ATTRIBUTE_TYPE = 0xDB, // Voltage millivolts + ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE = 0xDC, // Energy milliwatt-hours ZCL_TOD_ATTRIBUTE_TYPE = 0xE0, // Time of day ZCL_DATE_ATTRIBUTE_TYPE = 0xE1, // Date ZCL_EPOCH_US_ATTRIBUTE_TYPE = 0xE3, // Epoch Microseconds diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 1da947a4603420..329d3fe2711ade 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -10604,7 +10604,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); } } // namespace CircuitCapacity @@ -10635,7 +10635,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); } } // namespace MinimumChargeCurrent @@ -10666,7 +10666,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); } } // namespace MaximumChargeCurrent @@ -10697,7 +10697,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); } } // namespace MaximumDischargeCurrent @@ -10728,7 +10728,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); } } // namespace UserMaximumChargeCurrent @@ -10961,7 +10961,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } EmberAfStatus SetNull(chip::EndpointId endpoint) @@ -10970,7 +10970,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint) Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) @@ -11173,7 +11173,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } EmberAfStatus SetNull(chip::EndpointId endpoint) @@ -11182,7 +11182,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint) Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) @@ -11356,7 +11356,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } } // namespace SessionEnergyCharged @@ -11387,7 +11387,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); } } // namespace SessionEnergyDischarged diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 05505afea06d13..20da316a721554 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -2038,27 +2038,27 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace DischargingEnabledUntil namespace CircuitCapacity { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace CircuitCapacity namespace MinimumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MinimumChargeCurrent namespace MaximumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MaximumChargeCurrent namespace MaximumDischargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MaximumDischargeCurrent namespace UserMaximumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace UserMaximumChargeCurrent @@ -2092,7 +2092,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace NextChargeTargetTime namespace NextChargeRequiredEnergy { -EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mWh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); EmberAfStatus SetNull(chip::EndpointId endpoint); EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); @@ -2120,7 +2120,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace StateOfCharge namespace BatteryCapacity { -EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mWh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); EmberAfStatus SetNull(chip::EndpointId endpoint); EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); @@ -2146,12 +2146,12 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value); } // namespace SessionDuration namespace SessionEnergyCharged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mWh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace SessionEnergyCharged namespace SessionEnergyDischarged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mWh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace SessionEnergyDischarged From c3aef3a35ee4d6256905b69ba03cd4105314f652 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Wed, 29 Nov 2023 21:15:12 +0000 Subject: [PATCH 03/15] Added ember-compatibility-functions.cpp which was missing. --- src/app/util/ember-compatibility-functions.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/app/util/ember-compatibility-functions.cpp b/src/app/util/ember-compatibility-functions.cpp index de08342c4f18f6..3cf10a86d3f169 100644 --- a/src/app/util/ember-compatibility-functions.cpp +++ b/src/app/util/ember-compatibility-functions.cpp @@ -123,6 +123,12 @@ EmberAfAttributeType BaseType(EmberAfAttributeType type) "chip::DataVersion is expected to be uint32_t, change this when necessary"); return ZCL_INT32U_ATTRIBUTE_TYPE; + case ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE: // Amperage milliamps + case ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE: // Energy milliwatt-hours + case ZCL_POWER_M_W_ATTRIBUTE_TYPE: // Power milliwatts + case ZCL_VOLTAGE_M_V_ATTRIBUTE_TYPE: // Voltage millivolts + return ZCL_INT64S_ATTRIBUTE_TYPE; + case ZCL_EVENT_NO_ATTRIBUTE_TYPE: // Event Number case ZCL_FABRIC_ID_ATTRIBUTE_TYPE: // Fabric Id case ZCL_NODE_ID_ATTRIBUTE_TYPE: // Node Id From a71bef88c3584142c663fd3c17bb3defc1e4347e Mon Sep 17 00:00:00 2001 From: James Harrow Date: Wed, 29 Nov 2023 22:50:26 +0000 Subject: [PATCH 04/15] Made all types all lowercase to resolve regen_all issues. --- .../network-manager-app.matter | 114 +++++++++--------- .../matter_idl/generators/type_definitions.py | 8 +- .../util/ember-compatibility-functions.cpp | 8 +- src/app/zap-templates/common/override.js | 8 +- .../zcl/data-model/chip/chip-types.xml | 8 +- .../data-model/chip/energy-evse-cluster.xml | 34 +++--- .../data_model/controller-clusters.matter | 34 +++--- .../app-common/zap-generated/attribute-type.h | 8 +- .../zap-generated/attributes/Accessors.cpp | 22 ++-- .../zap-generated/attributes/Accessors.h | 18 +-- .../zap-generated/cluster/Commands.h | 35 +++--- .../zap-generated/cluster/Commands.h | 8 +- 12 files changed, 151 insertions(+), 154 deletions(-) diff --git a/examples/network-manager-app/network-manager-common/network-manager-app.matter b/examples/network-manager-app/network-manager-common/network-manager-app.matter index b5760ecb46703b..a91e5664fcf32e 100644 --- a/examples/network-manager-app/network-manager-common/network-manager-app.matter +++ b/examples/network-manager-app/network-manager-common/network-manager-app.matter @@ -1178,11 +1178,11 @@ endpoint 0 { callback attribute serverList; callback attribute clientList; callback attribute partsList; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster AccessControl { @@ -1190,32 +1190,32 @@ endpoint 0 { emits event AccessControlExtensionChanged; callback attribute acl; callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 3; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute dataModelRevision default = 10; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; + callback attribute manufacturingDate; callback attribute partNumber; callback attribute productURL; callback attribute productLabel; @@ -1226,9 +1226,9 @@ endpoint 0 { callback attribute capabilityMinima; callback attribute specificationVersion; callback attribute maxPathsPerInvoke; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 3; } @@ -1236,12 +1236,12 @@ endpoint 0 { server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; @@ -1260,9 +1260,9 @@ endpoint 0 { callback attribute lastNetworkingStatus; callback attribute lastNetworkID; callback attribute lastConnectErrorValue; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; callback attribute featureMap default = 0; ram attribute clusterRevision default = 1; } @@ -1273,17 +1273,17 @@ endpoint 0 { emits event NetworkFaultChange; emits event BootReason; callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; - callback attribute totalOperationalHours default = 0x00000000; + callback attribute rebootCount; + callback attribute upTime; + callback attribute totalOperationalHours; callback attribute bootReason; callback attribute activeHardwareFaults; callback attribute activeRadioFaults; callback attribute activeNetworkFaults; callback attribute testEventTriggersEnabled default = false; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 0x0002; @@ -1296,8 +1296,8 @@ endpoint 0 { callback attribute channel; callback attribute routingRole; callback attribute networkName; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; + callback attribute panId; + callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute neighborTable; callback attribute routeTable; @@ -1325,16 +1325,16 @@ endpoint 0 { callback attribute bssid; callback attribute securityType; callback attribute wiFiVersion; - callback attribute channelNumber default = 0x0000; - callback attribute rssi default = 0x00; - callback attribute beaconLostCount default = 0x00000000; - callback attribute beaconRxCount default = 0x00000000; - callback attribute packetMulticastRxCount default = 0x00000000; - callback attribute packetMulticastTxCount default = 0x00000000; - callback attribute packetUnicastRxCount default = 0x00000000; - callback attribute packetUnicastTxCount default = 0x00000000; - callback attribute currentMaxRate default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute channelNumber; + callback attribute rssi; + callback attribute beaconLostCount; + callback attribute beaconRxCount; + callback attribute packetMulticastRxCount; + callback attribute packetMulticastTxCount; + callback attribute packetUnicastRxCount; + callback attribute packetUnicastTxCount; + callback attribute currentMaxRate; + callback attribute overrunCount; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -1352,12 +1352,12 @@ endpoint 0 { } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; @@ -1372,9 +1372,9 @@ endpoint 0 { callback attribute commissionedFabrics; callback attribute trustedRootCertificates; callback attribute currentFabricIndex; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; @@ -1397,8 +1397,8 @@ endpoint 0 { callback attribute groupTable; callback attribute maxGroupsPerFabric; callback attribute maxGroupKeysPerFabric; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; handle command KeySetWrite; handle command KeySetRead; @@ -1422,7 +1422,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } } diff --git a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py index f244294b6bb192..6caf3a4dbd125c 100644 --- a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py +++ b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py @@ -190,7 +190,7 @@ def is_struct(self) -> bool: # Derived types # Specification describes them in section '7.18.2. Derived Data Types' "action_id": BasicInteger(idl_name="action_id", byte_count=1, is_signed=False), - "amperage_mA": BasicInteger(idl_name="amperage_mA", byte_count=8, is_signed=True), + "amperage_ma": BasicInteger(idl_name="amperage_ma", byte_count=8, is_signed=True), "attrib_id": BasicInteger(idl_name="attrib_id", byte_count=4, is_signed=False), "cluster_id": BasicInteger(idl_name="cluster_id", byte_count=4, is_signed=False), "command_id": BasicInteger(idl_name="command_id", byte_count=4, is_signed=False), @@ -199,7 +199,7 @@ def is_struct(self) -> bool: "devtype_id": BasicInteger(idl_name="devtype_id", byte_count=4, is_signed=False), "elapsed_s": BasicInteger(idl_name="elapsed_s", byte_count=4, is_signed=False), "endpoint_no": BasicInteger(idl_name="endpoint_no", byte_count=2, is_signed=False), - "energy_mWh": BasicInteger(idl_name="energy_mWh", byte_count=8, is_signed=True), + "energy_mwh": BasicInteger(idl_name="energy_mwh", byte_count=8, is_signed=True), "entry_idx": BasicInteger(idl_name="entry_idx", byte_count=2, is_signed=False), "epoch_s": BasicInteger(idl_name="epoch_s", byte_count=4, is_signed=False), "epoch_us": BasicInteger(idl_name="epoch_us", byte_count=8, is_signed=False), @@ -214,7 +214,7 @@ def is_struct(self) -> bool: "percent": BasicInteger(idl_name="percent", byte_count=1, is_signed=False), "percent100ths": BasicInteger(idl_name="percent100ths", byte_count=2, is_signed=False), "posix_ms": BasicInteger(idl_name="posix_ms", byte_count=8, is_signed=False), - "power_mW": BasicInteger(idl_name="power_mW", byte_count=8, is_signed=True), + "power_mw": BasicInteger(idl_name="power_mw", byte_count=8, is_signed=True), "priority": BasicInteger(idl_name="priority", byte_count=1, is_signed=False), "status": BasicInteger(idl_name="status", byte_count=2, is_signed=False), "systime_ms": BasicInteger(idl_name="systime_ms", byte_count=8, is_signed=False), @@ -224,7 +224,7 @@ def is_struct(self) -> bool: "tod": BasicInteger(idl_name="tod", byte_count=4, is_signed=False), "trans_id": BasicInteger(idl_name="trans_id", byte_count=4, is_signed=False), "vendor_id": BasicInteger(idl_name="vendor_id", byte_count=2, is_signed=False), - "voltage_mV": BasicInteger(idl_name="voltage_mV", byte_count=8, is_signed=True), + "voltage_mv": BasicInteger(idl_name="voltage_mv", byte_count=8, is_signed=True), } diff --git a/src/app/util/ember-compatibility-functions.cpp b/src/app/util/ember-compatibility-functions.cpp index 3cf10a86d3f169..6a3c6fd5b0ada0 100644 --- a/src/app/util/ember-compatibility-functions.cpp +++ b/src/app/util/ember-compatibility-functions.cpp @@ -123,10 +123,10 @@ EmberAfAttributeType BaseType(EmberAfAttributeType type) "chip::DataVersion is expected to be uint32_t, change this when necessary"); return ZCL_INT32U_ATTRIBUTE_TYPE; - case ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE: // Amperage milliamps - case ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE: // Energy milliwatt-hours - case ZCL_POWER_M_W_ATTRIBUTE_TYPE: // Power milliwatts - case ZCL_VOLTAGE_M_V_ATTRIBUTE_TYPE: // Voltage millivolts + case ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE: // Amperage milliamps + case ZCL_ENERGY_MWH_ATTRIBUTE_TYPE: // Energy milliwatt-hours + case ZCL_POWER_MW_ATTRIBUTE_TYPE: // Power milliwatts + case ZCL_VOLTAGE_MV_ATTRIBUTE_TYPE: // Voltage millivolts return ZCL_INT64S_ATTRIBUTE_TYPE; case ZCL_EVENT_NO_ATTRIBUTE_TYPE: // Event Number diff --git a/src/app/zap-templates/common/override.js b/src/app/zap-templates/common/override.js index de7bd90165bfc3..098af41e5154e2 100644 --- a/src/app/zap-templates/common/override.js +++ b/src/app/zap-templates/common/override.js @@ -74,10 +74,10 @@ function atomicType(arg) return 'chip::Percent'; case 'percent100ths': return 'chip::Percent100ths'; - case 'power_mW': - case 'amperage_mA': - case 'voltage_mV': - case 'energy_mWh': + case 'power_mw': + case 'amperage_ma': + case 'voltage_mv': + case 'energy_mwh': return 'int64_t'; case 'epoch_us': case 'systime_us': diff --git a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml index 40b5fc808f5ba9..176b82722f2ecc 100644 --- a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml +++ b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml @@ -56,10 +56,10 @@ limitations under the License. - - - - + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml index 6cd2a47dab50c5..83f44e37f1eaf4 100644 --- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml @@ -71,7 +71,7 @@ limitations under the License. - + Energy EVSE @@ -91,12 +91,12 @@ limitations under the License. ChargingEnabledUntil DischargingEnabledUntil - CircuitCapacity - MinimumChargeCurrent - MaximumChargeCurrent + CircuitCapacity + MinimumChargeCurrent + MaximumChargeCurrent - MaximumDischargeCurrent - + MaximumDischargeCurrent + UserMaximumChargeCurrent @@ -115,7 +115,7 @@ limitations under the License. NextChargeTargetTime - NextChargeRequiredEnergy + NextChargeRequiredEnergy NextChargeTargetSoC @@ -127,26 +127,26 @@ limitations under the License. StateOfCharge - BatteryCapacity + BatteryCapacity VehicleID SessionID SessionDuration - SessionEnergyCharged + SessionEnergyCharged - SessionEnergyDischarged + SessionEnergyDischarged Allows a client to disable the EVSE from charging and discharging. - - + + Allows a client to enable the EVSE to charge an EV. - + Allows a client to enable the EVSE to discharge an EV. @@ -178,21 +178,21 @@ limitations under the License. - - + + EnergyTransferStarted - + EnergyTransferStopped - + Fault diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 33acf1e0c9616f..14a3fa22ab0809 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -4370,7 +4370,7 @@ provisional cluster EnergyEvse = 153 { struct ChargingTargetStruct { int16u targetTime = 0; optional percent targetSoC = 1; - optional energy_mWh addedEnergy = 2; + optional energy_mwh addedEnergy = 2; } info event EVConnected = 0 { @@ -4381,21 +4381,21 @@ provisional cluster EnergyEvse = 153 { int32u sessionID = 0; StateEnum state = 1; elapsed_s sessionDuration = 2; - energy_mWh sessionEnergyCharged = 3; - optional energy_mWh sessionEnergyDischarged = 4; + energy_mwh sessionEnergyCharged = 3; + optional energy_mwh sessionEnergyDischarged = 4; } info event EnergyTransferStarted = 2 { int32u sessionID = 0; StateEnum state = 1; - amperage_mA maximumCurrent = 2; + amperage_ma maximumCurrent = 2; } info event EnergyTransferStopped = 3 { int32u sessionID = 0; StateEnum state = 1; EnergyTransferStoppedReasonEnum reason = 2; - energy_mWh energyTransferred = 4; + energy_mwh energyTransferred = 4; } critical event Fault = 4 { @@ -4414,26 +4414,26 @@ provisional cluster EnergyEvse = 153 { readonly attribute FaultStateEnum faultState = 2; readonly attribute nullable epoch_s chargingEnabledUntil = 3; readonly attribute optional nullable epoch_s dischargingEnabledUntil = 4; - readonly attribute amperage_mA circuitCapacity = 5; - readonly attribute amperage_mA minimumChargeCurrent = 6; - readonly attribute amperage_mA maximumChargeCurrent = 7; - readonly attribute optional amperage_mA maximumDischargeCurrent = 8; - attribute access(write: manage) optional amperage_mA userMaximumChargeCurrent = 9; + readonly attribute amperage_ma circuitCapacity = 5; + readonly attribute amperage_ma minimumChargeCurrent = 6; + readonly attribute amperage_ma maximumChargeCurrent = 7; + readonly attribute optional amperage_ma maximumDischargeCurrent = 8; + attribute access(write: manage) optional amperage_ma userMaximumChargeCurrent = 9; attribute access(write: manage) optional elapsed_s randomizationDelayWindow = 10; readonly attribute optional int8u numberOfWeeklyTargets = 33; readonly attribute optional int8u numberOfDailyTargets = 34; readonly attribute optional nullable epoch_s nextChargeStartTime = 35; readonly attribute optional nullable epoch_s nextChargeTargetTime = 36; - readonly attribute optional nullable energy_mWh nextChargeRequiredEnergy = 37; + readonly attribute optional nullable energy_mwh nextChargeRequiredEnergy = 37; readonly attribute optional nullable percent nextChargeTargetSoC = 38; attribute access(write: manage) optional nullable int16u approximateEVEfficiency = 39; readonly attribute optional nullable percent stateOfCharge = 48; - readonly attribute optional nullable energy_mWh batteryCapacity = 49; + readonly attribute optional nullable energy_mwh batteryCapacity = 49; readonly attribute optional nullable char_string<32> vehicleID = 50; readonly attribute nullable int32u sessionID = 64; readonly attribute elapsed_s sessionDuration = 65; - readonly attribute energy_mWh sessionEnergyCharged = 66; - readonly attribute optional energy_mWh sessionEnergyDischarged = 67; + readonly attribute energy_mwh sessionEnergyCharged = 66; + readonly attribute optional energy_mwh sessionEnergyDischarged = 67; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4448,13 +4448,13 @@ provisional cluster EnergyEvse = 153 { request struct EnableChargingRequest { nullable epoch_s chargingEnabledUntil = 0; - amperage_mA minimumChargeCurrent = 1; - amperage_mA maximumChargeCurrent = 2; + amperage_ma minimumChargeCurrent = 1; + amperage_ma maximumChargeCurrent = 2; } request struct EnableDischargingRequest { nullable epoch_s dischargingEnabledUntil = 0; - amperage_mA maximumDischargeCurrent = 1; + amperage_ma maximumDischargeCurrent = 1; } request struct SetTargetsRequest { diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-type.h b/zzz_generated/app-common/app-common/zap-generated/attribute-type.h index 6b3b35cc4aa684..c89f71a91d4a21 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attribute-type.h +++ b/zzz_generated/app-common/app-common/zap-generated/attribute-type.h @@ -74,10 +74,10 @@ enum ZCL_SYSTIME_MS_ATTRIBUTE_TYPE = 0xD1, // System Time Milliseconds ZCL_ELAPSED_S_ATTRIBUTE_TYPE = 0xD2, // Elapsed Time Seconds ZCL_TEMPERATURE_ATTRIBUTE_TYPE = 0xD8, // Temperature - ZCL_POWER_M_W_ATTRIBUTE_TYPE = 0xD9, // Power milliwatts - ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE = 0xDA, // Amperage milliamps - ZCL_VOLTAGE_M_V_ATTRIBUTE_TYPE = 0xDB, // Voltage millivolts - ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE = 0xDC, // Energy milliwatt-hours + ZCL_POWER_MW_ATTRIBUTE_TYPE = 0xD9, // Power milliwatts + ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE = 0xDA, // Amperage milliamps + ZCL_VOLTAGE_MV_ATTRIBUTE_TYPE = 0xDB, // Voltage millivolts + ZCL_ENERGY_MWH_ATTRIBUTE_TYPE = 0xDC, // Energy milliwatt-hours ZCL_TOD_ATTRIBUTE_TYPE = 0xE0, // Time of day ZCL_DATE_ATTRIBUTE_TYPE = 0xE1, // Date ZCL_EPOCH_US_ATTRIBUTE_TYPE = 0xE3, // Epoch Microseconds diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 329d3fe2711ade..728f9a5844b59c 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -10604,7 +10604,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE); } } // namespace CircuitCapacity @@ -10635,7 +10635,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE); } } // namespace MinimumChargeCurrent @@ -10666,7 +10666,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE); } } // namespace MaximumChargeCurrent @@ -10697,7 +10697,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE); } } // namespace MaximumDischargeCurrent @@ -10728,7 +10728,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_M_A_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_AMPERAGE_MA_ATTRIBUTE_TYPE); } } // namespace UserMaximumChargeCurrent @@ -10961,7 +10961,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } EmberAfStatus SetNull(chip::EndpointId endpoint) @@ -10970,7 +10970,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint) Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) @@ -11173,7 +11173,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } EmberAfStatus SetNull(chip::EndpointId endpoint) @@ -11182,7 +11182,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint) Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) @@ -11356,7 +11356,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } } // namespace SessionEnergyCharged @@ -11387,7 +11387,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_M_WH_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } } // namespace SessionEnergyDischarged diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 20da316a721554..68a10b448e4635 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -2038,27 +2038,27 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace DischargingEnabledUntil namespace CircuitCapacity { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_ma EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace CircuitCapacity namespace MinimumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_ma EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MinimumChargeCurrent namespace MaximumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_ma EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MaximumChargeCurrent namespace MaximumDischargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_ma EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace MaximumDischargeCurrent namespace UserMaximumChargeCurrent { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_mA +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // amperage_ma EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace UserMaximumChargeCurrent @@ -2092,7 +2092,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace NextChargeTargetTime namespace NextChargeRequiredEnergy { -EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mWh +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); EmberAfStatus SetNull(chip::EndpointId endpoint); EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); @@ -2120,7 +2120,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace StateOfCharge namespace BatteryCapacity { -EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mWh +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); EmberAfStatus SetNull(chip::EndpointId endpoint); EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); @@ -2146,12 +2146,12 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value); } // namespace SessionDuration namespace SessionEnergyCharged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mWh +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace SessionEnergyCharged namespace SessionEnergyDischarged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mWh +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace SessionEnergyDischarged diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 610e325a4e7dfa..7a93b0275e3029 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -6903,8 +6903,8 @@ class EnergyEvseEnableCharging : public ClusterCommand EnergyEvseEnableCharging(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("enable-charging", credsIssuerConfig) { AddArgument("ChargingEnabledUntil", 0, UINT32_MAX, &mRequest.chargingEnabledUntil); - AddArgument("MinimumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.minimumChargeCurrent); - AddArgument("MaximumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumChargeCurrent); + AddArgument("MinimumChargeCurrent", 0, UINT64_MAX, &mRequest.minimumChargeCurrent); + AddArgument("MaximumChargeCurrent", 0, UINT64_MAX, &mRequest.maximumChargeCurrent); ClusterCommand::AddArguments(); } @@ -6943,7 +6943,7 @@ class EnergyEvseEnableDischarging : public ClusterCommand ClusterCommand("enable-discharging", credsIssuerConfig) { AddArgument("DischargingEnabledUntil", 0, UINT32_MAX, &mRequest.dischargingEnabledUntil); - AddArgument("MaximumDischargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumDischargeCurrent); + AddArgument("MaximumDischargeCurrent", 0, UINT64_MAX, &mRequest.maximumDischargeCurrent); ClusterCommand::AddArguments(); } @@ -18446,18 +18446,16 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "discharging-enabled-until", 0, UINT32_MAX, Attributes::DischargingEnabledUntil::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "circuit-capacity", INT64_MIN, INT64_MAX, Attributes::CircuitCapacity::Id, + make_unique>(Id, "circuit-capacity", 0, UINT64_MAX, Attributes::CircuitCapacity::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "minimum-charge-current", INT64_MIN, INT64_MAX, - Attributes::MinimumChargeCurrent::Id, WriteCommandType::kForceWrite, - credsIssuerConfig), // - make_unique>(Id, "maximum-charge-current", INT64_MIN, INT64_MAX, - Attributes::MaximumChargeCurrent::Id, WriteCommandType::kForceWrite, - credsIssuerConfig), // - make_unique>(Id, "maximum-discharge-current", INT64_MIN, INT64_MAX, + make_unique>(Id, "minimum-charge-current", 0, UINT64_MAX, Attributes::MinimumChargeCurrent::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>(Id, "maximum-charge-current", 0, UINT64_MAX, Attributes::MaximumChargeCurrent::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>(Id, "maximum-discharge-current", 0, UINT64_MAX, Attributes::MaximumDischargeCurrent::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "user-maximum-charge-current", INT64_MIN, INT64_MAX, + make_unique>(Id, "user-maximum-charge-current", 0, UINT64_MAX, Attributes::UserMaximumChargeCurrent::Id, WriteCommandType::kWrite, credsIssuerConfig), // make_unique>(Id, "randomization-delay-window", 0, UINT32_MAX, @@ -18473,8 +18471,8 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "next-charge-target-time", 0, UINT32_MAX, Attributes::NextChargeTargetTime::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "next-charge-required-energy", INT64_MIN, - INT64_MAX, Attributes::NextChargeRequiredEnergy::Id, + make_unique>>(Id, "next-charge-required-energy", 0, UINT64_MAX, + Attributes::NextChargeRequiredEnergy::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "next-charge-target-so-c", 0, UINT8_MAX, Attributes::NextChargeTargetSoC::Id, WriteCommandType::kForceWrite, @@ -18485,7 +18483,7 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>( Id, "state-of-charge", 0, UINT8_MAX, Attributes::StateOfCharge::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "battery-capacity", INT64_MIN, INT64_MAX, + make_unique>>(Id, "battery-capacity", 0, UINT64_MAX, Attributes::BatteryCapacity::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( @@ -18494,10 +18492,9 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c Id, "session-id", 0, UINT32_MAX, Attributes::SessionID::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>(Id, "session-duration", 0, UINT32_MAX, Attributes::SessionDuration::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "session-energy-charged", INT64_MIN, INT64_MAX, - Attributes::SessionEnergyCharged::Id, WriteCommandType::kForceWrite, - credsIssuerConfig), // - make_unique>(Id, "session-energy-discharged", INT64_MIN, INT64_MAX, + make_unique>(Id, "session-energy-charged", 0, UINT64_MAX, Attributes::SessionEnergyCharged::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>(Id, "session-energy-discharged", 0, UINT64_MAX, Attributes::SessionEnergyDischarged::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 4358b5753c47c4..393fdbb30bba9c 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -77912,10 +77912,10 @@ class EnergyEvseEnableCharging : public ClusterCommand { AddArgument("ChargingEnabledUntil", 0, UINT32_MAX, &mRequest.chargingEnabledUntil); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MinimumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.minimumChargeCurrent); + AddArgument("MinimumChargeCurrent", 0, UINT64_MAX, &mRequest.minimumChargeCurrent); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MaximumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumChargeCurrent); + AddArgument("MaximumChargeCurrent", 0, UINT64_MAX, &mRequest.maximumChargeCurrent); #endif // MTR_ENABLE_PROVISIONAL ClusterCommand::AddArguments(); } @@ -77981,7 +77981,7 @@ class EnergyEvseEnableDischarging : public ClusterCommand { AddArgument("DischargingEnabledUntil", 0, UINT32_MAX, &mRequest.dischargingEnabledUntil); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MaximumDischargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumDischargeCurrent); + AddArgument("MaximumDischargeCurrent", 0, UINT64_MAX, &mRequest.maximumDischargeCurrent); #endif // MTR_ENABLE_PROVISIONAL ClusterCommand::AddArguments(); } @@ -79073,7 +79073,7 @@ class WriteEnergyEvseUserMaximumChargeCurrent : public WriteAttribute { : WriteAttribute("user-maximum-charge-current") { AddArgument("attr-name", "user-maximum-charge-current"); - AddArgument("attr-value", INT64_MIN, INT64_MAX, &mValue); + AddArgument("attr-value", 0, UINT64_MAX, &mValue); WriteAttribute::AddArguments(); } From 41acd01710b55e8c9091376010a058813c6db848 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Wed, 29 Nov 2023 23:03:59 +0000 Subject: [PATCH 05/15] Fixed lint issue (trailing whitespace). --- scripts/py_matter_idl/matter_idl/generators/type_definitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py index 6caf3a4dbd125c..9bfe20f455c110 100644 --- a/scripts/py_matter_idl/matter_idl/generators/type_definitions.py +++ b/scripts/py_matter_idl/matter_idl/generators/type_definitions.py @@ -199,7 +199,7 @@ def is_struct(self) -> bool: "devtype_id": BasicInteger(idl_name="devtype_id", byte_count=4, is_signed=False), "elapsed_s": BasicInteger(idl_name="elapsed_s", byte_count=4, is_signed=False), "endpoint_no": BasicInteger(idl_name="endpoint_no", byte_count=2, is_signed=False), - "energy_mwh": BasicInteger(idl_name="energy_mwh", byte_count=8, is_signed=True), + "energy_mwh": BasicInteger(idl_name="energy_mwh", byte_count=8, is_signed=True), "entry_idx": BasicInteger(idl_name="entry_idx", byte_count=2, is_signed=False), "epoch_s": BasicInteger(idl_name="epoch_s", byte_count=4, is_signed=False), "epoch_us": BasicInteger(idl_name="epoch_us", byte_count=8, is_signed=False), From b44b86602b5c735ad4ae5cee4a461919b74ddabf Mon Sep 17 00:00:00 2001 From: James Harrow Date: Fri, 15 Dec 2023 08:24:35 +0000 Subject: [PATCH 06/15] Aligned EVSE XML to same state as PR#30857 (includes SessionID being Nullable etc and in Fault Event). --- .../data-model/chip/energy-evse-cluster.xml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml index 83f44e37f1eaf4..49457150b71754 100644 --- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml @@ -69,7 +69,7 @@ limitations under the License. - + @@ -130,11 +130,11 @@ limitations under the License. BatteryCapacity VehicleID - SessionID - SessionDuration - SessionEnergyCharged + SessionID + SessionDuration + SessionEnergyCharged - SessionEnergyDischarged + SessionEnergyDischarged Allows a client to disable the EVSE from charging and discharging. @@ -171,11 +171,11 @@ limitations under the License. EVConnected - + EVNotDetected - + @@ -183,20 +183,20 @@ limitations under the License. EnergyTransferStarted - + EnergyTransferStopped - + Fault - + From 42b79f07f6ae35c83f0f6873bc01b2f35d189337 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Fri, 15 Dec 2023 08:28:44 +0000 Subject: [PATCH 07/15] Updated Device Energy Management XML to use power_mw, energy_mwh per spec definition. --- .../chip/device-energy-management-cluster.xml | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml index 10e3af41e4a290..a07ac6d0d505e1 100644 --- a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml @@ -38,14 +38,14 @@ limitations under the License. ESAType ESACanGenerate ESAState - AbsMinPower - AbsMaxPower + AbsMinPower + AbsMaxPower PowerAdjustmentCapability Forecast - + Allows a client to request an adjustment in the power consumption of an ESA for a specified duration. @@ -79,7 +79,7 @@ limitations under the License. PowerAdjustEnd - + Paused @@ -138,8 +138,8 @@ limitations under the License. - - + + @@ -165,28 +165,28 @@ limitations under the License. - - - - + + + + - - + + - + - - + + \ No newline at end of file From 56e62ec019697bd0f1f8291828957fcd06b14110 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Fri, 15 Dec 2023 08:29:58 +0000 Subject: [PATCH 08/15] Updated controller-clusters.zap --- src/controller/data_model/controller-clusters.zap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index fb41ede1f42920..b530fd8f277f05 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -428,6 +428,7 @@ "define": "ON_OFF_SWITCH_CONFIGURATION_CLUSTER", "side": "client", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "ClusterRevision", @@ -562,6 +563,7 @@ "define": "BINARY_INPUT_BASIC_CLUSTER", "side": "client", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "ClusterRevision", @@ -3484,6 +3486,7 @@ "define": "BARRIER_CONTROL_CLUSTER", "side": "client", "enabled": 1, + "apiMaturity": "deprecated", "commands": [ { "name": "BarrierControlGoToPercent", @@ -5108,6 +5111,7 @@ "define": "ELECTRICAL_MEASUREMENT_CLUSTER", "side": "client", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "ClusterRevision", From 1b9316d48cd28b9a79d737bad3b754454c9c5260 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Fri, 15 Dec 2023 09:06:25 +0000 Subject: [PATCH 09/15] regen_all.py --- .../data_model/controller-clusters.matter | 40 ++-- .../chip/devicecontroller/ChipClusters.java | 36 ++-- .../devicecontroller/ChipEventStructs.java | 8 +- .../chip/devicecontroller/ChipStructs.java | 22 +- .../devicecontroller/ClusterInfoMapping.java | 63 ++++++ .../devicecontroller/ClusterReadMapping.java | 12 +- .../EnergyEvseClusterFaultEvent.kt | 16 +- .../EnergyEvseClusterChargingTargetStruct.kt | 17 +- .../cluster/clusters/EnergyEvseCluster.kt | 43 +++- .../EnergyEvseClusterFaultEvent.kt | 16 +- .../EnergyEvseClusterChargingTargetStruct.kt | 17 +- .../CHIPAttributeTLVValueDecoder.cpp | 51 +++-- .../CHIPEventTLVValueDecoder.cpp | 17 +- .../zap-generated/CHIPInvokeCallbacks.cpp | 19 +- .../java/zap-generated/CHIPReadCallbacks.cpp | 202 ++++++++++++++++++ .../python/chip/clusters/Objects.py | 32 +-- .../MTRAttributeTLVValueDecoder.mm | 24 ++- .../zap-generated/MTRCommandPayloadsObjc.mm | 4 +- .../zap-generated/MTREventTLVValueDecoder.mm | 8 +- .../CHIP/zap-generated/MTRStructsObjc.h | 4 +- .../CHIP/zap-generated/MTRStructsObjc.mm | 8 +- .../zap-generated/attributes/Accessors.cpp | 100 +++++++-- .../zap-generated/attributes/Accessors.h | 16 +- .../zap-generated/cluster-objects.cpp | 6 +- .../zap-generated/cluster-objects.h | 36 ++-- .../zap-generated/cluster/Commands.h | 22 +- .../cluster/ComplexArgumentParser.cpp | 14 +- .../cluster/logging/DataModelLogger.cpp | 10 +- .../zap-generated/cluster/Commands.h | 4 +- 29 files changed, 659 insertions(+), 208 deletions(-) diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 3de205777da77f..ef27bd2371d0c8 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -4451,13 +4451,13 @@ provisional cluster DeviceEnergyManagement = 152 { elapsed_s minPauseDuration = 6; elapsed_s maxPauseDuration = 7; optional int16u manufacturerESAState = 8; - optional int64s nominalPower = 9; - optional int64s minPower = 10; - optional int64s maxPower = 11; - optional int64s nominalEnergy = 12; + optional power_mw nominalPower = 9; + optional power_mw minPower = 10; + optional power_mw maxPower = 11; + optional energy_mwh nominalEnergy = 12; optional CostStruct costs[] = 13; - optional int64s minPowerAdjustment = 14; - optional int64s maxPowerAdjustment = 15; + optional power_mw minPowerAdjustment = 14; + optional power_mw maxPowerAdjustment = 15; optional elapsed_s minDurationAdjustment = 16; optional elapsed_s maxDurationAdjustment = 17; } @@ -4476,21 +4476,21 @@ provisional cluster DeviceEnergyManagement = 152 { struct ConstraintsStruct { epoch_s startTime = 0; elapsed_s duration = 1; - optional int64s nominalPower = 2; - optional int64s maximumEnergy = 3; + optional power_mw nominalPower = 2; + optional energy_mwh maximumEnergy = 3; optional int8s loadControl = 4; } struct PowerAdjustStruct { - int64s minPower = 0; - int64s maxPower = 1; + power_mw minPower = 0; + power_mw maxPower = 1; elapsed_s minDuration = 2; elapsed_s maxDuration = 3; } struct SlotAdjustmentStruct { int8u slotIndex = 0; - int64s nominalPower = 1; + power_mw nominalPower = 1; elapsed_s duration = 2; } @@ -4500,7 +4500,7 @@ provisional cluster DeviceEnergyManagement = 152 { info event PowerAdjustEnd = 1 { CauseEnum cause = 0; elapsed_s duration = 1; - int64s energyUse = 2; + energy_mwh energyUse = 2; } info event Paused = 2 { @@ -4512,8 +4512,8 @@ provisional cluster DeviceEnergyManagement = 152 { readonly attribute ESATypeEnum ESAType = 0; readonly attribute boolean ESACanGenerate = 1; readonly attribute ESAStateEnum ESAState = 2; - readonly attribute int64s absMinPower = 3; - readonly attribute int64s absMaxPower = 4; + readonly attribute power_mw absMinPower = 3; + readonly attribute power_mw absMaxPower = 4; readonly attribute optional nullable PowerAdjustStruct powerAdjustmentCapability[] = 5; readonly attribute optional nullable ForecastStruct forecast = 6; readonly attribute command_id generatedCommandList[] = 65528; @@ -4524,7 +4524,7 @@ provisional cluster DeviceEnergyManagement = 152 { readonly attribute int16u clusterRevision = 65533; request struct PowerAdjustRequestRequest { - int64s power = 0; + power_mw power = 0; elapsed_s duration = 1; } @@ -4628,7 +4628,7 @@ provisional cluster EnergyEvse = 153 { } struct ChargingTargetStruct { - int16u targetTime = 0; + int16u targetTimeMinutesPastMidnight = 0; optional percent targetSoC = 1; optional energy_mwh addedEnergy = 2; } @@ -4659,7 +4659,7 @@ provisional cluster EnergyEvse = 153 { } critical event Fault = 4 { - int32u sessionID = 0; + nullable int32u sessionID = 0; StateEnum state = 1; FaultStateEnum faultStatePreviousState = 2; FaultStateEnum faultStateCurrentState = 4; @@ -4691,9 +4691,9 @@ provisional cluster EnergyEvse = 153 { readonly attribute optional nullable energy_mwh batteryCapacity = 49; readonly attribute optional nullable char_string<32> vehicleID = 50; readonly attribute nullable int32u sessionID = 64; - readonly attribute elapsed_s sessionDuration = 65; - readonly attribute energy_mwh sessionEnergyCharged = 66; - readonly attribute optional energy_mwh sessionEnergyDischarged = 67; + readonly attribute nullable elapsed_s sessionDuration = 65; + readonly attribute nullable energy_mwh sessionEnergyCharged = 66; + readonly attribute optional nullable energy_mwh sessionEnergyDischarged = 67; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java index 224dab357f761a..d4a978192119d9 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java @@ -29927,6 +29927,18 @@ public interface SessionIDAttributeCallback extends BaseAttributeCallback { void onSuccess(@Nullable Long value); } + public interface SessionDurationAttributeCallback extends BaseAttributeCallback { + void onSuccess(@Nullable Long value); + } + + public interface SessionEnergyChargedAttributeCallback extends BaseAttributeCallback { + void onSuccess(@Nullable Long value); + } + + public interface SessionEnergyDischargedAttributeCallback extends BaseAttributeCallback { + void onSuccess(@Nullable Long value); + } + public interface GeneratedCommandListAttributeCallback extends BaseAttributeCallback { void onSuccess(List value); } @@ -30521,76 +30533,76 @@ public void onSuccess(byte[] tlv) { } public void readSessionDurationAttribute( - LongAttributeCallback callback) { + SessionDurationAttributeCallback callback) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_DURATION_ATTRIBUTE_ID); readAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); callback.onSuccess(value); } }, SESSION_DURATION_ATTRIBUTE_ID, true); } public void subscribeSessionDurationAttribute( - LongAttributeCallback callback, int minInterval, int maxInterval) { + SessionDurationAttributeCallback callback, int minInterval, int maxInterval) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_DURATION_ATTRIBUTE_ID); subscribeAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); } }, SESSION_DURATION_ATTRIBUTE_ID, minInterval, maxInterval); } public void readSessionEnergyChargedAttribute( - LongAttributeCallback callback) { + SessionEnergyChargedAttributeCallback callback) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_ENERGY_CHARGED_ATTRIBUTE_ID); readAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); callback.onSuccess(value); } }, SESSION_ENERGY_CHARGED_ATTRIBUTE_ID, true); } public void subscribeSessionEnergyChargedAttribute( - LongAttributeCallback callback, int minInterval, int maxInterval) { + SessionEnergyChargedAttributeCallback callback, int minInterval, int maxInterval) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_ENERGY_CHARGED_ATTRIBUTE_ID); subscribeAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); } }, SESSION_ENERGY_CHARGED_ATTRIBUTE_ID, minInterval, maxInterval); } public void readSessionEnergyDischargedAttribute( - LongAttributeCallback callback) { + SessionEnergyDischargedAttributeCallback callback) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_ENERGY_DISCHARGED_ATTRIBUTE_ID); readAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); callback.onSuccess(value); } }, SESSION_ENERGY_DISCHARGED_ATTRIBUTE_ID, true); } public void subscribeSessionEnergyDischargedAttribute( - LongAttributeCallback callback, int minInterval, int maxInterval) { + SessionEnergyDischargedAttributeCallback callback, int minInterval, int maxInterval) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SESSION_ENERGY_DISCHARGED_ATTRIBUTE_ID); subscribeAttribute(new ReportCallbackImpl(callback, path) { @Override public void onSuccess(byte[] tlv) { - Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + @Nullable Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); } }, SESSION_ENERGY_DISCHARGED_ATTRIBUTE_ID, minInterval, maxInterval); } diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/generated/java/chip/devicecontroller/ChipEventStructs.java index 81b0180a39df4f..79d160371f9712 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ChipEventStructs.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ChipEventStructs.java @@ -3759,7 +3759,7 @@ public String toString() { } } public static class EnergyEvseClusterFaultEvent { - public Long sessionID; + public @Nullable Long sessionID; public Integer state; public Integer faultStatePreviousState; public Integer faultStateCurrentState; @@ -3769,7 +3769,7 @@ public static class EnergyEvseClusterFaultEvent { private static final long FAULT_STATE_CURRENT_STATE_ID = 4L; public EnergyEvseClusterFaultEvent( - Long sessionID, + @Nullable Long sessionID, Integer state, Integer faultStatePreviousState, Integer faultStateCurrentState @@ -3782,7 +3782,7 @@ public EnergyEvseClusterFaultEvent( public StructType encodeTlv() { ArrayList values = new ArrayList<>(); - values.add(new StructElement(SESSION_I_D_ID, new UIntType(sessionID))); + values.add(new StructElement(SESSION_I_D_ID, sessionID != null ? new UIntType(sessionID) : new NullType())); values.add(new StructElement(STATE_ID, new UIntType(state))); values.add(new StructElement(FAULT_STATE_PREVIOUS_STATE_ID, new UIntType(faultStatePreviousState))); values.add(new StructElement(FAULT_STATE_CURRENT_STATE_ID, new UIntType(faultStateCurrentState))); @@ -3794,7 +3794,7 @@ public static EnergyEvseClusterFaultEvent decodeTlv(BaseTLVType tlvValue) { if (tlvValue == null || tlvValue.type() != TLVType.Struct) { return null; } - Long sessionID = null; + @Nullable Long sessionID = null; Integer state = null; Integer faultStatePreviousState = null; Integer faultStateCurrentState = null; diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java index 0237b3fc989cd2..e7e40657b7915f 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java @@ -7276,26 +7276,26 @@ public String toString() { } } public static class EnergyEvseClusterChargingTargetStruct { - public Integer targetTime; + public Integer targetTimeMinutesPastMidnight; public Optional targetSoC; public Optional addedEnergy; - private static final long TARGET_TIME_ID = 0L; + private static final long TARGET_TIME_MINUTES_PAST_MIDNIGHT_ID = 0L; private static final long TARGET_SO_C_ID = 1L; private static final long ADDED_ENERGY_ID = 2L; public EnergyEvseClusterChargingTargetStruct( - Integer targetTime, + Integer targetTimeMinutesPastMidnight, Optional targetSoC, Optional addedEnergy ) { - this.targetTime = targetTime; + this.targetTimeMinutesPastMidnight = targetTimeMinutesPastMidnight; this.targetSoC = targetSoC; this.addedEnergy = addedEnergy; } public StructType encodeTlv() { ArrayList values = new ArrayList<>(); - values.add(new StructElement(TARGET_TIME_ID, new UIntType(targetTime))); + values.add(new StructElement(TARGET_TIME_MINUTES_PAST_MIDNIGHT_ID, new UIntType(targetTimeMinutesPastMidnight))); values.add(new StructElement(TARGET_SO_C_ID, targetSoC.map((nonOptionaltargetSoC) -> new UIntType(nonOptionaltargetSoC)).orElse(new EmptyType()))); values.add(new StructElement(ADDED_ENERGY_ID, addedEnergy.map((nonOptionaladdedEnergy) -> new IntType(nonOptionaladdedEnergy)).orElse(new EmptyType()))); @@ -7306,14 +7306,14 @@ public static EnergyEvseClusterChargingTargetStruct decodeTlv(BaseTLVType tlvVal if (tlvValue == null || tlvValue.type() != TLVType.Struct) { return null; } - Integer targetTime = null; + Integer targetTimeMinutesPastMidnight = null; Optional targetSoC = Optional.empty(); Optional addedEnergy = Optional.empty(); for (StructElement element: ((StructType)tlvValue).value()) { - if (element.contextTagNum() == TARGET_TIME_ID) { + if (element.contextTagNum() == TARGET_TIME_MINUTES_PAST_MIDNIGHT_ID) { if (element.value(BaseTLVType.class).type() == TLVType.UInt) { UIntType castingValue = element.value(UIntType.class); - targetTime = castingValue.value(Integer.class); + targetTimeMinutesPastMidnight = castingValue.value(Integer.class); } } else if (element.contextTagNum() == TARGET_SO_C_ID) { if (element.value(BaseTLVType.class).type() == TLVType.UInt) { @@ -7328,7 +7328,7 @@ public static EnergyEvseClusterChargingTargetStruct decodeTlv(BaseTLVType tlvVal } } return new EnergyEvseClusterChargingTargetStruct( - targetTime, + targetTimeMinutesPastMidnight, targetSoC, addedEnergy ); @@ -7338,8 +7338,8 @@ public static EnergyEvseClusterChargingTargetStruct decodeTlv(BaseTLVType tlvVal public String toString() { StringBuilder output = new StringBuilder(); output.append("EnergyEvseClusterChargingTargetStruct {\n"); - output.append("\ttargetTime: "); - output.append(targetTime); + output.append("\ttargetTimeMinutesPastMidnight: "); + output.append(targetTimeMinutesPastMidnight); output.append("\n"); output.append("\ttargetSoC: "); output.append(targetSoC); diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java index b92600bc9890a4..91b7d28b9fe564 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java @@ -10747,6 +10747,69 @@ public void onError(Exception ex) { } } + public static class DelegatedEnergyEvseClusterSessionDurationAttributeCallback implements ChipClusters.EnergyEvseCluster.SessionDurationAttributeCallback, DelegatedClusterCallback { + private ClusterCommandCallback callback; + @Override + public void setCallbackDelegate(ClusterCommandCallback callback) { + this.callback = callback; + } + + @Override + public void onSuccess(@Nullable Long value) { + Map responseValues = new LinkedHashMap<>(); + CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Long"); + responseValues.put(commandResponseInfo, value); + callback.onSuccess(responseValues); + } + + @Override + public void onError(Exception ex) { + callback.onFailure(ex); + } + } + + public static class DelegatedEnergyEvseClusterSessionEnergyChargedAttributeCallback implements ChipClusters.EnergyEvseCluster.SessionEnergyChargedAttributeCallback, DelegatedClusterCallback { + private ClusterCommandCallback callback; + @Override + public void setCallbackDelegate(ClusterCommandCallback callback) { + this.callback = callback; + } + + @Override + public void onSuccess(@Nullable Long value) { + Map responseValues = new LinkedHashMap<>(); + CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Long"); + responseValues.put(commandResponseInfo, value); + callback.onSuccess(responseValues); + } + + @Override + public void onError(Exception ex) { + callback.onFailure(ex); + } + } + + public static class DelegatedEnergyEvseClusterSessionEnergyDischargedAttributeCallback implements ChipClusters.EnergyEvseCluster.SessionEnergyDischargedAttributeCallback, DelegatedClusterCallback { + private ClusterCommandCallback callback; + @Override + public void setCallbackDelegate(ClusterCommandCallback callback) { + this.callback = callback; + } + + @Override + public void onSuccess(@Nullable Long value) { + Map responseValues = new LinkedHashMap<>(); + CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Long"); + responseValues.put(commandResponseInfo, value); + callback.onSuccess(responseValues); + } + + @Override + public void onError(Exception ex) { + callback.onFailure(ex); + } + } + public static class DelegatedEnergyEvseClusterGeneratedCommandListAttributeCallback implements ChipClusters.EnergyEvseCluster.GeneratedCommandListAttributeCallback, DelegatedClusterCallback { private ClusterCommandCallback callback; @Override diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java index fecf9c31d761ee..ec96ce4c2bc8a7 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java @@ -9542,10 +9542,10 @@ private static Map readEnergyEvseInteractionInfo() { InteractionInfo readEnergyEvseSessionDurationAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.EnergyEvseCluster) cluster).readSessionDurationAttribute( - (ChipClusters.LongAttributeCallback) callback + (ChipClusters.EnergyEvseCluster.SessionDurationAttributeCallback) callback ); }, - () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(), + () -> new ClusterInfoMapping.DelegatedEnergyEvseClusterSessionDurationAttributeCallback(), readEnergyEvseSessionDurationCommandParams ); result.put("readSessionDurationAttribute", readEnergyEvseSessionDurationAttributeInteractionInfo); @@ -9553,10 +9553,10 @@ private static Map readEnergyEvseInteractionInfo() { InteractionInfo readEnergyEvseSessionEnergyChargedAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.EnergyEvseCluster) cluster).readSessionEnergyChargedAttribute( - (ChipClusters.LongAttributeCallback) callback + (ChipClusters.EnergyEvseCluster.SessionEnergyChargedAttributeCallback) callback ); }, - () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(), + () -> new ClusterInfoMapping.DelegatedEnergyEvseClusterSessionEnergyChargedAttributeCallback(), readEnergyEvseSessionEnergyChargedCommandParams ); result.put("readSessionEnergyChargedAttribute", readEnergyEvseSessionEnergyChargedAttributeInteractionInfo); @@ -9564,10 +9564,10 @@ private static Map readEnergyEvseInteractionInfo() { InteractionInfo readEnergyEvseSessionEnergyDischargedAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.EnergyEvseCluster) cluster).readSessionEnergyDischargedAttribute( - (ChipClusters.LongAttributeCallback) callback + (ChipClusters.EnergyEvseCluster.SessionEnergyDischargedAttributeCallback) callback ); }, - () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(), + () -> new ClusterInfoMapping.DelegatedEnergyEvseClusterSessionEnergyDischargedAttributeCallback(), readEnergyEvseSessionEnergyDischargedCommandParams ); result.put("readSessionEnergyDischargedAttribute", readEnergyEvseSessionEnergyDischargedAttributeInteractionInfo); diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt index 2b82c363aa442c..53ca88273b038d 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt +++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt @@ -23,7 +23,7 @@ import matter.tlv.TlvReader import matter.tlv.TlvWriter class EnergyEvseClusterFaultEvent( - val sessionID: ULong, + val sessionID: ULong?, val state: UInt, val faultStatePreviousState: UInt, val faultStateCurrentState: UInt @@ -40,7 +40,11 @@ class EnergyEvseClusterFaultEvent( fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { tlvWriter.apply { startStructure(tlvTag) - put(ContextSpecificTag(TAG_SESSION_I_D), sessionID) + if (sessionID != null) { + put(ContextSpecificTag(TAG_SESSION_I_D), sessionID) + } else { + putNull(ContextSpecificTag(TAG_SESSION_I_D)) + } put(ContextSpecificTag(TAG_STATE), state) put(ContextSpecificTag(TAG_FAULT_STATE_PREVIOUS_STATE), faultStatePreviousState) put(ContextSpecificTag(TAG_FAULT_STATE_CURRENT_STATE), faultStateCurrentState) @@ -56,7 +60,13 @@ class EnergyEvseClusterFaultEvent( fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): EnergyEvseClusterFaultEvent { tlvReader.enterStructure(tlvTag) - val sessionID = tlvReader.getULong(ContextSpecificTag(TAG_SESSION_I_D)) + val sessionID = + if (!tlvReader.isNull()) { + tlvReader.getULong(ContextSpecificTag(TAG_SESSION_I_D)) + } else { + tlvReader.getNull(ContextSpecificTag(TAG_SESSION_I_D)) + null + } val state = tlvReader.getUInt(ContextSpecificTag(TAG_STATE)) val faultStatePreviousState = tlvReader.getUInt(ContextSpecificTag(TAG_FAULT_STATE_PREVIOUS_STATE)) diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt index f457f066ff27bc..9e859dbdf40e53 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt +++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt @@ -24,13 +24,13 @@ import matter.tlv.TlvReader import matter.tlv.TlvWriter class EnergyEvseClusterChargingTargetStruct( - val targetTime: UInt, + val targetTimeMinutesPastMidnight: UInt, val targetSoC: Optional, val addedEnergy: Optional ) { override fun toString(): String = buildString { append("EnergyEvseClusterChargingTargetStruct {\n") - append("\ttargetTime : $targetTime\n") + append("\ttargetTimeMinutesPastMidnight : $targetTimeMinutesPastMidnight\n") append("\ttargetSoC : $targetSoC\n") append("\taddedEnergy : $addedEnergy\n") append("}\n") @@ -39,7 +39,7 @@ class EnergyEvseClusterChargingTargetStruct( fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { tlvWriter.apply { startStructure(tlvTag) - put(ContextSpecificTag(TAG_TARGET_TIME), targetTime) + put(ContextSpecificTag(TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT), targetTimeMinutesPastMidnight) if (targetSoC.isPresent) { val opttargetSoC = targetSoC.get() put(ContextSpecificTag(TAG_TARGET_SO_C), opttargetSoC) @@ -53,13 +53,14 @@ class EnergyEvseClusterChargingTargetStruct( } companion object { - private const val TAG_TARGET_TIME = 0 + private const val TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT = 0 private const val TAG_TARGET_SO_C = 1 private const val TAG_ADDED_ENERGY = 2 fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): EnergyEvseClusterChargingTargetStruct { tlvReader.enterStructure(tlvTag) - val targetTime = tlvReader.getUInt(ContextSpecificTag(TAG_TARGET_TIME)) + val targetTimeMinutesPastMidnight = + tlvReader.getUInt(ContextSpecificTag(TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT)) val targetSoC = if (tlvReader.isNextTag(ContextSpecificTag(TAG_TARGET_SO_C))) { Optional.of(tlvReader.getUInt(ContextSpecificTag(TAG_TARGET_SO_C))) @@ -75,7 +76,11 @@ class EnergyEvseClusterChargingTargetStruct( tlvReader.exitContainer() - return EnergyEvseClusterChargingTargetStruct(targetTime, targetSoC, addedEnergy) + return EnergyEvseClusterChargingTargetStruct( + targetTimeMinutesPastMidnight, + targetSoC, + addedEnergy + ) } } } diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/EnergyEvseCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/EnergyEvseCluster.kt index 93e1c213748fe1..615839a2191b26 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/clusters/EnergyEvseCluster.kt +++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/EnergyEvseCluster.kt @@ -66,6 +66,12 @@ class EnergyEvseCluster(private val controller: MatterController, private val en class SessionIDAttribute(val value: UInt?) + class SessionDurationAttribute(val value: UInt?) + + class SessionEnergyChargedAttribute(val value: Long?) + + class SessionEnergyDischargedAttribute(val value: Long?) + class GeneratedCommandListAttribute(val value: List) class AcceptedCommandListAttribute(val value: List) @@ -1230,7 +1236,7 @@ class EnergyEvseCluster(private val controller: MatterController, private val en return SessionIDAttribute(decodedValue) } - suspend fun readSessionDurationAttribute(): UInt { + suspend fun readSessionDurationAttribute(): SessionDurationAttribute { val ATTRIBUTE_ID: UInt = 65u val attributePath = @@ -1256,12 +1262,18 @@ class EnergyEvseCluster(private val controller: MatterController, private val en // Decode the TLV data into the appropriate type val tlvReader = TlvReader(attributeData.data) - val decodedValue: UInt = tlvReader.getUInt(AnonymousTag) + val decodedValue: UInt? = + if (!tlvReader.isNull()) { + tlvReader.getUInt(AnonymousTag) + } else { + tlvReader.getNull(AnonymousTag) + null + } - return decodedValue + return SessionDurationAttribute(decodedValue) } - suspend fun readSessionEnergyChargedAttribute(): Long { + suspend fun readSessionEnergyChargedAttribute(): SessionEnergyChargedAttribute { val ATTRIBUTE_ID: UInt = 66u val attributePath = @@ -1287,12 +1299,18 @@ class EnergyEvseCluster(private val controller: MatterController, private val en // Decode the TLV data into the appropriate type val tlvReader = TlvReader(attributeData.data) - val decodedValue: Long = tlvReader.getLong(AnonymousTag) + val decodedValue: Long? = + if (!tlvReader.isNull()) { + tlvReader.getLong(AnonymousTag) + } else { + tlvReader.getNull(AnonymousTag) + null + } - return decodedValue + return SessionEnergyChargedAttribute(decodedValue) } - suspend fun readSessionEnergyDischargedAttribute(): Long? { + suspend fun readSessionEnergyDischargedAttribute(): SessionEnergyDischargedAttribute { val ATTRIBUTE_ID: UInt = 67u val attributePath = @@ -1319,13 +1337,18 @@ class EnergyEvseCluster(private val controller: MatterController, private val en // Decode the TLV data into the appropriate type val tlvReader = TlvReader(attributeData.data) val decodedValue: Long? = - if (tlvReader.isNextTag(AnonymousTag)) { - tlvReader.getLong(AnonymousTag) + if (!tlvReader.isNull()) { + if (tlvReader.isNextTag(AnonymousTag)) { + tlvReader.getLong(AnonymousTag) + } else { + null + } } else { + tlvReader.getNull(AnonymousTag) null } - return decodedValue + return SessionEnergyDischargedAttribute(decodedValue) } suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute { diff --git a/src/controller/java/generated/java/matter/controller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt b/src/controller/java/generated/java/matter/controller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt index 03e5ca83816f70..2167c1fca408eb 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt +++ b/src/controller/java/generated/java/matter/controller/cluster/eventstructs/EnergyEvseClusterFaultEvent.kt @@ -23,7 +23,7 @@ import matter.tlv.TlvReader import matter.tlv.TlvWriter class EnergyEvseClusterFaultEvent( - val sessionID: UInt, + val sessionID: UInt?, val state: UByte, val faultStatePreviousState: UByte, val faultStateCurrentState: UByte @@ -40,7 +40,11 @@ class EnergyEvseClusterFaultEvent( fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { tlvWriter.apply { startStructure(tlvTag) - put(ContextSpecificTag(TAG_SESSION_I_D), sessionID) + if (sessionID != null) { + put(ContextSpecificTag(TAG_SESSION_I_D), sessionID) + } else { + putNull(ContextSpecificTag(TAG_SESSION_I_D)) + } put(ContextSpecificTag(TAG_STATE), state) put(ContextSpecificTag(TAG_FAULT_STATE_PREVIOUS_STATE), faultStatePreviousState) put(ContextSpecificTag(TAG_FAULT_STATE_CURRENT_STATE), faultStateCurrentState) @@ -56,7 +60,13 @@ class EnergyEvseClusterFaultEvent( fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): EnergyEvseClusterFaultEvent { tlvReader.enterStructure(tlvTag) - val sessionID = tlvReader.getUInt(ContextSpecificTag(TAG_SESSION_I_D)) + val sessionID = + if (!tlvReader.isNull()) { + tlvReader.getUInt(ContextSpecificTag(TAG_SESSION_I_D)) + } else { + tlvReader.getNull(ContextSpecificTag(TAG_SESSION_I_D)) + null + } val state = tlvReader.getUByte(ContextSpecificTag(TAG_STATE)) val faultStatePreviousState = tlvReader.getUByte(ContextSpecificTag(TAG_FAULT_STATE_PREVIOUS_STATE)) diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt index 65c1b49f4af9f1..db61226e1adf55 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt +++ b/src/controller/java/generated/java/matter/controller/cluster/structs/EnergyEvseClusterChargingTargetStruct.kt @@ -24,13 +24,13 @@ import matter.tlv.TlvReader import matter.tlv.TlvWriter class EnergyEvseClusterChargingTargetStruct( - val targetTime: UShort, + val targetTimeMinutesPastMidnight: UShort, val targetSoC: Optional, val addedEnergy: Optional ) { override fun toString(): String = buildString { append("EnergyEvseClusterChargingTargetStruct {\n") - append("\ttargetTime : $targetTime\n") + append("\ttargetTimeMinutesPastMidnight : $targetTimeMinutesPastMidnight\n") append("\ttargetSoC : $targetSoC\n") append("\taddedEnergy : $addedEnergy\n") append("}\n") @@ -39,7 +39,7 @@ class EnergyEvseClusterChargingTargetStruct( fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { tlvWriter.apply { startStructure(tlvTag) - put(ContextSpecificTag(TAG_TARGET_TIME), targetTime) + put(ContextSpecificTag(TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT), targetTimeMinutesPastMidnight) if (targetSoC.isPresent) { val opttargetSoC = targetSoC.get() put(ContextSpecificTag(TAG_TARGET_SO_C), opttargetSoC) @@ -53,13 +53,14 @@ class EnergyEvseClusterChargingTargetStruct( } companion object { - private const val TAG_TARGET_TIME = 0 + private const val TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT = 0 private const val TAG_TARGET_SO_C = 1 private const val TAG_ADDED_ENERGY = 2 fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): EnergyEvseClusterChargingTargetStruct { tlvReader.enterStructure(tlvTag) - val targetTime = tlvReader.getUShort(ContextSpecificTag(TAG_TARGET_TIME)) + val targetTimeMinutesPastMidnight = + tlvReader.getUShort(ContextSpecificTag(TAG_TARGET_TIME_MINUTES_PAST_MIDNIGHT)) val targetSoC = if (tlvReader.isNextTag(ContextSpecificTag(TAG_TARGET_SO_C))) { Optional.of(tlvReader.getUByte(ContextSpecificTag(TAG_TARGET_SO_C))) @@ -75,7 +76,11 @@ class EnergyEvseClusterChargingTargetStruct( tlvReader.exitContainer() - return EnergyEvseClusterChargingTargetStruct(targetTime, targetSoC, addedEnergy) + return EnergyEvseClusterChargingTargetStruct( + targetTimeMinutesPastMidnight, + targetSoC, + addedEnergy + ) } } } diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index e87c3ea5961c68..b1764fa2e9a1be 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -22723,11 +22723,18 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - std::string valueClassName = "java/lang/Long"; - std::string valueCtorSignature = "(J)V"; - jlong jnivalue = static_cast(cppValue); - chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), - jnivalue, value); + if (cppValue.IsNull()) + { + value = nullptr; + } + else + { + std::string valueClassName = "java/lang/Long"; + std::string valueCtorSignature = "(J)V"; + jlong jnivalue = static_cast(cppValue.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + jnivalue, value); + } return value; } case Attributes::SessionEnergyCharged::Id: { @@ -22739,11 +22746,18 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - std::string valueClassName = "java/lang/Long"; - std::string valueCtorSignature = "(J)V"; - jlong jnivalue = static_cast(cppValue); - chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), - jnivalue, value); + if (cppValue.IsNull()) + { + value = nullptr; + } + else + { + std::string valueClassName = "java/lang/Long"; + std::string valueCtorSignature = "(J)V"; + jlong jnivalue = static_cast(cppValue.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + jnivalue, value); + } return value; } case Attributes::SessionEnergyDischarged::Id: { @@ -22755,11 +22769,18 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - std::string valueClassName = "java/lang/Long"; - std::string valueCtorSignature = "(J)V"; - jlong jnivalue = static_cast(cppValue); - chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), - jnivalue, value); + if (cppValue.IsNull()) + { + value = nullptr; + } + else + { + std::string valueClassName = "java/lang/Long"; + std::string valueCtorSignature = "(J)V"; + jlong jnivalue = static_cast(cppValue.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + jnivalue, value); + } return value; } case Attributes::GeneratedCommandList::Id: { diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp index 4dd1ffd1e2e2c1..6e3b2093ead51c 100644 --- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp @@ -5248,11 +5248,18 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader & return nullptr; } jobject value_sessionID; - std::string value_sessionIDClassName = "java/lang/Long"; - std::string value_sessionIDCtorSignature = "(J)V"; - jlong jnivalue_sessionID = static_cast(cppValue.sessionID); - chip::JniReferences::GetInstance().CreateBoxedObject( - value_sessionIDClassName.c_str(), value_sessionIDCtorSignature.c_str(), jnivalue_sessionID, value_sessionID); + if (cppValue.sessionID.IsNull()) + { + value_sessionID = nullptr; + } + else + { + std::string value_sessionIDClassName = "java/lang/Long"; + std::string value_sessionIDCtorSignature = "(J)V"; + jlong jnivalue_sessionID = static_cast(cppValue.sessionID.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject( + value_sessionIDClassName.c_str(), value_sessionIDCtorSignature.c_str(), jnivalue_sessionID, value_sessionID); + } jobject value_state; std::string value_stateClassName = "java/lang/Integer"; diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp index 3b65b69a3a456a..2b5fa3ff8429ea 100644 --- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp @@ -3959,13 +3959,14 @@ void CHIPEnergyEvseClusterGetTargetsResponseCallback::CallbackFn( { auto & entry_0 = iter_ChargingTargets_0.GetValue(); jobject newElement_0; - jobject newElement_0_targetTime; - std::string newElement_0_targetTimeClassName = "java/lang/Integer"; - std::string newElement_0_targetTimeCtorSignature = "(I)V"; - jint jninewElement_0_targetTime = static_cast(entry_0.targetTime); - chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0_targetTimeClassName.c_str(), - newElement_0_targetTimeCtorSignature.c_str(), - jninewElement_0_targetTime, newElement_0_targetTime); + jobject newElement_0_targetTimeMinutesPastMidnight; + std::string newElement_0_targetTimeMinutesPastMidnightClassName = "java/lang/Integer"; + std::string newElement_0_targetTimeMinutesPastMidnightCtorSignature = "(I)V"; + jint jninewElement_0_targetTimeMinutesPastMidnight = static_cast(entry_0.targetTimeMinutesPastMidnight); + chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0_targetTimeMinutesPastMidnightClassName.c_str(), + newElement_0_targetTimeMinutesPastMidnightCtorSignature.c_str(), + jninewElement_0_targetTimeMinutesPastMidnight, + newElement_0_targetTimeMinutesPastMidnight); jobject newElement_0_targetSoC; if (!entry_0.targetSoC.HasValue()) { @@ -4016,8 +4017,8 @@ void CHIPEnergyEvseClusterGetTargetsResponseCallback::CallbackFn( return; } - newElement_0 = env->NewObject(chargingTargetStructStructClass_1, chargingTargetStructStructCtor_1, newElement_0_targetTime, - newElement_0_targetSoC, newElement_0_addedEnergy); + newElement_0 = env->NewObject(chargingTargetStructStructClass_1, chargingTargetStructStructCtor_1, + newElement_0_targetTimeMinutesPastMidnight, newElement_0_targetSoC, newElement_0_addedEnergy); chip::JniReferences::GetInstance().AddToList(ChargingTargets, newElement_0); } diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index 630984be29b0a7..e7d797ce9f0e92 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -33874,6 +33874,208 @@ void CHIPEnergyEvseSessionIDAttributeCallback::CallbackFn(void * context, const env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); } +CHIPEnergyEvseSessionDurationAttributeCallback::CHIPEnergyEvseSessionDurationAttributeCallback(jobject javaCallback, + bool keepAlive) : + chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + return; + } + + javaCallbackRef = env->NewGlobalRef(javaCallback); + if (javaCallbackRef == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + } +} + +CHIPEnergyEvseSessionDurationAttributeCallback::~CHIPEnergyEvseSessionDurationAttributeCallback() +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not delete global reference for Java callback"); + return; + } + env->DeleteGlobalRef(javaCallbackRef); +} + +void CHIPEnergyEvseSessionDurationAttributeCallback::CallbackFn(void * context, + const chip::app::DataModel::Nullable & value) +{ + chip::DeviceLayer::StackUnlock unlock; + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + jobject javaCallbackRef; + + VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); + + // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. + javaCallbackRef = cppCallback.get()->javaCallbackRef; + VerifyOrReturn(javaCallbackRef != nullptr, + ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null")); + + jmethodID javaMethod; + err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Long;)V", &javaMethod); + VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method")); + + jobject javaValue; + if (value.IsNull()) + { + javaValue = nullptr; + } + else + { + std::string javaValueClassName = "java/lang/Long"; + std::string javaValueCtorSignature = "(J)V"; + jlong jnijavaValue = static_cast(value.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(), + jnijavaValue, javaValue); + } + + env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); +} + +CHIPEnergyEvseSessionEnergyChargedAttributeCallback::CHIPEnergyEvseSessionEnergyChargedAttributeCallback(jobject javaCallback, + bool keepAlive) : + chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + return; + } + + javaCallbackRef = env->NewGlobalRef(javaCallback); + if (javaCallbackRef == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + } +} + +CHIPEnergyEvseSessionEnergyChargedAttributeCallback::~CHIPEnergyEvseSessionEnergyChargedAttributeCallback() +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not delete global reference for Java callback"); + return; + } + env->DeleteGlobalRef(javaCallbackRef); +} + +void CHIPEnergyEvseSessionEnergyChargedAttributeCallback::CallbackFn(void * context, + const chip::app::DataModel::Nullable & value) +{ + chip::DeviceLayer::StackUnlock unlock; + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + jobject javaCallbackRef; + + VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); + + // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. + javaCallbackRef = cppCallback.get()->javaCallbackRef; + VerifyOrReturn(javaCallbackRef != nullptr, + ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null")); + + jmethodID javaMethod; + err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Long;)V", &javaMethod); + VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method")); + + jobject javaValue; + if (value.IsNull()) + { + javaValue = nullptr; + } + else + { + std::string javaValueClassName = "java/lang/Long"; + std::string javaValueCtorSignature = "(J)V"; + jlong jnijavaValue = static_cast(value.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(), + jnijavaValue, javaValue); + } + + env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); +} + +CHIPEnergyEvseSessionEnergyDischargedAttributeCallback::CHIPEnergyEvseSessionEnergyDischargedAttributeCallback(jobject javaCallback, + bool keepAlive) : + chip::Callback::Callback(CallbackFn, this), + keepAlive(keepAlive) +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + return; + } + + javaCallbackRef = env->NewGlobalRef(javaCallback); + if (javaCallbackRef == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + } +} + +CHIPEnergyEvseSessionEnergyDischargedAttributeCallback::~CHIPEnergyEvseSessionEnergyDischargedAttributeCallback() +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not delete global reference for Java callback"); + return; + } + env->DeleteGlobalRef(javaCallbackRef); +} + +void CHIPEnergyEvseSessionEnergyDischargedAttributeCallback::CallbackFn(void * context, + const chip::app::DataModel::Nullable & value) +{ + chip::DeviceLayer::StackUnlock unlock; + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + jobject javaCallbackRef; + + VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); + + // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. + javaCallbackRef = cppCallback.get()->javaCallbackRef; + VerifyOrReturn(javaCallbackRef != nullptr, + ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null")); + + jmethodID javaMethod; + err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Long;)V", &javaMethod); + VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method")); + + jobject javaValue; + if (value.IsNull()) + { + javaValue = nullptr; + } + else + { + std::string javaValueClassName = "java/lang/Long"; + std::string javaValueCtorSignature = "(J)V"; + jlong jnijavaValue = static_cast(value.Value()); + chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(), + jnijavaValue, javaValue); + } + + env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); +} + CHIPEnergyEvseGeneratedCommandListAttributeCallback::CHIPEnergyEvseGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive) : chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 735228c9725f71..5fd82a3382a339 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -23780,9 +23780,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="batteryCapacity", Tag=0x00000031, Type=typing.Union[None, Nullable, int]), ClusterObjectFieldDescriptor(Label="vehicleID", Tag=0x00000032, Type=typing.Union[None, Nullable, str]), ClusterObjectFieldDescriptor(Label="sessionID", Tag=0x00000040, Type=typing.Union[Nullable, uint]), - ClusterObjectFieldDescriptor(Label="sessionDuration", Tag=0x00000041, Type=uint), - ClusterObjectFieldDescriptor(Label="sessionEnergyCharged", Tag=0x00000042, Type=int), - ClusterObjectFieldDescriptor(Label="sessionEnergyDischarged", Tag=0x00000043, Type=typing.Optional[int]), + ClusterObjectFieldDescriptor(Label="sessionDuration", Tag=0x00000041, Type=typing.Union[Nullable, uint]), + ClusterObjectFieldDescriptor(Label="sessionEnergyCharged", Tag=0x00000042, Type=typing.Union[Nullable, int]), + ClusterObjectFieldDescriptor(Label="sessionEnergyDischarged", Tag=0x00000043, Type=typing.Union[None, Nullable, int]), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="eventList", Tag=0x0000FFFA, Type=typing.List[uint]), @@ -23813,9 +23813,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: batteryCapacity: 'typing.Union[None, Nullable, int]' = None vehicleID: 'typing.Union[None, Nullable, str]' = None sessionID: 'typing.Union[Nullable, uint]' = None - sessionDuration: 'uint' = None - sessionEnergyCharged: 'int' = None - sessionEnergyDischarged: 'typing.Optional[int]' = None + sessionDuration: 'typing.Union[Nullable, uint]' = None + sessionEnergyCharged: 'typing.Union[Nullable, int]' = None + sessionEnergyDischarged: 'typing.Union[None, Nullable, int]' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None eventList: 'typing.List[uint]' = None @@ -23908,12 +23908,12 @@ class ChargingTargetStruct(ClusterObject): def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields=[ - ClusterObjectFieldDescriptor(Label="targetTime", Tag=0, Type=uint), + ClusterObjectFieldDescriptor(Label="targetTimeMinutesPastMidnight", Tag=0, Type=uint), ClusterObjectFieldDescriptor(Label="targetSoC", Tag=1, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="addedEnergy", Tag=2, Type=typing.Optional[int]), ]) - targetTime: 'uint' = 0 + targetTimeMinutesPastMidnight: 'uint' = 0 targetSoC: 'typing.Optional[uint]' = None addedEnergy: 'typing.Optional[int]' = None @@ -24440,9 +24440,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=uint) + return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint]) - value: 'uint' = 0 + value: 'typing.Union[Nullable, uint]' = NullValue @dataclass class SessionEnergyCharged(ClusterAttributeDescriptor): @@ -24456,9 +24456,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=int) + return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, int]) - value: 'int' = 0 + value: 'typing.Union[Nullable, int]' = NullValue @dataclass class SessionEnergyDischarged(ClusterAttributeDescriptor): @@ -24472,9 +24472,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=typing.Optional[int]) + return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, int]) - value: 'typing.Optional[int]' = None + value: 'typing.Union[None, Nullable, int]' = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @@ -24681,13 +24681,13 @@ def event_id(cls) -> int: def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields=[ - ClusterObjectFieldDescriptor(Label="sessionID", Tag=0, Type=uint), + ClusterObjectFieldDescriptor(Label="sessionID", Tag=0, Type=typing.Union[Nullable, uint]), ClusterObjectFieldDescriptor(Label="state", Tag=1, Type=EnergyEvse.Enums.StateEnum), ClusterObjectFieldDescriptor(Label="faultStatePreviousState", Tag=2, Type=EnergyEvse.Enums.FaultStateEnum), ClusterObjectFieldDescriptor(Label="faultStateCurrentState", Tag=4, Type=EnergyEvse.Enums.FaultStateEnum), ]) - sessionID: 'uint' = 0 + sessionID: 'typing.Union[Nullable, uint]' = NullValue state: 'EnergyEvse.Enums.StateEnum' = 0 faultStatePreviousState: 'EnergyEvse.Enums.FaultStateEnum' = 0 faultStateCurrentState: 'EnergyEvse.Enums.FaultStateEnum' = 0 diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index 2deb87873533aa..25d41e9c8bf966 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm @@ -8723,8 +8723,12 @@ static id _Nullable DecodeAttributeValueForEnergyEVSECluster(AttributeId aAttrib if (*aError != CHIP_NO_ERROR) { return nil; } - NSNumber * _Nonnull value; - value = [NSNumber numberWithUnsignedInt:cppValue]; + NSNumber * _Nullable value; + if (cppValue.IsNull()) { + value = nil; + } else { + value = [NSNumber numberWithUnsignedInt:cppValue.Value()]; + } return value; } case Attributes::SessionEnergyCharged::Id: { @@ -8734,8 +8738,12 @@ static id _Nullable DecodeAttributeValueForEnergyEVSECluster(AttributeId aAttrib if (*aError != CHIP_NO_ERROR) { return nil; } - NSNumber * _Nonnull value; - value = [NSNumber numberWithLongLong:cppValue]; + NSNumber * _Nullable value; + if (cppValue.IsNull()) { + value = nil; + } else { + value = [NSNumber numberWithLongLong:cppValue.Value()]; + } return value; } case Attributes::SessionEnergyDischarged::Id: { @@ -8745,8 +8753,12 @@ static id _Nullable DecodeAttributeValueForEnergyEVSECluster(AttributeId aAttrib if (*aError != CHIP_NO_ERROR) { return nil; } - NSNumber * _Nonnull value; - value = [NSNumber numberWithLongLong:cppValue]; + NSNumber * _Nullable value; + if (cppValue.IsNull()) { + value = nil; + } else { + value = [NSNumber numberWithLongLong:cppValue.Value()]; + } return value; } default: { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm index f9cfc8e297a801..5d47571ec5ad3e 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm @@ -16910,7 +16910,7 @@ - (CHIP_ERROR)_setFieldsFromDecodableStruct:(const chip::app::Clusters::EnergyEv auto & entry_0 = iter_0.GetValue(); MTREnergyEVSEClusterChargingTargetStruct * newElement_0; newElement_0 = [MTREnergyEVSEClusterChargingTargetStruct new]; - newElement_0.targetTime = [NSNumber numberWithUnsignedShort:entry_0.targetTime]; + newElement_0.targetTimeMinutesPastMidnight = [NSNumber numberWithUnsignedShort:entry_0.targetTimeMinutesPastMidnight]; if (entry_0.targetSoC.HasValue()) { newElement_0.targetSoC = [NSNumber numberWithUnsignedChar:entry_0.targetSoC.Value()]; } else { @@ -17326,7 +17326,7 @@ - (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader return CHIP_ERROR_INVALID_ARGUMENT; } auto element_0 = (MTREnergyEVSEClusterChargingTargetStruct *) self.chargingTargets[i_0]; - listHolder_0->mList[i_0].targetTime = element_0.targetTime.unsignedShortValue; + listHolder_0->mList[i_0].targetTimeMinutesPastMidnight = element_0.targetTimeMinutesPastMidnight.unsignedShortValue; if (element_0.targetSoC != nil) { auto & definedValue_2 = listHolder_0->mList[i_0].targetSoC.Emplace(); definedValue_2 = element_0.targetSoC.unsignedCharValue; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm index c9a38080b463dc..fdffaae3ca3761 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm @@ -2978,8 +2978,12 @@ static id _Nullable DecodeEventPayloadForEnergyEVSECluster(EventId aEventId, TLV __auto_type * value = [MTREnergyEVSEClusterFaultEvent new]; do { - NSNumber * _Nonnull memberValue; - memberValue = [NSNumber numberWithUnsignedInt:cppValue.sessionID]; + NSNumber * _Nullable memberValue; + if (cppValue.sessionID.IsNull()) { + memberValue = nil; + } else { + memberValue = [NSNumber numberWithUnsignedInt:cppValue.sessionID.Value()]; + } value.sessionID = memberValue; } while (0); do { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h index 6242c7e9460229..f76506226b4701 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h @@ -1275,7 +1275,7 @@ MTR_PROVISIONALLY_AVAILABLE MTR_PROVISIONALLY_AVAILABLE @interface MTREnergyEVSEClusterChargingTargetStruct : NSObject -@property (nonatomic, copy) NSNumber * _Nonnull targetTime MTR_PROVISIONALLY_AVAILABLE; +@property (nonatomic, copy) NSNumber * _Nonnull targetTimeMinutesPastMidnight MTR_PROVISIONALLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nullable targetSoC MTR_PROVISIONALLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nullable addedEnergy MTR_PROVISIONALLY_AVAILABLE; @end @@ -1311,7 +1311,7 @@ MTR_PROVISIONALLY_AVAILABLE MTR_PROVISIONALLY_AVAILABLE @interface MTREnergyEVSEClusterFaultEvent : NSObject -@property (nonatomic, copy) NSNumber * _Nonnull sessionID MTR_PROVISIONALLY_AVAILABLE; +@property (nonatomic, copy) NSNumber * _Nullable sessionID MTR_PROVISIONALLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nonnull state MTR_PROVISIONALLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nonnull faultStatePreviousState MTR_PROVISIONALLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nonnull faultStateCurrentState MTR_PROVISIONALLY_AVAILABLE; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm index 06be97e69ee61b..4c08c7228fd870 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm @@ -5203,7 +5203,7 @@ - (instancetype)init { if (self = [super init]) { - _targetTime = @(0); + _targetTimeMinutesPastMidnight = @(0); _targetSoC = nil; @@ -5216,7 +5216,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone { auto other = [[MTREnergyEVSEClusterChargingTargetStruct alloc] init]; - other.targetTime = self.targetTime; + other.targetTimeMinutesPastMidnight = self.targetTimeMinutesPastMidnight; other.targetSoC = self.targetSoC; other.addedEnergy = self.addedEnergy; @@ -5225,7 +5225,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone - (NSString *)description { - NSString * descriptionString = [NSString stringWithFormat:@"<%@: targetTime:%@; targetSoC:%@; addedEnergy:%@; >", NSStringFromClass([self class]), _targetTime, _targetSoC, _addedEnergy]; + NSString * descriptionString = [NSString stringWithFormat:@"<%@: targetTimeMinutesPastMidnight:%@; targetSoC:%@; addedEnergy:%@; >", NSStringFromClass([self class]), _targetTimeMinutesPastMidnight, _targetSoC, _addedEnergy]; return descriptionString; } @@ -5371,7 +5371,7 @@ - (instancetype)init { if (self = [super init]) { - _sessionID = @(0); + _sessionID = nil; _state = @(0); diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 6a1c629033c162..83d5f86a3a7f12 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -10605,7 +10605,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagement::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagement::Id, Id, writable, ZCL_POWER_MW_ATTRIBUTE_TYPE); } } // namespace AbsMinPower @@ -10636,7 +10636,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagement::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); + return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagement::Id, Id, writable, ZCL_POWER_MW_ATTRIBUTE_TYPE); } } // namespace AbsMaxPower @@ -11654,24 +11654,27 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl namespace SessionDuration { -EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value) +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); EmberAfStatus status = emberAfReadAttribute(endpoint, Clusters::EnergyEvse::Id, Id, readable, sizeof(temp)); VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); - if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + if (Traits::IsNullValue(temp)) { - return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + value.SetNull(); + } + else + { + value.SetNonNull() = Traits::StorageToWorking(temp); } - *value = Traits::StorageToWorking(temp); return status; } EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) { return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; } @@ -11681,28 +11684,50 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value) return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); } +EmberAfStatus SetNull(chip::EndpointId endpoint) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType value; + Traits::SetNull(value); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); +} + +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +{ + if (value.IsNull()) + { + return SetNull(endpoint); + } + + return Set(endpoint, value.Value()); +} + } // namespace SessionDuration namespace SessionEnergyCharged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value) +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); EmberAfStatus status = emberAfReadAttribute(endpoint, Clusters::EnergyEvse::Id, Id, readable, sizeof(temp)); VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); - if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + if (Traits::IsNullValue(temp)) { - return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + value.SetNull(); + } + else + { + value.SetNonNull() = Traits::StorageToWorking(temp); } - *value = Traits::StorageToWorking(temp); return status; } EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) { return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; } @@ -11712,28 +11737,50 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } +EmberAfStatus SetNull(chip::EndpointId endpoint) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType value; + Traits::SetNull(value); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); +} + +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +{ + if (value.IsNull()) + { + return SetNull(endpoint); + } + + return Set(endpoint, value.Value()); +} + } // namespace SessionEnergyCharged namespace SessionEnergyDischarged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value) +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); EmberAfStatus status = emberAfReadAttribute(endpoint, Clusters::EnergyEvse::Id, Id, readable, sizeof(temp)); VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); - if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + if (Traits::IsNullValue(temp)) { - return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + value.SetNull(); + } + else + { + value.SetNonNull() = Traits::StorageToWorking(temp); } - *value = Traits::StorageToWorking(temp); return status; } EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) { return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; } @@ -11743,6 +11790,25 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value) return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); } +EmberAfStatus SetNull(chip::EndpointId endpoint) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType value; + Traits::SetNull(value); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); + return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_ENERGY_MWH_ATTRIBUTE_TYPE); +} + +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +{ + if (value.IsNull()) + { + return SetNull(endpoint); + } + + return Set(endpoint, value.Value()); +} + } // namespace SessionEnergyDischarged namespace FeatureMap { diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 0b8661dd0f728d..290cbf692f2d04 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -2049,12 +2049,12 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::DeviceEnergyMa } // namespace ESAState namespace AbsMinPower { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // power_mw EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace AbsMinPower namespace AbsMaxPower { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // int64s +EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // power_mw EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); } // namespace AbsMaxPower @@ -2210,18 +2210,24 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl } // namespace SessionID namespace SessionDuration { -EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value); // elapsed_s +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // elapsed_s EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value); +EmberAfStatus SetNull(chip::EndpointId endpoint); +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); } // namespace SessionDuration namespace SessionEnergyCharged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mwh +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); +EmberAfStatus SetNull(chip::EndpointId endpoint); +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); } // namespace SessionEnergyCharged namespace SessionEnergyDischarged { -EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value); // energy_mwh +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // energy_mwh EmberAfStatus Set(chip::EndpointId endpoint, int64_t value); +EmberAfStatus SetNull(chip::EndpointId endpoint); +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); } // namespace SessionEnergyDischarged namespace FeatureMap { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index 4869634c35461f..99196eceb6effc 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -15763,7 +15763,7 @@ namespace ChargingTargetStruct { CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const { DataModel::WrappedStructEncoder encoder{ aWriter, aTag }; - encoder.Encode(to_underlying(Fields::kTargetTime), targetTime); + encoder.Encode(to_underlying(Fields::kTargetTimeMinutesPastMidnight), targetTimeMinutesPastMidnight); encoder.Encode(to_underlying(Fields::kTargetSoC), targetSoC); encoder.Encode(to_underlying(Fields::kAddedEnergy), addedEnergy); return encoder.Finalize(); @@ -15783,9 +15783,9 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) CHIP_ERROR err = CHIP_NO_ERROR; const uint8_t __context_tag = std::get(__element); - if (__context_tag == to_underlying(Fields::kTargetTime)) + if (__context_tag == to_underlying(Fields::kTargetTimeMinutesPastMidnight)) { - err = DataModel::Decode(reader, targetTime); + err = DataModel::Decode(reader, targetTimeMinutesPastMidnight); } else if (__context_tag == to_underlying(Fields::kTargetSoC)) { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 9438ed24a7cd5f..7c90c8a9d5a3e1 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -21865,15 +21865,15 @@ namespace Structs { namespace ChargingTargetStruct { enum class Fields : uint8_t { - kTargetTime = 0, - kTargetSoC = 1, - kAddedEnergy = 2, + kTargetTimeMinutesPastMidnight = 0, + kTargetSoC = 1, + kAddedEnergy = 2, }; struct Type { public: - uint16_t targetTime = static_cast(0); + uint16_t targetTimeMinutesPastMidnight = static_cast(0); Optional targetSoC; Optional addedEnergy; @@ -22466,9 +22466,9 @@ struct TypeInfo namespace SessionDuration { struct TypeInfo { - using Type = uint32_t; - using DecodableType = uint32_t; - using DecodableArgType = uint32_t; + using Type = chip::app::DataModel::Nullable; + using DecodableType = chip::app::DataModel::Nullable; + using DecodableArgType = const chip::app::DataModel::Nullable &; static constexpr ClusterId GetClusterId() { return Clusters::EnergyEvse::Id; } static constexpr AttributeId GetAttributeId() { return Attributes::SessionDuration::Id; } @@ -22478,9 +22478,9 @@ struct TypeInfo namespace SessionEnergyCharged { struct TypeInfo { - using Type = int64_t; - using DecodableType = int64_t; - using DecodableArgType = int64_t; + using Type = chip::app::DataModel::Nullable; + using DecodableType = chip::app::DataModel::Nullable; + using DecodableArgType = const chip::app::DataModel::Nullable &; static constexpr ClusterId GetClusterId() { return Clusters::EnergyEvse::Id; } static constexpr AttributeId GetAttributeId() { return Attributes::SessionEnergyCharged::Id; } @@ -22490,9 +22490,9 @@ struct TypeInfo namespace SessionEnergyDischarged { struct TypeInfo { - using Type = int64_t; - using DecodableType = int64_t; - using DecodableArgType = int64_t; + using Type = chip::app::DataModel::Nullable; + using DecodableType = chip::app::DataModel::Nullable; + using DecodableArgType = const chip::app::DataModel::Nullable &; static constexpr ClusterId GetClusterId() { return Clusters::EnergyEvse::Id; } static constexpr AttributeId GetAttributeId() { return Attributes::SessionEnergyDischarged::Id; } @@ -22568,9 +22568,9 @@ struct TypeInfo Attributes::BatteryCapacity::TypeInfo::DecodableType batteryCapacity; Attributes::VehicleID::TypeInfo::DecodableType vehicleID; Attributes::SessionID::TypeInfo::DecodableType sessionID; - Attributes::SessionDuration::TypeInfo::DecodableType sessionDuration = static_cast(0); - Attributes::SessionEnergyCharged::TypeInfo::DecodableType sessionEnergyCharged = static_cast(0); - Attributes::SessionEnergyDischarged::TypeInfo::DecodableType sessionEnergyDischarged = static_cast(0); + Attributes::SessionDuration::TypeInfo::DecodableType sessionDuration; + Attributes::SessionEnergyCharged::TypeInfo::DecodableType sessionEnergyCharged; + Attributes::SessionEnergyDischarged::TypeInfo::DecodableType sessionEnergyDischarged; Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::EventList::TypeInfo::DecodableType eventList; @@ -22759,7 +22759,7 @@ struct Type static constexpr ClusterId GetClusterId() { return Clusters::EnergyEvse::Id; } static constexpr bool kIsFabricScoped = false; - uint32_t sessionID = static_cast(0); + DataModel::Nullable sessionID; StateEnum state = static_cast(0); FaultStateEnum faultStatePreviousState = static_cast(0); FaultStateEnum faultStateCurrentState = static_cast(0); @@ -22774,7 +22774,7 @@ struct DecodableType static constexpr EventId GetEventId() { return Events::Fault::Id; } static constexpr ClusterId GetClusterId() { return Clusters::EnergyEvse::Id; } - uint32_t sessionID = static_cast(0); + DataModel::Nullable sessionID; StateEnum state = static_cast(0); FaultStateEnum faultStatePreviousState = static_cast(0); FaultStateEnum faultStateCurrentState = static_cast(0); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 82097029565e8f..7948d81d41f181 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -6874,7 +6874,7 @@ class DeviceEnergyManagementPowerAdjustRequest : public ClusterCommand DeviceEnergyManagementPowerAdjustRequest(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("power-adjust-request", credsIssuerConfig) { - AddArgument("Power", INT64_MIN, INT64_MAX, &mRequest.power); + AddArgument("Power", 0, UINT64_MAX, &mRequest.power); AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration); ClusterCommand::AddArguments(); } @@ -19583,9 +19583,9 @@ void registerClusterDeviceEnergyManagement(Commands & commands, CredentialIssuer WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>( Id, "esastate", 0, UINT8_MAX, Attributes::ESAState::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "abs-min-power", INT64_MIN, INT64_MAX, Attributes::AbsMinPower::Id, + make_unique>(Id, "abs-min-power", 0, UINT64_MAX, Attributes::AbsMinPower::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "abs-max-power", INT64_MIN, INT64_MAX, Attributes::AbsMaxPower::Id, + make_unique>(Id, "abs-max-power", 0, UINT64_MAX, Attributes::AbsMaxPower::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>>( @@ -19752,13 +19752,15 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c Id, "vehicle-id", Attributes::VehicleID::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "session-id", 0, UINT32_MAX, Attributes::SessionID::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "session-duration", 0, UINT32_MAX, Attributes::SessionDuration::Id, - WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "session-energy-charged", 0, UINT64_MAX, Attributes::SessionEnergyCharged::Id, - WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "session-energy-discharged", 0, UINT64_MAX, - Attributes::SessionEnergyDischarged::Id, WriteCommandType::kForceWrite, - credsIssuerConfig), // + make_unique>>(Id, "session-duration", 0, UINT32_MAX, + Attributes::SessionDuration::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>>(Id, "session-energy-charged", 0, UINT64_MAX, + Attributes::SessionEnergyCharged::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>>(Id, "session-energy-discharged", 0, UINT64_MAX, + Attributes::SessionEnergyDischarged::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "generated-command-list", Attributes::GeneratedCommandList::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp index 7aeb538c962c95..155f91f1db84c9 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp @@ -3215,13 +3215,15 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label, // Copy to track which members we already processed. Json::Value valueCopy(value); - ReturnErrorOnFailure( - ComplexArgumentParser::EnsureMemberExist("ChargingTargetStruct.targetTime", "targetTime", value.isMember("targetTime"))); + ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist("ChargingTargetStruct.targetTimeMinutesPastMidnight", + "targetTimeMinutesPastMidnight", + value.isMember("targetTimeMinutesPastMidnight"))); char labelWithMember[kMaxLabelLength]; - snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "targetTime"); - ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.targetTime, value["targetTime"])); - valueCopy.removeMember("targetTime"); + snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "targetTimeMinutesPastMidnight"); + ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.targetTimeMinutesPastMidnight, + value["targetTimeMinutesPastMidnight"])); + valueCopy.removeMember("targetTimeMinutesPastMidnight"); if (value.isMember("targetSoC")) { @@ -3242,7 +3244,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label, void ComplexArgumentParser::Finalize(chip::app::Clusters::EnergyEvse::Structs::ChargingTargetStruct::Type & request) { - ComplexArgumentParser::Finalize(request.targetTime); + ComplexArgumentParser::Finalize(request.targetTimeMinutesPastMidnight); ComplexArgumentParser::Finalize(request.targetSoC); ComplexArgumentParser::Finalize(request.addedEnergy); } diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 913a28be7583fc..6a56a914177981 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -2862,10 +2862,10 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, { DataModelLogger::LogString(label, indent, "{"); { - CHIP_ERROR err = LogValue("TargetTime", indent + 1, value.targetTime); + CHIP_ERROR err = LogValue("TargetTimeMinutesPastMidnight", indent + 1, value.targetTimeMinutesPastMidnight); if (err != CHIP_NO_ERROR) { - DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'TargetTime'"); + DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'TargetTimeMinutesPastMidnight'"); return err; } } @@ -12031,17 +12031,17 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP return DataModelLogger::LogValue("SessionID", 1, value); } case EnergyEvse::Attributes::SessionDuration::Id: { - uint32_t value; + chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("SessionDuration", 1, value); } case EnergyEvse::Attributes::SessionEnergyCharged::Id: { - int64_t value; + chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("SessionEnergyCharged", 1, value); } case EnergyEvse::Attributes::SessionEnergyDischarged::Id: { - int64_t value; + chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("SessionEnergyDischarged", 1, value); } diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index fb850d2ede4e99..5ff2d4bff4737c 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -78700,7 +78700,7 @@ class DeviceEnergyManagementPowerAdjustRequest : public ClusterCommand { : ClusterCommand("power-adjust-request") { #if MTR_ENABLE_PROVISIONAL - AddArgument("Power", INT64_MIN, INT64_MAX, &mRequest.power); + AddArgument("Power", 0, UINT64_MAX, &mRequest.power); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration); @@ -80524,7 +80524,7 @@ class EnergyEvseSetTargets : public ClusterCommand { for (auto & entry_0 : mRequest.chargingTargets) { MTREnergyEVSEClusterChargingTargetStruct * newElement_0; newElement_0 = [MTREnergyEVSEClusterChargingTargetStruct new]; - newElement_0.targetTime = [NSNumber numberWithUnsignedShort:entry_0.targetTime]; + newElement_0.targetTimeMinutesPastMidnight = [NSNumber numberWithUnsignedShort:entry_0.targetTimeMinutesPastMidnight]; if (entry_0.targetSoC.HasValue()) { newElement_0.targetSoC = [NSNumber numberWithUnsignedChar:entry_0.targetSoC.Value()]; } else { From 460ca152898c432a4ccecf1873e66400f493fa26 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Fri, 15 Dec 2023 09:06:56 +0000 Subject: [PATCH 10/15] Restyled by whitespace --- src/app/zap-templates/common/override.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/zap-templates/common/override.js b/src/app/zap-templates/common/override.js index 098af41e5154e2..6930a0479f0fb7 100644 --- a/src/app/zap-templates/common/override.js +++ b/src/app/zap-templates/common/override.js @@ -78,7 +78,7 @@ function atomicType(arg) case 'amperage_ma': case 'voltage_mv': case 'energy_mwh': - return 'int64_t'; + return 'int64_t'; case 'epoch_us': case 'systime_us': case 'posix_ms': From 3047c5a223db6126fbfca8864dd3c4a6ae41f1e8 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Sat, 16 Dec 2023 19:42:03 +0000 Subject: [PATCH 11/15] Fixed types to be signed=true --- .../zcl/data-model/chip/chip-types.xml | 8 ++--- .../zap-generated/cluster/Commands.h | 32 ++++++++++--------- .../zap-generated/cluster/Commands.h | 8 ++--- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml index 02d81623cc3394..cae3f4a87df8c0 100644 --- a/src/app/zap-templates/zcl/data-model/chip/chip-types.xml +++ b/src/app/zap-templates/zcl/data-model/chip/chip-types.xml @@ -55,10 +55,10 @@ limitations under the License. - - - - + + + + diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 7948d81d41f181..ab6a6372063478 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -7238,8 +7238,8 @@ class EnergyEvseEnableCharging : public ClusterCommand EnergyEvseEnableCharging(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("enable-charging", credsIssuerConfig) { AddArgument("ChargingEnabledUntil", 0, UINT32_MAX, &mRequest.chargingEnabledUntil); - AddArgument("MinimumChargeCurrent", 0, UINT64_MAX, &mRequest.minimumChargeCurrent); - AddArgument("MaximumChargeCurrent", 0, UINT64_MAX, &mRequest.maximumChargeCurrent); + AddArgument("MinimumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.minimumChargeCurrent); + AddArgument("MaximumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumChargeCurrent); ClusterCommand::AddArguments(); } @@ -7278,7 +7278,7 @@ class EnergyEvseEnableDischarging : public ClusterCommand ClusterCommand("enable-discharging", credsIssuerConfig) { AddArgument("DischargingEnabledUntil", 0, UINT32_MAX, &mRequest.dischargingEnabledUntil); - AddArgument("MaximumDischargeCurrent", 0, UINT64_MAX, &mRequest.maximumDischargeCurrent); + AddArgument("MaximumDischargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumDischargeCurrent); ClusterCommand::AddArguments(); } @@ -19708,16 +19708,18 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "discharging-enabled-until", 0, UINT32_MAX, Attributes::DischargingEnabledUntil::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "circuit-capacity", 0, UINT64_MAX, Attributes::CircuitCapacity::Id, + make_unique>(Id, "circuit-capacity", INT64_MIN, INT64_MAX, Attributes::CircuitCapacity::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "minimum-charge-current", 0, UINT64_MAX, Attributes::MinimumChargeCurrent::Id, - WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "maximum-charge-current", 0, UINT64_MAX, Attributes::MaximumChargeCurrent::Id, - WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "maximum-discharge-current", 0, UINT64_MAX, + make_unique>(Id, "minimum-charge-current", INT64_MIN, INT64_MAX, + Attributes::MinimumChargeCurrent::Id, WriteCommandType::kForceWrite, + credsIssuerConfig), // + make_unique>(Id, "maximum-charge-current", INT64_MIN, INT64_MAX, + Attributes::MaximumChargeCurrent::Id, WriteCommandType::kForceWrite, + credsIssuerConfig), // + make_unique>(Id, "maximum-discharge-current", INT64_MIN, INT64_MAX, Attributes::MaximumDischargeCurrent::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "user-maximum-charge-current", 0, UINT64_MAX, + make_unique>(Id, "user-maximum-charge-current", INT64_MIN, INT64_MAX, Attributes::UserMaximumChargeCurrent::Id, WriteCommandType::kWrite, credsIssuerConfig), // make_unique>(Id, "randomization-delay-window", 0, UINT32_MAX, @@ -19733,8 +19735,8 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "next-charge-target-time", 0, UINT32_MAX, Attributes::NextChargeTargetTime::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "next-charge-required-energy", 0, UINT64_MAX, - Attributes::NextChargeRequiredEnergy::Id, + make_unique>>(Id, "next-charge-required-energy", INT64_MIN, + INT64_MAX, Attributes::NextChargeRequiredEnergy::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "next-charge-target-so-c", 0, UINT8_MAX, Attributes::NextChargeTargetSoC::Id, WriteCommandType::kForceWrite, @@ -19745,7 +19747,7 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>( Id, "state-of-charge", 0, UINT8_MAX, Attributes::StateOfCharge::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "battery-capacity", 0, UINT64_MAX, + make_unique>>(Id, "battery-capacity", INT64_MIN, INT64_MAX, Attributes::BatteryCapacity::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( @@ -19755,10 +19757,10 @@ void registerClusterEnergyEvse(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "session-duration", 0, UINT32_MAX, Attributes::SessionDuration::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "session-energy-charged", 0, UINT64_MAX, + make_unique>>(Id, "session-energy-charged", INT64_MIN, INT64_MAX, Attributes::SessionEnergyCharged::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>(Id, "session-energy-discharged", 0, UINT64_MAX, + make_unique>>(Id, "session-energy-discharged", INT64_MIN, INT64_MAX, Attributes::SessionEnergyDischarged::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 5ff2d4bff4737c..6d158196626b71 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -80320,10 +80320,10 @@ class EnergyEvseEnableCharging : public ClusterCommand { AddArgument("ChargingEnabledUntil", 0, UINT32_MAX, &mRequest.chargingEnabledUntil); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MinimumChargeCurrent", 0, UINT64_MAX, &mRequest.minimumChargeCurrent); + AddArgument("MinimumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.minimumChargeCurrent); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MaximumChargeCurrent", 0, UINT64_MAX, &mRequest.maximumChargeCurrent); + AddArgument("MaximumChargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumChargeCurrent); #endif // MTR_ENABLE_PROVISIONAL ClusterCommand::AddArguments(); } @@ -80389,7 +80389,7 @@ class EnergyEvseEnableDischarging : public ClusterCommand { AddArgument("DischargingEnabledUntil", 0, UINT32_MAX, &mRequest.dischargingEnabledUntil); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL - AddArgument("MaximumDischargeCurrent", 0, UINT64_MAX, &mRequest.maximumDischargeCurrent); + AddArgument("MaximumDischargeCurrent", INT64_MIN, INT64_MAX, &mRequest.maximumDischargeCurrent); #endif // MTR_ENABLE_PROVISIONAL ClusterCommand::AddArguments(); } @@ -81481,7 +81481,7 @@ class WriteEnergyEvseUserMaximumChargeCurrent : public WriteAttribute { : WriteAttribute("user-maximum-charge-current") { AddArgument("attr-name", "user-maximum-charge-current"); - AddArgument("attr-value", 0, UINT64_MAX, &mValue); + AddArgument("attr-value", INT64_MIN, INT64_MAX, &mValue); WriteAttribute::AddArguments(); } From e10f2cc4db2004e693a23a08eed4371ef690541e Mon Sep 17 00:00:00 2001 From: James Harrow Date: Sat, 16 Dec 2023 19:51:11 +0000 Subject: [PATCH 12/15] Fixed 31032 - revert removal of side="server". --- .../zcl/data-model/chip/energy-evse-cluster.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml index 49457150b71754..874a112c49f29b 100644 --- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml @@ -169,11 +169,11 @@ limitations under the License. The GetTargetsResponse is sent in response to the GetTargets Command. - + EVConnected - + EVNotDetected @@ -181,27 +181,27 @@ limitations under the License. - + EnergyTransferStarted - + EnergyTransferStopped - + Fault - + RFID From 711851c1acbc99e6f54d171428eaebb4e2f879c5 Mon Sep 17 00:00:00 2001 From: James Harrow Date: Sat, 16 Dec 2023 20:16:02 +0000 Subject: [PATCH 13/15] regen_all.py --- zzz_generated/chip-tool/zap-generated/cluster/Commands.h | 6 +++--- .../darwin-framework-tool/zap-generated/cluster/Commands.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index ab6a6372063478..0ab3cd79e655bb 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -6874,7 +6874,7 @@ class DeviceEnergyManagementPowerAdjustRequest : public ClusterCommand DeviceEnergyManagementPowerAdjustRequest(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("power-adjust-request", credsIssuerConfig) { - AddArgument("Power", 0, UINT64_MAX, &mRequest.power); + AddArgument("Power", INT64_MIN, INT64_MAX, &mRequest.power); AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration); ClusterCommand::AddArguments(); } @@ -19583,9 +19583,9 @@ void registerClusterDeviceEnergyManagement(Commands & commands, CredentialIssuer WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>( Id, "esastate", 0, UINT8_MAX, Attributes::ESAState::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "abs-min-power", 0, UINT64_MAX, Attributes::AbsMinPower::Id, + make_unique>(Id, "abs-min-power", INT64_MIN, INT64_MAX, Attributes::AbsMinPower::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>(Id, "abs-max-power", 0, UINT64_MAX, Attributes::AbsMaxPower::Id, + make_unique>(Id, "abs-max-power", INT64_MIN, INT64_MAX, Attributes::AbsMaxPower::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>>( diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 6d158196626b71..50b3acfbcfbf44 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -78700,7 +78700,7 @@ class DeviceEnergyManagementPowerAdjustRequest : public ClusterCommand { : ClusterCommand("power-adjust-request") { #if MTR_ENABLE_PROVISIONAL - AddArgument("Power", 0, UINT64_MAX, &mRequest.power); + AddArgument("Power", INT64_MIN, INT64_MAX, &mRequest.power); #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL AddArgument("Duration", 0, UINT32_MAX, &mRequest.duration); From b515c33e8186018c2f437a8d91a0cf80a028467e Mon Sep 17 00:00:00 2001 From: James Harrow Date: Mon, 18 Dec 2023 17:41:51 +0000 Subject: [PATCH 14/15] Change to cause restyled to re-run after failure. :( --- .../zcl/data-model/chip/device-energy-management-cluster.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml index a07ac6d0d505e1..d0042d22f5c3b8 100644 --- a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml @@ -1,4 +1,4 @@ - +