plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItem.go (746 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * https://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. */ package model import ( "context" "fmt" "github.com/pkg/errors" "github.com/rs/zerolog" . "github.com/apache/plc4x/plc4go/spi/codegen/fields" . "github.com/apache/plc4x/plc4go/spi/codegen/io" "github.com/apache/plc4x/plc4go/spi/utils" ) // Code generated by code-generation. DO NOT EDIT. // S7PayloadUserDataItem is the corresponding interface of S7PayloadUserDataItem type S7PayloadUserDataItem interface { S7PayloadUserDataItemContract S7PayloadUserDataItemRequirements fmt.Stringer utils.LengthAware utils.Serializable utils.Copyable // IsS7PayloadUserDataItem is a marker method to prevent unintentional type checks (interfaces of same signature) IsS7PayloadUserDataItem() // CreateBuilder creates a S7PayloadUserDataItemBuilder CreateS7PayloadUserDataItemBuilder() S7PayloadUserDataItemBuilder } // S7PayloadUserDataItemContract provides a set of functions which can be overwritten by a sub struct type S7PayloadUserDataItemContract interface { // GetReturnCode returns ReturnCode (property field) GetReturnCode() DataTransportErrorCode // GetTransportSize returns TransportSize (property field) GetTransportSize() DataTransportSize // GetDataLength returns DataLength (property field) GetDataLength() uint16 // IsS7PayloadUserDataItem is a marker method to prevent unintentional type checks (interfaces of same signature) IsS7PayloadUserDataItem() // CreateBuilder creates a S7PayloadUserDataItemBuilder CreateS7PayloadUserDataItemBuilder() S7PayloadUserDataItemBuilder } // S7PayloadUserDataItemRequirements provides a set of functions which need to be implemented by a sub struct type S7PayloadUserDataItemRequirements interface { GetLengthInBits(ctx context.Context) uint16 GetLengthInBytes(ctx context.Context) uint16 // GetCpuFunctionGroup returns CpuFunctionGroup (discriminator field) GetCpuFunctionGroup() uint8 // GetCpuFunctionType returns CpuFunctionType (discriminator field) GetCpuFunctionType() uint8 // GetCpuSubfunction returns CpuSubfunction (discriminator field) GetCpuSubfunction() uint8 // GetDataLength returns DataLength (discriminator field) GetDataLength() uint16 } // _S7PayloadUserDataItem is the data-structure of this message type _S7PayloadUserDataItem struct { _SubType interface { S7PayloadUserDataItemContract S7PayloadUserDataItemRequirements } ReturnCode DataTransportErrorCode TransportSize DataTransportSize DataLength uint16 } var _ S7PayloadUserDataItemContract = (*_S7PayloadUserDataItem)(nil) // NewS7PayloadUserDataItem factory function for _S7PayloadUserDataItem func NewS7PayloadUserDataItem(returnCode DataTransportErrorCode, transportSize DataTransportSize, dataLength uint16) *_S7PayloadUserDataItem { return &_S7PayloadUserDataItem{ReturnCode: returnCode, TransportSize: transportSize, DataLength: dataLength} } /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Builder /////////////////////// // S7PayloadUserDataItemBuilder is a builder for S7PayloadUserDataItem type S7PayloadUserDataItemBuilder interface { utils.Copyable // WithMandatoryFields adds all mandatory fields (convenience for using multiple builder calls) WithMandatoryFields(returnCode DataTransportErrorCode, transportSize DataTransportSize, dataLength uint16) S7PayloadUserDataItemBuilder // WithReturnCode adds ReturnCode (property field) WithReturnCode(DataTransportErrorCode) S7PayloadUserDataItemBuilder // WithTransportSize adds TransportSize (property field) WithTransportSize(DataTransportSize) S7PayloadUserDataItemBuilder // WithDataLength adds DataLength (property field) WithDataLength(uint16) S7PayloadUserDataItemBuilder // AsS7PayloadUserDataItemCyclicServicesPush converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesPush() S7PayloadUserDataItemCyclicServicesPushBuilder // AsS7PayloadUserDataItemCyclicServicesChangeDrivenPush converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesChangeDrivenPush() S7PayloadUserDataItemCyclicServicesChangeDrivenPushBuilder // AsS7PayloadUserDataItemCyclicServicesSubscribeRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesSubscribeRequest() S7PayloadUserDataItemCyclicServicesSubscribeRequestBuilder // AsS7PayloadUserDataItemCyclicServicesUnsubscribeRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesUnsubscribeRequest() S7PayloadUserDataItemCyclicServicesUnsubscribeRequestBuilder // AsS7PayloadUserDataItemCyclicServicesSubscribeResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesSubscribeResponse() S7PayloadUserDataItemCyclicServicesSubscribeResponseBuilder // AsS7PayloadUserDataItemCyclicServicesUnsubscribeResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesUnsubscribeResponse() S7PayloadUserDataItemCyclicServicesUnsubscribeResponseBuilder // AsS7PayloadUserDataItemCyclicServicesErrorResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesErrorResponse() S7PayloadUserDataItemCyclicServicesErrorResponseBuilder // AsS7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse() S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponseBuilder // AsS7PayloadDiagnosticMessage converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadDiagnosticMessage() S7PayloadDiagnosticMessageBuilder // AsS7PayloadAlarm8 converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadAlarm8() S7PayloadAlarm8Builder // AsS7PayloadNotify converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadNotify() S7PayloadNotifyBuilder // AsS7PayloadAlarmAckInd converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadAlarmAckInd() S7PayloadAlarmAckIndBuilder // AsS7PayloadAlarmSQ converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadAlarmSQ() S7PayloadAlarmSQBuilder // AsS7PayloadAlarmS converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadAlarmS() S7PayloadAlarmSBuilder // AsS7PayloadAlarmSC converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadAlarmSC() S7PayloadAlarmSCBuilder // AsS7PayloadNotify8 converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadNotify8() S7PayloadNotify8Builder // AsS7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest() S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequestBuilder // AsS7PayloadUserDataItemCpuFunctionReadSzlRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionReadSzlRequest() S7PayloadUserDataItemCpuFunctionReadSzlRequestBuilder // AsS7PayloadUserDataItemCpuFunctionReadSzlResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionReadSzlResponse() S7PayloadUserDataItemCpuFunctionReadSzlResponseBuilder // AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest() S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestBuilder // AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponseBuilder // AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponseBuilder // AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponseBuilder // AsS7PayloadUserDataItemCpuFunctionAlarmAckRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionAlarmAckRequest() S7PayloadUserDataItemCpuFunctionAlarmAckRequestBuilder // AsS7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse() S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponseBuilder // AsS7PayloadUserDataItemCpuFunctionAlarmAckResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionAlarmAckResponse() S7PayloadUserDataItemCpuFunctionAlarmAckResponseBuilder // AsS7PayloadUserDataItemCpuFunctionAlarmQueryRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionAlarmQueryRequest() S7PayloadUserDataItemCpuFunctionAlarmQueryRequestBuilder // AsS7PayloadUserDataItemCpuFunctionAlarmQueryResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemCpuFunctionAlarmQueryResponse() S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilder // AsS7PayloadUserDataItemClkRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkRequest() S7PayloadUserDataItemClkRequestBuilder // AsS7PayloadUserDataItemClkResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkResponse() S7PayloadUserDataItemClkResponseBuilder // AsS7PayloadUserDataItemClkFRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkFRequest() S7PayloadUserDataItemClkFRequestBuilder // AsS7PayloadUserDataItemClkFResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkFResponse() S7PayloadUserDataItemClkFResponseBuilder // AsS7PayloadUserDataItemClkSetRequest converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkSetRequest() S7PayloadUserDataItemClkSetRequestBuilder // AsS7PayloadUserDataItemClkSetResponse converts this build to a subType of S7PayloadUserDataItem. It is always possible to return to current builder using Done() AsS7PayloadUserDataItemClkSetResponse() S7PayloadUserDataItemClkSetResponseBuilder // Build builds the S7PayloadUserDataItem or returns an error if something is wrong PartialBuild() (S7PayloadUserDataItemContract, error) // MustBuild does the same as Build but panics on error PartialMustBuild() S7PayloadUserDataItemContract // Build builds the S7PayloadUserDataItem or returns an error if something is wrong Build() (S7PayloadUserDataItem, error) // MustBuild does the same as Build but panics on error MustBuild() S7PayloadUserDataItem } // NewS7PayloadUserDataItemBuilder() creates a S7PayloadUserDataItemBuilder func NewS7PayloadUserDataItemBuilder() S7PayloadUserDataItemBuilder { return &_S7PayloadUserDataItemBuilder{_S7PayloadUserDataItem: new(_S7PayloadUserDataItem)} } type _S7PayloadUserDataItemChildBuilder interface { utils.Copyable setParent(S7PayloadUserDataItemContract) buildForS7PayloadUserDataItem() (S7PayloadUserDataItem, error) } type _S7PayloadUserDataItemBuilder struct { *_S7PayloadUserDataItem childBuilder _S7PayloadUserDataItemChildBuilder err *utils.MultiError } var _ (S7PayloadUserDataItemBuilder) = (*_S7PayloadUserDataItemBuilder)(nil) func (b *_S7PayloadUserDataItemBuilder) WithMandatoryFields(returnCode DataTransportErrorCode, transportSize DataTransportSize, dataLength uint16) S7PayloadUserDataItemBuilder { return b.WithReturnCode(returnCode).WithTransportSize(transportSize).WithDataLength(dataLength) } func (b *_S7PayloadUserDataItemBuilder) WithReturnCode(returnCode DataTransportErrorCode) S7PayloadUserDataItemBuilder { b.ReturnCode = returnCode return b } func (b *_S7PayloadUserDataItemBuilder) WithTransportSize(transportSize DataTransportSize) S7PayloadUserDataItemBuilder { b.TransportSize = transportSize return b } func (b *_S7PayloadUserDataItemBuilder) WithDataLength(dataLength uint16) S7PayloadUserDataItemBuilder { b.DataLength = dataLength return b } func (b *_S7PayloadUserDataItemBuilder) PartialBuild() (S7PayloadUserDataItemContract, error) { if b.err != nil { return nil, errors.Wrap(b.err, "error occurred during build") } return b._S7PayloadUserDataItem.deepCopy(), nil } func (b *_S7PayloadUserDataItemBuilder) PartialMustBuild() S7PayloadUserDataItemContract { build, err := b.PartialBuild() if err != nil { panic(err) } return build } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesPush() S7PayloadUserDataItemCyclicServicesPushBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesPushBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesPushBuilder().(*_S7PayloadUserDataItemCyclicServicesPushBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesChangeDrivenPush() S7PayloadUserDataItemCyclicServicesChangeDrivenPushBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesChangeDrivenPushBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesChangeDrivenPushBuilder().(*_S7PayloadUserDataItemCyclicServicesChangeDrivenPushBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesSubscribeRequest() S7PayloadUserDataItemCyclicServicesSubscribeRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesSubscribeRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesSubscribeRequestBuilder().(*_S7PayloadUserDataItemCyclicServicesSubscribeRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesUnsubscribeRequest() S7PayloadUserDataItemCyclicServicesUnsubscribeRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesUnsubscribeRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesUnsubscribeRequestBuilder().(*_S7PayloadUserDataItemCyclicServicesUnsubscribeRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesSubscribeResponse() S7PayloadUserDataItemCyclicServicesSubscribeResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesSubscribeResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesSubscribeResponseBuilder().(*_S7PayloadUserDataItemCyclicServicesSubscribeResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesUnsubscribeResponse() S7PayloadUserDataItemCyclicServicesUnsubscribeResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesUnsubscribeResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesUnsubscribeResponseBuilder().(*_S7PayloadUserDataItemCyclicServicesUnsubscribeResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesErrorResponse() S7PayloadUserDataItemCyclicServicesErrorResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesErrorResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesErrorResponseBuilder().(*_S7PayloadUserDataItemCyclicServicesErrorResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse() S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponseBuilder().(*_S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadDiagnosticMessage() S7PayloadDiagnosticMessageBuilder { if cb, ok := b.childBuilder.(S7PayloadDiagnosticMessageBuilder); ok { return cb } cb := NewS7PayloadDiagnosticMessageBuilder().(*_S7PayloadDiagnosticMessageBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadAlarm8() S7PayloadAlarm8Builder { if cb, ok := b.childBuilder.(S7PayloadAlarm8Builder); ok { return cb } cb := NewS7PayloadAlarm8Builder().(*_S7PayloadAlarm8Builder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadNotify() S7PayloadNotifyBuilder { if cb, ok := b.childBuilder.(S7PayloadNotifyBuilder); ok { return cb } cb := NewS7PayloadNotifyBuilder().(*_S7PayloadNotifyBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadAlarmAckInd() S7PayloadAlarmAckIndBuilder { if cb, ok := b.childBuilder.(S7PayloadAlarmAckIndBuilder); ok { return cb } cb := NewS7PayloadAlarmAckIndBuilder().(*_S7PayloadAlarmAckIndBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadAlarmSQ() S7PayloadAlarmSQBuilder { if cb, ok := b.childBuilder.(S7PayloadAlarmSQBuilder); ok { return cb } cb := NewS7PayloadAlarmSQBuilder().(*_S7PayloadAlarmSQBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadAlarmS() S7PayloadAlarmSBuilder { if cb, ok := b.childBuilder.(S7PayloadAlarmSBuilder); ok { return cb } cb := NewS7PayloadAlarmSBuilder().(*_S7PayloadAlarmSBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadAlarmSC() S7PayloadAlarmSCBuilder { if cb, ok := b.childBuilder.(S7PayloadAlarmSCBuilder); ok { return cb } cb := NewS7PayloadAlarmSCBuilder().(*_S7PayloadAlarmSCBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadNotify8() S7PayloadNotify8Builder { if cb, ok := b.childBuilder.(S7PayloadNotify8Builder); ok { return cb } cb := NewS7PayloadNotify8Builder().(*_S7PayloadNotify8Builder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest() S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionReadSzlNoDataRequestBuilder().(*_S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionReadSzlRequest() S7PayloadUserDataItemCpuFunctionReadSzlRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionReadSzlRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionReadSzlRequestBuilder().(*_S7PayloadUserDataItemCpuFunctionReadSzlRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionReadSzlResponse() S7PayloadUserDataItemCpuFunctionReadSzlResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionReadSzlResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionReadSzlResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionReadSzlResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest() S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestBuilder().(*_S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionMsgSubscriptionResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse() S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionAlarmAckRequest() S7PayloadUserDataItemCpuFunctionAlarmAckRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionAlarmAckRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionAlarmAckRequestBuilder().(*_S7PayloadUserDataItemCpuFunctionAlarmAckRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse() S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionAlarmAckErrorResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionAlarmAckResponse() S7PayloadUserDataItemCpuFunctionAlarmAckResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionAlarmAckResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionAlarmAckResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionAlarmAckResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionAlarmQueryRequest() S7PayloadUserDataItemCpuFunctionAlarmQueryRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionAlarmQueryRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionAlarmQueryRequestBuilder().(*_S7PayloadUserDataItemCpuFunctionAlarmQueryRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemCpuFunctionAlarmQueryResponse() S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilder().(*_S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkRequest() S7PayloadUserDataItemClkRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkRequestBuilder().(*_S7PayloadUserDataItemClkRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkResponse() S7PayloadUserDataItemClkResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkResponseBuilder().(*_S7PayloadUserDataItemClkResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkFRequest() S7PayloadUserDataItemClkFRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkFRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkFRequestBuilder().(*_S7PayloadUserDataItemClkFRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkFResponse() S7PayloadUserDataItemClkFResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkFResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkFResponseBuilder().(*_S7PayloadUserDataItemClkFResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkSetRequest() S7PayloadUserDataItemClkSetRequestBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkSetRequestBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkSetRequestBuilder().(*_S7PayloadUserDataItemClkSetRequestBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) AsS7PayloadUserDataItemClkSetResponse() S7PayloadUserDataItemClkSetResponseBuilder { if cb, ok := b.childBuilder.(S7PayloadUserDataItemClkSetResponseBuilder); ok { return cb } cb := NewS7PayloadUserDataItemClkSetResponseBuilder().(*_S7PayloadUserDataItemClkSetResponseBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_S7PayloadUserDataItemBuilder) Build() (S7PayloadUserDataItem, error) { v, err := b.PartialBuild() if err != nil { return nil, errors.Wrap(err, "error occurred during partial build") } if b.childBuilder == nil { return nil, errors.New("no child builder present") } b.childBuilder.setParent(v) return b.childBuilder.buildForS7PayloadUserDataItem() } func (b *_S7PayloadUserDataItemBuilder) MustBuild() S7PayloadUserDataItem { build, err := b.Build() if err != nil { panic(err) } return build } func (b *_S7PayloadUserDataItemBuilder) DeepCopy() any { _copy := b.CreateS7PayloadUserDataItemBuilder().(*_S7PayloadUserDataItemBuilder) _copy.childBuilder = b.childBuilder.DeepCopy().(_S7PayloadUserDataItemChildBuilder) _copy.childBuilder.setParent(_copy) if b.err != nil { _copy.err = b.err.DeepCopy().(*utils.MultiError) } return _copy } // CreateS7PayloadUserDataItemBuilder creates a S7PayloadUserDataItemBuilder func (b *_S7PayloadUserDataItem) CreateS7PayloadUserDataItemBuilder() S7PayloadUserDataItemBuilder { if b == nil { return NewS7PayloadUserDataItemBuilder() } return &_S7PayloadUserDataItemBuilder{_S7PayloadUserDataItem: b.deepCopy()} } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for property fields. /////////////////////// func (m *_S7PayloadUserDataItem) GetReturnCode() DataTransportErrorCode { return m.ReturnCode } func (m *_S7PayloadUserDataItem) GetTransportSize() DataTransportSize { return m.TransportSize } func (m *_S7PayloadUserDataItem) GetDataLength() uint16 { return m.DataLength } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // Deprecated: use the interface for direct cast func CastS7PayloadUserDataItem(structType any) S7PayloadUserDataItem { if casted, ok := structType.(S7PayloadUserDataItem); ok { return casted } if casted, ok := structType.(*S7PayloadUserDataItem); ok { return *casted } return nil } func (m *_S7PayloadUserDataItem) GetTypeName() string { return "S7PayloadUserDataItem" } func (m *_S7PayloadUserDataItem) getLengthInBits(ctx context.Context) uint16 { lengthInBits := uint16(0) // Simple field (returnCode) lengthInBits += 8 // Simple field (transportSize) lengthInBits += 8 // Simple field (dataLength) lengthInBits += 16 return lengthInBits } func (m *_S7PayloadUserDataItem) GetLengthInBits(ctx context.Context) uint16 { return m._SubType.GetLengthInBits(ctx) } func (m *_S7PayloadUserDataItem) GetLengthInBytes(ctx context.Context) uint16 { return m._SubType.GetLengthInBits(ctx) / 8 } func S7PayloadUserDataItemParse[T S7PayloadUserDataItem](ctx context.Context, theBytes []byte, cpuFunctionGroup uint8, cpuFunctionType uint8, cpuSubfunction uint8) (T, error) { return S7PayloadUserDataItemParseWithBuffer[T](ctx, utils.NewReadBufferByteBased(theBytes), cpuFunctionGroup, cpuFunctionType, cpuSubfunction) } func S7PayloadUserDataItemParseWithBufferProducer[T S7PayloadUserDataItem](cpuFunctionGroup uint8, cpuFunctionType uint8, cpuSubfunction uint8) func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) { return func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) { v, err := S7PayloadUserDataItemParseWithBuffer[T](ctx, readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction) if err != nil { var zero T return zero, err } return v, nil } } func S7PayloadUserDataItemParseWithBuffer[T S7PayloadUserDataItem](ctx context.Context, readBuffer utils.ReadBuffer, cpuFunctionGroup uint8, cpuFunctionType uint8, cpuSubfunction uint8) (T, error) { v, err := (&_S7PayloadUserDataItem{}).parse(ctx, readBuffer, cpuFunctionGroup, cpuFunctionType, cpuSubfunction) if err != nil { var zero T return zero, err } vc, ok := v.(T) if !ok { var zero T return zero, errors.Errorf("Unexpected type %T. Expected type %T", v, *new(T)) } return vc, nil } func (m *_S7PayloadUserDataItem) parse(ctx context.Context, readBuffer utils.ReadBuffer, cpuFunctionGroup uint8, cpuFunctionType uint8, cpuSubfunction uint8) (__s7PayloadUserDataItem S7PayloadUserDataItem, err error) { positionAware := readBuffer _ = positionAware if pullErr := readBuffer.PullContext("S7PayloadUserDataItem"); pullErr != nil { return nil, errors.Wrap(pullErr, "Error pulling for S7PayloadUserDataItem") } currentPos := positionAware.GetPos() _ = currentPos returnCode, err := ReadEnumField[DataTransportErrorCode](ctx, "returnCode", "DataTransportErrorCode", ReadEnum(DataTransportErrorCodeByValue, ReadUnsignedByte(readBuffer, uint8(8)))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'returnCode' field")) } m.ReturnCode = returnCode transportSize, err := ReadEnumField[DataTransportSize](ctx, "transportSize", "DataTransportSize", ReadEnum(DataTransportSizeByValue, ReadUnsignedByte(readBuffer, uint8(8)))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'transportSize' field")) } m.TransportSize = transportSize dataLength, err := ReadSimpleField(ctx, "dataLength", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'dataLength' field")) } m.DataLength = dataLength // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type) var _child S7PayloadUserDataItem switch { case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x00 && cpuSubfunction == 0x01: // S7PayloadUserDataItemCyclicServicesPush if _child, err = new(_S7PayloadUserDataItemCyclicServicesPush).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesPush for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x00 && cpuSubfunction == 0x05: // S7PayloadUserDataItemCyclicServicesChangeDrivenPush if _child, err = new(_S7PayloadUserDataItemCyclicServicesChangeDrivenPush).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesChangeDrivenPush for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x04 && cpuSubfunction == 0x01: // S7PayloadUserDataItemCyclicServicesSubscribeRequest if _child, err = new(_S7PayloadUserDataItemCyclicServicesSubscribeRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesSubscribeRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x04 && cpuSubfunction == 0x04: // S7PayloadUserDataItemCyclicServicesUnsubscribeRequest if _child, err = new(_S7PayloadUserDataItemCyclicServicesUnsubscribeRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesUnsubscribeRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x08 && cpuSubfunction == 0x01: // S7PayloadUserDataItemCyclicServicesSubscribeResponse if _child, err = new(_S7PayloadUserDataItemCyclicServicesSubscribeResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesSubscribeResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x08 && cpuSubfunction == 0x04: // S7PayloadUserDataItemCyclicServicesUnsubscribeResponse if _child, err = new(_S7PayloadUserDataItemCyclicServicesUnsubscribeResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesUnsubscribeResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x08 && cpuSubfunction == 0x05 && dataLength == 0x00: // S7PayloadUserDataItemCyclicServicesErrorResponse if _child, err = new(_S7PayloadUserDataItemCyclicServicesErrorResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesErrorResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x02 && cpuFunctionType == 0x08 && cpuSubfunction == 0x05: // S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse if _child, err = new(_S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCyclicServicesChangeDrivenSubscribeResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x03: // S7PayloadDiagnosticMessage if _child, err = new(_S7PayloadDiagnosticMessage).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadDiagnosticMessage for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x05: // S7PayloadAlarm8 if _child, err = new(_S7PayloadAlarm8).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadAlarm8 for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x06: // S7PayloadNotify if _child, err = new(_S7PayloadNotify).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadNotify for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x0c: // S7PayloadAlarmAckInd if _child, err = new(_S7PayloadAlarmAckInd).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadAlarmAckInd for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x11: // S7PayloadAlarmSQ if _child, err = new(_S7PayloadAlarmSQ).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadAlarmSQ for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x12: // S7PayloadAlarmS if _child, err = new(_S7PayloadAlarmS).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadAlarmS for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x13: // S7PayloadAlarmSC if _child, err = new(_S7PayloadAlarmSC).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadAlarmSC for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x00 && cpuSubfunction == 0x16: // S7PayloadNotify8 if _child, err = new(_S7PayloadNotify8).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadNotify8 for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x04 && cpuSubfunction == 0x01 && dataLength == 0x00: // S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest if _child, err = new(_S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionReadSzlNoDataRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x04 && cpuSubfunction == 0x01: // S7PayloadUserDataItemCpuFunctionReadSzlRequest if _child, err = new(_S7PayloadUserDataItemCpuFunctionReadSzlRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionReadSzlRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x01: // S7PayloadUserDataItemCpuFunctionReadSzlResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionReadSzlResponse).parse(ctx, readBuffer, m, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionReadSzlResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x04 && cpuSubfunction == 0x02: // S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest if _child, err = new(_S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x02 && dataLength == 0x00: // S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x02 && dataLength == 0x02: // S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x02 && dataLength == 0x05: // S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x04 && cpuSubfunction == 0x0b: // S7PayloadUserDataItemCpuFunctionAlarmAckRequest if _child, err = new(_S7PayloadUserDataItemCpuFunctionAlarmAckRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionAlarmAckRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x0b && dataLength == 0x00: // S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionAlarmAckErrorResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x0b: // S7PayloadUserDataItemCpuFunctionAlarmAckResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionAlarmAckResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionAlarmAckResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x04 && cpuSubfunction == 0x13: // S7PayloadUserDataItemCpuFunctionAlarmQueryRequest if _child, err = new(_S7PayloadUserDataItemCpuFunctionAlarmQueryRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionAlarmQueryRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x04 && cpuFunctionType == 0x08 && cpuSubfunction == 0x13: // S7PayloadUserDataItemCpuFunctionAlarmQueryResponse if _child, err = new(_S7PayloadUserDataItemCpuFunctionAlarmQueryResponse).parse(ctx, readBuffer, m, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemCpuFunctionAlarmQueryResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x04 && cpuSubfunction == 0x01: // S7PayloadUserDataItemClkRequest if _child, err = new(_S7PayloadUserDataItemClkRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x08 && cpuSubfunction == 0x01: // S7PayloadUserDataItemClkResponse if _child, err = new(_S7PayloadUserDataItemClkResponse).parse(ctx, readBuffer, m, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x04 && cpuSubfunction == 0x03: // S7PayloadUserDataItemClkFRequest if _child, err = new(_S7PayloadUserDataItemClkFRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkFRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x08 && cpuSubfunction == 0x03: // S7PayloadUserDataItemClkFResponse if _child, err = new(_S7PayloadUserDataItemClkFResponse).parse(ctx, readBuffer, m, dataLength, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkFResponse for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x04 && cpuSubfunction == 0x04: // S7PayloadUserDataItemClkSetRequest if _child, err = new(_S7PayloadUserDataItemClkSetRequest).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkSetRequest for type-switch of S7PayloadUserDataItem") } case cpuFunctionGroup == 0x07 && cpuFunctionType == 0x08 && cpuSubfunction == 0x04: // S7PayloadUserDataItemClkSetResponse if _child, err = new(_S7PayloadUserDataItemClkSetResponse).parse(ctx, readBuffer, m, cpuFunctionGroup, cpuFunctionType, cpuSubfunction); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type S7PayloadUserDataItemClkSetResponse for type-switch of S7PayloadUserDataItem") } default: return nil, errors.Errorf("Unmapped type for parameters [cpuFunctionGroup=%v, cpuFunctionType=%v, cpuSubfunction=%v, dataLength=%v]", cpuFunctionGroup, cpuFunctionType, cpuSubfunction, dataLength) } if closeErr := readBuffer.CloseContext("S7PayloadUserDataItem"); closeErr != nil { return nil, errors.Wrap(closeErr, "Error closing for S7PayloadUserDataItem") } return _child, nil } func (pm *_S7PayloadUserDataItem) serializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child S7PayloadUserDataItem, serializeChildFunction func() error) error { // We redirect all calls through client as some methods are only implemented there m := child _ = m positionAware := writeBuffer _ = positionAware log := zerolog.Ctx(ctx) _ = log if pushErr := writeBuffer.PushContext("S7PayloadUserDataItem"); pushErr != nil { return errors.Wrap(pushErr, "Error pushing for S7PayloadUserDataItem") } if err := WriteSimpleEnumField[DataTransportErrorCode](ctx, "returnCode", "DataTransportErrorCode", m.GetReturnCode(), WriteEnum[DataTransportErrorCode, uint8](DataTransportErrorCode.GetValue, DataTransportErrorCode.PLC4XEnumName, WriteUnsignedByte(writeBuffer, 8))); err != nil { return errors.Wrap(err, "Error serializing 'returnCode' field") } if err := WriteSimpleEnumField[DataTransportSize](ctx, "transportSize", "DataTransportSize", m.GetTransportSize(), WriteEnum[DataTransportSize, uint8](DataTransportSize.GetValue, DataTransportSize.PLC4XEnumName, WriteUnsignedByte(writeBuffer, 8))); err != nil { return errors.Wrap(err, "Error serializing 'transportSize' field") } if err := WriteSimpleField[uint16](ctx, "dataLength", m.GetDataLength(), WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'dataLength' field") } // Switch field (Depending on the discriminator values, passes the serialization to a sub-type) if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil { return errors.Wrap(_typeSwitchErr, "Error serializing sub-type field") } if popErr := writeBuffer.PopContext("S7PayloadUserDataItem"); popErr != nil { return errors.Wrap(popErr, "Error popping for S7PayloadUserDataItem") } return nil } func (m *_S7PayloadUserDataItem) IsS7PayloadUserDataItem() {} func (m *_S7PayloadUserDataItem) DeepCopy() any { return m.deepCopy() } func (m *_S7PayloadUserDataItem) deepCopy() *_S7PayloadUserDataItem { if m == nil { return nil } _S7PayloadUserDataItemCopy := &_S7PayloadUserDataItem{ nil, // will be set by child m.ReturnCode, m.TransportSize, m.DataLength, } return _S7PayloadUserDataItemCopy }