blob: f4c013d19930f2d7ea6468722b1e9c637f4de742 [file] [log] [blame]
/*
*
* Copyright (c) 2022 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#import "MTREventTLVValueDecoder_Internal.h"
#import "MTRStructsObjc.h"
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app-common/zap-generated/ids/Events.h>
#include <app/EventHeader.h>
#include <app/EventLoggingTypes.h>
#include <app/data-model/DecodableList.h>
#include <app/data-model/Decode.h>
#include <lib/support/TypeTraits.h>
using namespace chip;
using namespace chip::app;
id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aReader, CHIP_ERROR * aError)
{
switch (aPath.mClusterId) {
case Clusters::Identify::Id: {
using namespace Clusters::Identify;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Groups::Id: {
using namespace Clusters::Groups;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Scenes::Id: {
using namespace Clusters::Scenes;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OnOff::Id: {
using namespace Clusters::OnOff;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OnOffSwitchConfiguration::Id: {
using namespace Clusters::OnOffSwitchConfiguration;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::LevelControl::Id: {
using namespace Clusters::LevelControl;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::BinaryInputBasic::Id: {
using namespace Clusters::BinaryInputBasic;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Descriptor::Id: {
using namespace Clusters::Descriptor;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Binding::Id: {
using namespace Clusters::Binding;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::AccessControl::Id: {
using namespace Clusters::AccessControl;
switch (aPath.mEventId) {
case Events::AccessControlEntryChanged::Id: {
Events::AccessControlEntryChanged::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRAccessControlClusterAccessControlEntryChangedEvent new];
do {
NSNumber * _Nullable memberValue;
if (cppValue.adminNodeID.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.adminNodeID.Value()];
}
value.adminNodeID = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.adminPasscodeID.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.adminPasscodeID.Value()];
}
value.adminPasscodeID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.changeType)];
value.changeType = memberValue;
} while (0);
do {
MTRAccessControlClusterAccessControlEntry * _Nullable memberValue;
if (cppValue.latestValue.IsNull()) {
memberValue = nil;
} else {
memberValue = [MTRAccessControlClusterAccessControlEntry new];
memberValue.privilege =
[NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.latestValue.Value().privilege)];
memberValue.authMode =
[NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.latestValue.Value().authMode)];
if (cppValue.latestValue.Value().subjects.IsNull()) {
memberValue.subjects = nil;
} else {
{ // Scope for our temporary variables
auto * array_3 = [NSMutableArray new];
auto iter_3 = cppValue.latestValue.Value().subjects.Value().begin();
while (iter_3.Next()) {
auto & entry_3 = iter_3.GetValue();
NSNumber * newElement_3;
newElement_3 = [NSNumber numberWithUnsignedLongLong:entry_3];
[array_3 addObject:newElement_3];
}
CHIP_ERROR err = iter_3.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue.subjects = array_3;
}
}
if (cppValue.latestValue.Value().targets.IsNull()) {
memberValue.targets = nil;
} else {
{ // Scope for our temporary variables
auto * array_3 = [NSMutableArray new];
auto iter_3 = cppValue.latestValue.Value().targets.Value().begin();
while (iter_3.Next()) {
auto & entry_3 = iter_3.GetValue();
MTRAccessControlClusterTarget * newElement_3;
newElement_3 = [MTRAccessControlClusterTarget new];
if (entry_3.cluster.IsNull()) {
newElement_3.cluster = nil;
} else {
newElement_3.cluster = [NSNumber numberWithUnsignedInt:entry_3.cluster.Value()];
}
if (entry_3.endpoint.IsNull()) {
newElement_3.endpoint = nil;
} else {
newElement_3.endpoint = [NSNumber numberWithUnsignedShort:entry_3.endpoint.Value()];
}
if (entry_3.deviceType.IsNull()) {
newElement_3.deviceType = nil;
} else {
newElement_3.deviceType = [NSNumber numberWithUnsignedInt:entry_3.deviceType.Value()];
}
[array_3 addObject:newElement_3];
}
CHIP_ERROR err = iter_3.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue.targets = array_3;
}
}
memberValue.fabricIndex = [NSNumber numberWithUnsignedChar:cppValue.latestValue.Value().fabricIndex];
}
value.latestValue = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex];
value.fabricIndex = memberValue;
} while (0);
return value;
}
case Events::AccessControlExtensionChanged::Id: {
Events::AccessControlExtensionChanged::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRAccessControlClusterAccessControlExtensionChangedEvent new];
do {
NSNumber * _Nullable memberValue;
if (cppValue.adminNodeID.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.adminNodeID.Value()];
}
value.adminNodeID = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.adminPasscodeID.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.adminPasscodeID.Value()];
}
value.adminPasscodeID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.changeType)];
value.changeType = memberValue;
} while (0);
do {
MTRAccessControlClusterExtensionEntry * _Nullable memberValue;
if (cppValue.latestValue.IsNull()) {
memberValue = nil;
} else {
memberValue = [MTRAccessControlClusterExtensionEntry new];
memberValue.data = [NSData dataWithBytes:cppValue.latestValue.Value().data.data()
length:cppValue.latestValue.Value().data.size()];
memberValue.fabricIndex = [NSNumber numberWithUnsignedChar:cppValue.latestValue.Value().fabricIndex];
}
value.latestValue = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex];
value.fabricIndex = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Actions::Id: {
using namespace Clusters::Actions;
switch (aPath.mEventId) {
case Events::StateChanged::Id: {
Events::StateChanged::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRActionsClusterStateChangedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedShort:cppValue.actionID];
value.actionID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.invokeID];
value.invokeID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.newState)];
value.newState = memberValue;
} while (0);
return value;
}
case Events::ActionFailed::Id: {
Events::ActionFailed::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRActionsClusterActionFailedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedShort:cppValue.actionID];
value.actionID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.invokeID];
value.invokeID = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.newState)];
value.newState = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.error)];
value.error = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Basic::Id: {
using namespace Clusters::Basic;
switch (aPath.mEventId) {
case Events::StartUp::Id: {
Events::StartUp::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBasicClusterStartUpEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.softwareVersion];
value.softwareVersion = memberValue;
} while (0);
return value;
}
case Events::ShutDown::Id: {
Events::ShutDown::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBasicClusterShutDownEvent new];
return value;
}
case Events::Leave::Id: {
Events::Leave::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBasicClusterLeaveEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex];
value.fabricIndex = memberValue;
} while (0);
return value;
}
case Events::ReachableChanged::Id: {
Events::ReachableChanged::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBasicClusterReachableChangedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithBool:cppValue.reachableNewValue];
value.reachableNewValue = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OtaSoftwareUpdateProvider::Id: {
using namespace Clusters::OtaSoftwareUpdateProvider;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OtaSoftwareUpdateRequestor::Id: {
using namespace Clusters::OtaSoftwareUpdateRequestor;
switch (aPath.mEventId) {
case Events::StateTransition::Id: {
Events::StateTransition::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTROTASoftwareUpdateRequestorClusterStateTransitionEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.previousState)];
value.previousState = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.newState)];
value.newState = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.reason)];
value.reason = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.targetSoftwareVersion.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedInt:cppValue.targetSoftwareVersion.Value()];
}
value.targetSoftwareVersion = memberValue;
} while (0);
return value;
}
case Events::VersionApplied::Id: {
Events::VersionApplied::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.softwareVersion];
value.softwareVersion = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedShort:cppValue.productID];
value.productID = memberValue;
} while (0);
return value;
}
case Events::DownloadError::Id: {
Events::DownloadError::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.softwareVersion];
value.softwareVersion = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.bytesDownloaded];
value.bytesDownloaded = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.progressPercent.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedChar:cppValue.progressPercent.Value()];
}
value.progressPercent = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.platformCode.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithLongLong:cppValue.platformCode.Value()];
}
value.platformCode = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::LocalizationConfiguration::Id: {
using namespace Clusters::LocalizationConfiguration;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::TimeFormatLocalization::Id: {
using namespace Clusters::TimeFormatLocalization;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::UnitLocalization::Id: {
using namespace Clusters::UnitLocalization;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::PowerSourceConfiguration::Id: {
using namespace Clusters::PowerSourceConfiguration;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::PowerSource::Id: {
using namespace Clusters::PowerSource;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::GeneralCommissioning::Id: {
using namespace Clusters::GeneralCommissioning;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::NetworkCommissioning::Id: {
using namespace Clusters::NetworkCommissioning;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::DiagnosticLogs::Id: {
using namespace Clusters::DiagnosticLogs;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::GeneralDiagnostics::Id: {
using namespace Clusters::GeneralDiagnostics;
switch (aPath.mEventId) {
case Events::HardwareFaultChange::Id: {
Events::HardwareFaultChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent new];
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.current.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.current = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.previous.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.previous = memberValue;
} while (0);
return value;
}
case Events::RadioFaultChange::Id: {
Events::RadioFaultChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRGeneralDiagnosticsClusterRadioFaultChangeEvent new];
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.current.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.current = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.previous.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.previous = memberValue;
} while (0);
return value;
}
case Events::NetworkFaultChange::Id: {
Events::NetworkFaultChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent new];
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.current.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.current = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.previous.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.previous = memberValue;
} while (0);
return value;
}
case Events::BootReason::Id: {
Events::BootReason::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRGeneralDiagnosticsClusterBootReasonEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.bootReason)];
value.bootReason = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::SoftwareDiagnostics::Id: {
using namespace Clusters::SoftwareDiagnostics;
switch (aPath.mEventId) {
case Events::SoftwareFault::Id: {
Events::SoftwareFault::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSoftwareDiagnosticsClusterSoftwareFaultEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.id];
value.id = memberValue;
} while (0);
do {
NSString * _Nullable memberValue;
if (cppValue.name.HasValue()) {
memberValue = [[NSString alloc] initWithBytes:cppValue.name.Value().data()
length:cppValue.name.Value().size()
encoding:NSUTF8StringEncoding];
} else {
memberValue = nil;
}
value.name = memberValue;
} while (0);
do {
NSData * _Nullable memberValue;
if (cppValue.faultRecording.HasValue()) {
memberValue = [NSData dataWithBytes:cppValue.faultRecording.Value().data()
length:cppValue.faultRecording.Value().size()];
} else {
memberValue = nil;
}
value.faultRecording = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ThreadNetworkDiagnostics::Id: {
using namespace Clusters::ThreadNetworkDiagnostics;
switch (aPath.mEventId) {
case Events::ConnectionStatus::Id: {
Events::ConnectionStatus::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.connectionStatus)];
value.connectionStatus = memberValue;
} while (0);
return value;
}
case Events::NetworkFaultChange::Id: {
Events::NetworkFaultChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent new];
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.current.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.current = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.previous.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.previous = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::WiFiNetworkDiagnostics::Id: {
using namespace Clusters::WiFiNetworkDiagnostics;
switch (aPath.mEventId) {
case Events::Disconnection::Id: {
Events::Disconnection::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedShort:cppValue.reasonCode];
value.reasonCode = memberValue;
} while (0);
return value;
}
case Events::AssociationFailure::Id: {
Events::AssociationFailure::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.associationFailure)];
value.associationFailure = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedShort:cppValue.status];
value.status = memberValue;
} while (0);
return value;
}
case Events::ConnectionStatus::Id: {
Events::ConnectionStatus::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.connectionStatus)];
value.connectionStatus = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::EthernetNetworkDiagnostics::Id: {
using namespace Clusters::EthernetNetworkDiagnostics;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::BridgedDeviceBasic::Id: {
using namespace Clusters::BridgedDeviceBasic;
switch (aPath.mEventId) {
case Events::StartUp::Id: {
Events::StartUp::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBridgedDeviceBasicClusterStartUpEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedInt:cppValue.softwareVersion];
value.softwareVersion = memberValue;
} while (0);
return value;
}
case Events::ShutDown::Id: {
Events::ShutDown::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBridgedDeviceBasicClusterShutDownEvent new];
return value;
}
case Events::Leave::Id: {
Events::Leave::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBridgedDeviceBasicClusterLeaveEvent new];
return value;
}
case Events::ReachableChanged::Id: {
Events::ReachableChanged::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBridgedDeviceBasicClusterReachableChangedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithBool:cppValue.reachableNewValue];
value.reachableNewValue = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Switch::Id: {
using namespace Clusters::Switch;
switch (aPath.mEventId) {
case Events::SwitchLatched::Id: {
Events::SwitchLatched::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterSwitchLatchedEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.newPosition];
value.newPosition = memberValue;
} while (0);
return value;
}
case Events::InitialPress::Id: {
Events::InitialPress::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterInitialPressEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.newPosition];
value.newPosition = memberValue;
} while (0);
return value;
}
case Events::LongPress::Id: {
Events::LongPress::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterLongPressEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.newPosition];
value.newPosition = memberValue;
} while (0);
return value;
}
case Events::ShortRelease::Id: {
Events::ShortRelease::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterShortReleaseEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.previousPosition];
value.previousPosition = memberValue;
} while (0);
return value;
}
case Events::LongRelease::Id: {
Events::LongRelease::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterLongReleaseEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.previousPosition];
value.previousPosition = memberValue;
} while (0);
return value;
}
case Events::MultiPressOngoing::Id: {
Events::MultiPressOngoing::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterMultiPressOngoingEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.newPosition];
value.newPosition = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.currentNumberOfPressesCounted];
value.currentNumberOfPressesCounted = memberValue;
} while (0);
return value;
}
case Events::MultiPressComplete::Id: {
Events::MultiPressComplete::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRSwitchClusterMultiPressCompleteEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.newPosition];
value.newPosition = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.totalNumberOfPressesCounted];
value.totalNumberOfPressesCounted = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::AdministratorCommissioning::Id: {
using namespace Clusters::AdministratorCommissioning;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OperationalCredentials::Id: {
using namespace Clusters::OperationalCredentials;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::GroupKeyManagement::Id: {
using namespace Clusters::GroupKeyManagement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::FixedLabel::Id: {
using namespace Clusters::FixedLabel;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::UserLabel::Id: {
using namespace Clusters::UserLabel;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::BooleanState::Id: {
using namespace Clusters::BooleanState;
switch (aPath.mEventId) {
case Events::StateChange::Id: {
Events::StateChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRBooleanStateClusterStateChangeEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithBool:cppValue.stateValue];
value.stateValue = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ModeSelect::Id: {
using namespace Clusters::ModeSelect;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::DoorLock::Id: {
using namespace Clusters::DoorLock;
switch (aPath.mEventId) {
case Events::DoorLockAlarm::Id: {
Events::DoorLockAlarm::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRDoorLockClusterDoorLockAlarmEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.alarmCode)];
value.alarmCode = memberValue;
} while (0);
return value;
}
case Events::DoorStateChange::Id: {
Events::DoorStateChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRDoorLockClusterDoorStateChangeEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.doorState)];
value.doorState = memberValue;
} while (0);
return value;
}
case Events::LockOperation::Id: {
Events::LockOperation::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRDoorLockClusterLockOperationEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.lockOperationType)];
value.lockOperationType = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.operationSource)];
value.operationSource = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.userIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.userIndex.Value()];
}
value.userIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.fabricIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex.Value()];
}
value.fabricIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.sourceNode.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.sourceNode.Value()];
}
value.sourceNode = memberValue;
} while (0);
do {
NSArray * _Nullable memberValue;
if (cppValue.credentials.HasValue()) {
if (cppValue.credentials.Value().IsNull()) {
memberValue = nil;
} else {
{ // Scope for our temporary variables
auto * array_2 = [NSMutableArray new];
auto iter_2 = cppValue.credentials.Value().Value().begin();
while (iter_2.Next()) {
auto & entry_2 = iter_2.GetValue();
MTRDoorLockClusterDlCredential * newElement_2;
newElement_2 = [MTRDoorLockClusterDlCredential new];
newElement_2.credentialType =
[NSNumber numberWithUnsignedChar:chip::to_underlying(entry_2.credentialType)];
newElement_2.credentialIndex = [NSNumber numberWithUnsignedShort:entry_2.credentialIndex];
[array_2 addObject:newElement_2];
}
CHIP_ERROR err = iter_2.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_2;
}
}
} else {
memberValue = nil;
}
value.credentials = memberValue;
} while (0);
return value;
}
case Events::LockOperationError::Id: {
Events::LockOperationError::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRDoorLockClusterLockOperationErrorEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.lockOperationType)];
value.lockOperationType = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.operationSource)];
value.operationSource = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.operationError)];
value.operationError = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.userIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.userIndex.Value()];
}
value.userIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.fabricIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex.Value()];
}
value.fabricIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.sourceNode.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.sourceNode.Value()];
}
value.sourceNode = memberValue;
} while (0);
do {
NSArray * _Nullable memberValue;
if (cppValue.credentials.HasValue()) {
if (cppValue.credentials.Value().IsNull()) {
memberValue = nil;
} else {
{ // Scope for our temporary variables
auto * array_2 = [NSMutableArray new];
auto iter_2 = cppValue.credentials.Value().Value().begin();
while (iter_2.Next()) {
auto & entry_2 = iter_2.GetValue();
MTRDoorLockClusterDlCredential * newElement_2;
newElement_2 = [MTRDoorLockClusterDlCredential new];
newElement_2.credentialType =
[NSNumber numberWithUnsignedChar:chip::to_underlying(entry_2.credentialType)];
newElement_2.credentialIndex = [NSNumber numberWithUnsignedShort:entry_2.credentialIndex];
[array_2 addObject:newElement_2];
}
CHIP_ERROR err = iter_2.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_2;
}
}
} else {
memberValue = nil;
}
value.credentials = memberValue;
} while (0);
return value;
}
case Events::LockUserChange::Id: {
Events::LockUserChange::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRDoorLockClusterLockUserChangeEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.lockDataType)];
value.lockDataType = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.dataOperationType)];
value.dataOperationType = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.operationSource)];
value.operationSource = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.userIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.userIndex.Value()];
}
value.userIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.fabricIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex.Value()];
}
value.fabricIndex = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.sourceNode.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedLongLong:cppValue.sourceNode.Value()];
}
value.sourceNode = memberValue;
} while (0);
do {
NSNumber * _Nullable memberValue;
if (cppValue.dataIndex.IsNull()) {
memberValue = nil;
} else {
memberValue = [NSNumber numberWithUnsignedShort:cppValue.dataIndex.Value()];
}
value.dataIndex = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::WindowCovering::Id: {
using namespace Clusters::WindowCovering;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::BarrierControl::Id: {
using namespace Clusters::BarrierControl;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::PumpConfigurationAndControl::Id: {
using namespace Clusters::PumpConfigurationAndControl;
switch (aPath.mEventId) {
case Events::SupplyVoltageLow::Id: {
Events::SupplyVoltageLow::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent new];
return value;
}
case Events::SupplyVoltageHigh::Id: {
Events::SupplyVoltageHigh::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent new];
return value;
}
case Events::PowerMissingPhase::Id: {
Events::PowerMissingPhase::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent new];
return value;
}
case Events::SystemPressureLow::Id: {
Events::SystemPressureLow::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterSystemPressureLowEvent new];
return value;
}
case Events::SystemPressureHigh::Id: {
Events::SystemPressureHigh::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterSystemPressureHighEvent new];
return value;
}
case Events::DryRunning::Id: {
Events::DryRunning::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterDryRunningEvent new];
return value;
}
case Events::MotorTemperatureHigh::Id: {
Events::MotorTemperatureHigh::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent new];
return value;
}
case Events::PumpMotorFatalFailure::Id: {
Events::PumpMotorFatalFailure::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent new];
return value;
}
case Events::ElectronicTemperatureHigh::Id: {
Events::ElectronicTemperatureHigh::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent new];
return value;
}
case Events::PumpBlocked::Id: {
Events::PumpBlocked::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterPumpBlockedEvent new];
return value;
}
case Events::SensorFailure::Id: {
Events::SensorFailure::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterSensorFailureEvent new];
return value;
}
case Events::ElectronicNonFatalFailure::Id: {
Events::ElectronicNonFatalFailure::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent new];
return value;
}
case Events::ElectronicFatalFailure::Id: {
Events::ElectronicFatalFailure::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent new];
return value;
}
case Events::GeneralFault::Id: {
Events::GeneralFault::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterGeneralFaultEvent new];
return value;
}
case Events::Leakage::Id: {
Events::Leakage::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterLeakageEvent new];
return value;
}
case Events::AirDetection::Id: {
Events::AirDetection::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterAirDetectionEvent new];
return value;
}
case Events::TurbineOperation::Id: {
Events::TurbineOperation::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRPumpConfigurationAndControlClusterTurbineOperationEvent new];
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Thermostat::Id: {
using namespace Clusters::Thermostat;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::FanControl::Id: {
using namespace Clusters::FanControl;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ThermostatUserInterfaceConfiguration::Id: {
using namespace Clusters::ThermostatUserInterfaceConfiguration;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ColorControl::Id: {
using namespace Clusters::ColorControl;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::BallastConfiguration::Id: {
using namespace Clusters::BallastConfiguration;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::IlluminanceMeasurement::Id: {
using namespace Clusters::IlluminanceMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::TemperatureMeasurement::Id: {
using namespace Clusters::TemperatureMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::PressureMeasurement::Id: {
using namespace Clusters::PressureMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::FlowMeasurement::Id: {
using namespace Clusters::FlowMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::RelativeHumidityMeasurement::Id: {
using namespace Clusters::RelativeHumidityMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::OccupancySensing::Id: {
using namespace Clusters::OccupancySensing;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::WakeOnLan::Id: {
using namespace Clusters::WakeOnLan;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::Channel::Id: {
using namespace Clusters::Channel;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::TargetNavigator::Id: {
using namespace Clusters::TargetNavigator;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::MediaPlayback::Id: {
using namespace Clusters::MediaPlayback;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::MediaInput::Id: {
using namespace Clusters::MediaInput;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::LowPower::Id: {
using namespace Clusters::LowPower;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::KeypadInput::Id: {
using namespace Clusters::KeypadInput;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ContentLauncher::Id: {
using namespace Clusters::ContentLauncher;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::AudioOutput::Id: {
using namespace Clusters::AudioOutput;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ApplicationLauncher::Id: {
using namespace Clusters::ApplicationLauncher;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ApplicationBasic::Id: {
using namespace Clusters::ApplicationBasic;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::AccountLogin::Id: {
using namespace Clusters::AccountLogin;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::ElectricalMeasurement::Id: {
using namespace Clusters::ElectricalMeasurement;
switch (aPath.mEventId) {
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
case Clusters::UnitTesting::Id: {
using namespace Clusters::UnitTesting;
switch (aPath.mEventId) {
case Events::TestEvent::Id: {
Events::TestEvent::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRUnitTestingClusterTestEventEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.arg1];
value.arg1 = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.arg2)];
value.arg2 = memberValue;
} while (0);
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithBool:cppValue.arg3];
value.arg3 = memberValue;
} while (0);
do {
MTRUnitTestingClusterSimpleStruct * _Nonnull memberValue;
memberValue = [MTRUnitTestingClusterSimpleStruct new];
memberValue.a = [NSNumber numberWithUnsignedChar:cppValue.arg4.a];
memberValue.b = [NSNumber numberWithBool:cppValue.arg4.b];
memberValue.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.arg4.c)];
memberValue.d = [NSData dataWithBytes:cppValue.arg4.d.data() length:cppValue.arg4.d.size()];
memberValue.e = [[NSString alloc] initWithBytes:cppValue.arg4.e.data()
length:cppValue.arg4.e.size()
encoding:NSUTF8StringEncoding];
memberValue.f = [NSNumber numberWithUnsignedChar:cppValue.arg4.f.Raw()];
memberValue.g = [NSNumber numberWithFloat:cppValue.arg4.g];
memberValue.h = [NSNumber numberWithDouble:cppValue.arg4.h];
value.arg4 = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.arg5.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
MTRUnitTestingClusterSimpleStruct * newElement_0;
newElement_0 = [MTRUnitTestingClusterSimpleStruct new];
newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
newElement_0.b = [NSNumber numberWithBool:entry_0.b];
newElement_0.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c)];
newElement_0.d = [NSData dataWithBytes:entry_0.d.data() length:entry_0.d.size()];
newElement_0.e = [[NSString alloc] initWithBytes:entry_0.e.data()
length:entry_0.e.size()
encoding:NSUTF8StringEncoding];
newElement_0.f = [NSNumber numberWithUnsignedChar:entry_0.f.Raw()];
newElement_0.g = [NSNumber numberWithFloat:entry_0.g];
newElement_0.h = [NSNumber numberWithDouble:entry_0.h];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.arg5 = memberValue;
} while (0);
do {
NSArray * _Nonnull memberValue;
{ // Scope for our temporary variables
auto * array_0 = [NSMutableArray new];
auto iter_0 = cppValue.arg6.begin();
while (iter_0.Next()) {
auto & entry_0 = iter_0.GetValue();
NSNumber * newElement_0;
newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
[array_0 addObject:newElement_0];
}
CHIP_ERROR err = iter_0.GetStatus();
if (err != CHIP_NO_ERROR) {
*aError = err;
return nil;
}
memberValue = array_0;
}
value.arg6 = memberValue;
} while (0);
return value;
}
case Events::TestFabricScopedEvent::Id: {
Events::TestFabricScopedEvent::DecodableType cppValue;
*aError = DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR) {
return nil;
}
__auto_type * value = [MTRUnitTestingClusterTestFabricScopedEventEvent new];
do {
NSNumber * _Nonnull memberValue;
memberValue = [NSNumber numberWithUnsignedChar:cppValue.fabricIndex];
value.fabricIndex = memberValue;
} while (0);
return value;
}
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
break;
}
default: {
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
}
}
return nil;
}