| /* |
| * |
| * 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; |
| } |
| |
| MTRAccessControlClusterAccessControlEntryChangedEvent * 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; |
| } |
| |
| MTRAccessControlClusterAccessControlExtensionChangedEvent * 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; |
| } |
| |
| MTRActionsClusterStateChangedEvent * 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; |
| } |
| |
| MTRActionsClusterActionFailedEvent * 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; |
| } |
| |
| MTRBasicClusterStartUpEvent * 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; |
| } |
| |
| MTRBasicClusterShutDownEvent * 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; |
| } |
| |
| MTRBasicClusterLeaveEvent * 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; |
| } |
| |
| MTRBasicClusterReachableChangedEvent * 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; |
| } |
| |
| MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent * 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; |
| } |
| |
| MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent * 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; |
| } |
| |
| MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent * 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; |
| } |
| |
| MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent * 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; |
| } |
| |
| MTRGeneralDiagnosticsClusterRadioFaultChangeEvent * 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; |
| } |
| |
| MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent * 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; |
| } |
| |
| MTRGeneralDiagnosticsClusterBootReasonEvent * 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; |
| } |
| |
| MTRSoftwareDiagnosticsClusterSoftwareFaultEvent * 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; |
| } |
| |
| MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent * 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; |
| } |
| |
| MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent * 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; |
| } |
| |
| MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent * 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; |
| } |
| |
| MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent * 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; |
| } |
| |
| MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent * 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; |
| } |
| |
| MTRBridgedDeviceBasicClusterStartUpEvent * 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; |
| } |
| |
| MTRBridgedDeviceBasicClusterShutDownEvent * 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; |
| } |
| |
| MTRBridgedDeviceBasicClusterLeaveEvent * 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; |
| } |
| |
| MTRBridgedDeviceBasicClusterReachableChangedEvent * 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; |
| } |
| |
| MTRSwitchClusterSwitchLatchedEvent * 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; |
| } |
| |
| MTRSwitchClusterInitialPressEvent * 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; |
| } |
| |
| MTRSwitchClusterLongPressEvent * 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; |
| } |
| |
| MTRSwitchClusterShortReleaseEvent * 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; |
| } |
| |
| MTRSwitchClusterLongReleaseEvent * 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; |
| } |
| |
| MTRSwitchClusterMultiPressOngoingEvent * 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; |
| } |
| |
| MTRSwitchClusterMultiPressCompleteEvent * 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; |
| } |
| |
| MTRBooleanStateClusterStateChangeEvent * 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; |
| } |
| |
| MTRDoorLockClusterDoorLockAlarmEvent * 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; |
| } |
| |
| MTRDoorLockClusterDoorStateChangeEvent * 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; |
| } |
| |
| MTRDoorLockClusterLockOperationEvent * 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; |
| } |
| |
| MTRDoorLockClusterLockOperationErrorEvent * 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; |
| } |
| |
| MTRDoorLockClusterLockUserChangeEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterSystemPressureLowEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterSystemPressureHighEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterDryRunningEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterPumpBlockedEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterSensorFailureEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterGeneralFaultEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterLeakageEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterAirDetectionEvent * 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; |
| } |
| |
| MTRPumpConfigurationAndControlClusterTurbineOperationEvent * 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::TestCluster::Id: { |
| using namespace Clusters::TestCluster; |
| switch (aPath.mEventId) { |
| |
| case Events::TestEvent::Id: { |
| Events::TestEvent::DecodableType cppValue; |
| *aError = DataModel::Decode(aReader, cppValue); |
| if (*aError != CHIP_NO_ERROR) { |
| return nil; |
| } |
| |
| MTRTestClusterClusterTestEventEvent * value = [MTRTestClusterClusterTestEventEvent 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 { |
| MTRTestClusterClusterSimpleStruct * _Nonnull memberValue; |
| memberValue = [MTRTestClusterClusterSimpleStruct 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(); |
| MTRTestClusterClusterSimpleStruct * newElement_0; |
| newElement_0 = [MTRTestClusterClusterSimpleStruct 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; |
| } |
| |
| MTRTestClusterClusterTestFabricScopedEventEvent * value = [MTRTestClusterClusterTestFabricScopedEventEvent 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; |
| } |