plc4go/protocols/eip/readwrite/model/CipIdentity.go (503 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" "encoding/binary" "fmt" "github.com/pkg/errors" "github.com/rs/zerolog" "github.com/apache/plc4x/plc4go/spi/codegen" . "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. // Constant values. const CipIdentity_ZEROES1 uint32 = 0x00000000 const CipIdentity_ZEROES2 uint32 = 0x00000000 // CipIdentity is the corresponding interface of CipIdentity type CipIdentity interface { fmt.Stringer utils.LengthAware utils.Serializable utils.Copyable CommandSpecificDataItem // GetEncapsulationProtocolVersion returns EncapsulationProtocolVersion (property field) GetEncapsulationProtocolVersion() uint16 // GetSocketAddressFamily returns SocketAddressFamily (property field) GetSocketAddressFamily() uint16 // GetSocketAddressPort returns SocketAddressPort (property field) GetSocketAddressPort() uint16 // GetSocketAddressAddress returns SocketAddressAddress (property field) GetSocketAddressAddress() []uint8 // GetVendorId returns VendorId (property field) GetVendorId() uint16 // GetDeviceType returns DeviceType (property field) GetDeviceType() uint16 // GetProductCode returns ProductCode (property field) GetProductCode() uint16 // GetRevisionMajor returns RevisionMajor (property field) GetRevisionMajor() uint8 // GetRevisionMinor returns RevisionMinor (property field) GetRevisionMinor() uint8 // GetStatus returns Status (property field) GetStatus() uint16 // GetSerialNumber returns SerialNumber (property field) GetSerialNumber() uint32 // GetProductName returns ProductName (property field) GetProductName() string // GetState returns State (property field) GetState() uint8 // IsCipIdentity is a marker method to prevent unintentional type checks (interfaces of same signature) IsCipIdentity() // CreateBuilder creates a CipIdentityBuilder CreateCipIdentityBuilder() CipIdentityBuilder } // _CipIdentity is the data-structure of this message type _CipIdentity struct { CommandSpecificDataItemContract EncapsulationProtocolVersion uint16 SocketAddressFamily uint16 SocketAddressPort uint16 SocketAddressAddress []uint8 VendorId uint16 DeviceType uint16 ProductCode uint16 RevisionMajor uint8 RevisionMinor uint8 Status uint16 SerialNumber uint32 ProductName string State uint8 } var _ CipIdentity = (*_CipIdentity)(nil) var _ CommandSpecificDataItemRequirements = (*_CipIdentity)(nil) // NewCipIdentity factory function for _CipIdentity func NewCipIdentity(encapsulationProtocolVersion uint16, socketAddressFamily uint16, socketAddressPort uint16, socketAddressAddress []uint8, vendorId uint16, deviceType uint16, productCode uint16, revisionMajor uint8, revisionMinor uint8, status uint16, serialNumber uint32, productName string, state uint8) *_CipIdentity { _result := &_CipIdentity{ CommandSpecificDataItemContract: NewCommandSpecificDataItem(), EncapsulationProtocolVersion: encapsulationProtocolVersion, SocketAddressFamily: socketAddressFamily, SocketAddressPort: socketAddressPort, SocketAddressAddress: socketAddressAddress, VendorId: vendorId, DeviceType: deviceType, ProductCode: productCode, RevisionMajor: revisionMajor, RevisionMinor: revisionMinor, Status: status, SerialNumber: serialNumber, ProductName: productName, State: state, } _result.CommandSpecificDataItemContract.(*_CommandSpecificDataItem)._SubType = _result return _result } /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Builder /////////////////////// // CipIdentityBuilder is a builder for CipIdentity type CipIdentityBuilder interface { utils.Copyable // WithMandatoryFields adds all mandatory fields (convenience for using multiple builder calls) WithMandatoryFields(encapsulationProtocolVersion uint16, socketAddressFamily uint16, socketAddressPort uint16, socketAddressAddress []uint8, vendorId uint16, deviceType uint16, productCode uint16, revisionMajor uint8, revisionMinor uint8, status uint16, serialNumber uint32, productName string, state uint8) CipIdentityBuilder // WithEncapsulationProtocolVersion adds EncapsulationProtocolVersion (property field) WithEncapsulationProtocolVersion(uint16) CipIdentityBuilder // WithSocketAddressFamily adds SocketAddressFamily (property field) WithSocketAddressFamily(uint16) CipIdentityBuilder // WithSocketAddressPort adds SocketAddressPort (property field) WithSocketAddressPort(uint16) CipIdentityBuilder // WithSocketAddressAddress adds SocketAddressAddress (property field) WithSocketAddressAddress(...uint8) CipIdentityBuilder // WithVendorId adds VendorId (property field) WithVendorId(uint16) CipIdentityBuilder // WithDeviceType adds DeviceType (property field) WithDeviceType(uint16) CipIdentityBuilder // WithProductCode adds ProductCode (property field) WithProductCode(uint16) CipIdentityBuilder // WithRevisionMajor adds RevisionMajor (property field) WithRevisionMajor(uint8) CipIdentityBuilder // WithRevisionMinor adds RevisionMinor (property field) WithRevisionMinor(uint8) CipIdentityBuilder // WithStatus adds Status (property field) WithStatus(uint16) CipIdentityBuilder // WithSerialNumber adds SerialNumber (property field) WithSerialNumber(uint32) CipIdentityBuilder // WithProductName adds ProductName (property field) WithProductName(string) CipIdentityBuilder // WithState adds State (property field) WithState(uint8) CipIdentityBuilder // Done is used to finish work on this child and return (or create one if none) to the parent builder Done() CommandSpecificDataItemBuilder // Build builds the CipIdentity or returns an error if something is wrong Build() (CipIdentity, error) // MustBuild does the same as Build but panics on error MustBuild() CipIdentity } // NewCipIdentityBuilder() creates a CipIdentityBuilder func NewCipIdentityBuilder() CipIdentityBuilder { return &_CipIdentityBuilder{_CipIdentity: new(_CipIdentity)} } type _CipIdentityBuilder struct { *_CipIdentity parentBuilder *_CommandSpecificDataItemBuilder err *utils.MultiError } var _ (CipIdentityBuilder) = (*_CipIdentityBuilder)(nil) func (b *_CipIdentityBuilder) setParent(contract CommandSpecificDataItemContract) { b.CommandSpecificDataItemContract = contract contract.(*_CommandSpecificDataItem)._SubType = b._CipIdentity } func (b *_CipIdentityBuilder) WithMandatoryFields(encapsulationProtocolVersion uint16, socketAddressFamily uint16, socketAddressPort uint16, socketAddressAddress []uint8, vendorId uint16, deviceType uint16, productCode uint16, revisionMajor uint8, revisionMinor uint8, status uint16, serialNumber uint32, productName string, state uint8) CipIdentityBuilder { return b.WithEncapsulationProtocolVersion(encapsulationProtocolVersion).WithSocketAddressFamily(socketAddressFamily).WithSocketAddressPort(socketAddressPort).WithSocketAddressAddress(socketAddressAddress...).WithVendorId(vendorId).WithDeviceType(deviceType).WithProductCode(productCode).WithRevisionMajor(revisionMajor).WithRevisionMinor(revisionMinor).WithStatus(status).WithSerialNumber(serialNumber).WithProductName(productName).WithState(state) } func (b *_CipIdentityBuilder) WithEncapsulationProtocolVersion(encapsulationProtocolVersion uint16) CipIdentityBuilder { b.EncapsulationProtocolVersion = encapsulationProtocolVersion return b } func (b *_CipIdentityBuilder) WithSocketAddressFamily(socketAddressFamily uint16) CipIdentityBuilder { b.SocketAddressFamily = socketAddressFamily return b } func (b *_CipIdentityBuilder) WithSocketAddressPort(socketAddressPort uint16) CipIdentityBuilder { b.SocketAddressPort = socketAddressPort return b } func (b *_CipIdentityBuilder) WithSocketAddressAddress(socketAddressAddress ...uint8) CipIdentityBuilder { b.SocketAddressAddress = socketAddressAddress return b } func (b *_CipIdentityBuilder) WithVendorId(vendorId uint16) CipIdentityBuilder { b.VendorId = vendorId return b } func (b *_CipIdentityBuilder) WithDeviceType(deviceType uint16) CipIdentityBuilder { b.DeviceType = deviceType return b } func (b *_CipIdentityBuilder) WithProductCode(productCode uint16) CipIdentityBuilder { b.ProductCode = productCode return b } func (b *_CipIdentityBuilder) WithRevisionMajor(revisionMajor uint8) CipIdentityBuilder { b.RevisionMajor = revisionMajor return b } func (b *_CipIdentityBuilder) WithRevisionMinor(revisionMinor uint8) CipIdentityBuilder { b.RevisionMinor = revisionMinor return b } func (b *_CipIdentityBuilder) WithStatus(status uint16) CipIdentityBuilder { b.Status = status return b } func (b *_CipIdentityBuilder) WithSerialNumber(serialNumber uint32) CipIdentityBuilder { b.SerialNumber = serialNumber return b } func (b *_CipIdentityBuilder) WithProductName(productName string) CipIdentityBuilder { b.ProductName = productName return b } func (b *_CipIdentityBuilder) WithState(state uint8) CipIdentityBuilder { b.State = state return b } func (b *_CipIdentityBuilder) Build() (CipIdentity, error) { if b.err != nil { return nil, errors.Wrap(b.err, "error occurred during build") } return b._CipIdentity.deepCopy(), nil } func (b *_CipIdentityBuilder) MustBuild() CipIdentity { build, err := b.Build() if err != nil { panic(err) } return build } func (b *_CipIdentityBuilder) Done() CommandSpecificDataItemBuilder { if b.parentBuilder == nil { b.parentBuilder = NewCommandSpecificDataItemBuilder().(*_CommandSpecificDataItemBuilder) } return b.parentBuilder } func (b *_CipIdentityBuilder) buildForCommandSpecificDataItem() (CommandSpecificDataItem, error) { return b.Build() } func (b *_CipIdentityBuilder) DeepCopy() any { _copy := b.CreateCipIdentityBuilder().(*_CipIdentityBuilder) if b.err != nil { _copy.err = b.err.DeepCopy().(*utils.MultiError) } return _copy } // CreateCipIdentityBuilder creates a CipIdentityBuilder func (b *_CipIdentity) CreateCipIdentityBuilder() CipIdentityBuilder { if b == nil { return NewCipIdentityBuilder() } return &_CipIdentityBuilder{_CipIdentity: b.deepCopy()} } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for discriminator values. /////////////////////// func (m *_CipIdentity) GetItemType() uint16 { return 0x000C } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// func (m *_CipIdentity) GetParent() CommandSpecificDataItemContract { return m.CommandSpecificDataItemContract } /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for property fields. /////////////////////// func (m *_CipIdentity) GetEncapsulationProtocolVersion() uint16 { return m.EncapsulationProtocolVersion } func (m *_CipIdentity) GetSocketAddressFamily() uint16 { return m.SocketAddressFamily } func (m *_CipIdentity) GetSocketAddressPort() uint16 { return m.SocketAddressPort } func (m *_CipIdentity) GetSocketAddressAddress() []uint8 { return m.SocketAddressAddress } func (m *_CipIdentity) GetVendorId() uint16 { return m.VendorId } func (m *_CipIdentity) GetDeviceType() uint16 { return m.DeviceType } func (m *_CipIdentity) GetProductCode() uint16 { return m.ProductCode } func (m *_CipIdentity) GetRevisionMajor() uint8 { return m.RevisionMajor } func (m *_CipIdentity) GetRevisionMinor() uint8 { return m.RevisionMinor } func (m *_CipIdentity) GetStatus() uint16 { return m.Status } func (m *_CipIdentity) GetSerialNumber() uint32 { return m.SerialNumber } func (m *_CipIdentity) GetProductName() string { return m.ProductName } func (m *_CipIdentity) GetState() uint8 { return m.State } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for const fields. /////////////////////// func (m *_CipIdentity) GetZeroes1() uint32 { return CipIdentity_ZEROES1 } func (m *_CipIdentity) GetZeroes2() uint32 { return CipIdentity_ZEROES2 } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // Deprecated: use the interface for direct cast func CastCipIdentity(structType any) CipIdentity { if casted, ok := structType.(CipIdentity); ok { return casted } if casted, ok := structType.(*CipIdentity); ok { return *casted } return nil } func (m *_CipIdentity) GetTypeName() string { return "CipIdentity" } func (m *_CipIdentity) GetLengthInBits(ctx context.Context) uint16 { lengthInBits := uint16(m.CommandSpecificDataItemContract.(*_CommandSpecificDataItem).getLengthInBits(ctx)) // Implicit Field (itemLength) lengthInBits += 16 // Simple field (encapsulationProtocolVersion) lengthInBits += 16 // Simple field (socketAddressFamily) lengthInBits += 16 // Simple field (socketAddressPort) lengthInBits += 16 // Array field if len(m.SocketAddressAddress) > 0 { lengthInBits += 8 * uint16(len(m.SocketAddressAddress)) } // Const Field (zeroes1) lengthInBits += 32 // Const Field (zeroes2) lengthInBits += 32 // Simple field (vendorId) lengthInBits += 16 // Simple field (deviceType) lengthInBits += 16 // Simple field (productCode) lengthInBits += 16 // Simple field (revisionMajor) lengthInBits += 8 // Simple field (revisionMinor) lengthInBits += 8 // Simple field (status) lengthInBits += 16 // Simple field (serialNumber) lengthInBits += 32 // Implicit Field (productNameLength) lengthInBits += 8 // Simple field (productName) lengthInBits += uint16(int32(uint8(len(m.GetProductName()))) * int32(int32(8))) // Simple field (state) lengthInBits += 8 return lengthInBits } func (m *_CipIdentity) GetLengthInBytes(ctx context.Context) uint16 { return m.GetLengthInBits(ctx) / 8 } func (m *_CipIdentity) parse(ctx context.Context, readBuffer utils.ReadBuffer, parent *_CommandSpecificDataItem) (__cipIdentity CipIdentity, err error) { m.CommandSpecificDataItemContract = parent parent._SubType = m positionAware := readBuffer _ = positionAware if pullErr := readBuffer.PullContext("CipIdentity"); pullErr != nil { return nil, errors.Wrap(pullErr, "Error pulling for CipIdentity") } currentPos := positionAware.GetPos() _ = currentPos itemLength, err := ReadImplicitField[uint16](ctx, "itemLength", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'itemLength' field")) } _ = itemLength encapsulationProtocolVersion, err := ReadSimpleField(ctx, "encapsulationProtocolVersion", ReadUnsignedShort(readBuffer, uint8(16)), codegen.WithByteOrder(binary.BigEndian)) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'encapsulationProtocolVersion' field")) } m.EncapsulationProtocolVersion = encapsulationProtocolVersion socketAddressFamily, err := ReadSimpleField(ctx, "socketAddressFamily", ReadUnsignedShort(readBuffer, uint8(16)), codegen.WithByteOrder(binary.BigEndian)) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'socketAddressFamily' field")) } m.SocketAddressFamily = socketAddressFamily socketAddressPort, err := ReadSimpleField(ctx, "socketAddressPort", ReadUnsignedShort(readBuffer, uint8(16)), codegen.WithByteOrder(binary.BigEndian)) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'socketAddressPort' field")) } m.SocketAddressPort = socketAddressPort socketAddressAddress, err := ReadCountArrayField[uint8](ctx, "socketAddressAddress", ReadUnsignedByte(readBuffer, uint8(8)), uint64(int32(4))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'socketAddressAddress' field")) } m.SocketAddressAddress = socketAddressAddress zeroes1, err := ReadConstField[uint32](ctx, "zeroes1", ReadUnsignedInt(readBuffer, uint8(32)), CipIdentity_ZEROES1) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'zeroes1' field")) } _ = zeroes1 zeroes2, err := ReadConstField[uint32](ctx, "zeroes2", ReadUnsignedInt(readBuffer, uint8(32)), CipIdentity_ZEROES2) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'zeroes2' field")) } _ = zeroes2 vendorId, err := ReadSimpleField(ctx, "vendorId", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'vendorId' field")) } m.VendorId = vendorId deviceType, err := ReadSimpleField(ctx, "deviceType", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'deviceType' field")) } m.DeviceType = deviceType productCode, err := ReadSimpleField(ctx, "productCode", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'productCode' field")) } m.ProductCode = productCode revisionMajor, err := ReadSimpleField(ctx, "revisionMajor", ReadUnsignedByte(readBuffer, uint8(8))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'revisionMajor' field")) } m.RevisionMajor = revisionMajor revisionMinor, err := ReadSimpleField(ctx, "revisionMinor", ReadUnsignedByte(readBuffer, uint8(8))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'revisionMinor' field")) } m.RevisionMinor = revisionMinor status, err := ReadSimpleField(ctx, "status", ReadUnsignedShort(readBuffer, uint8(16))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'status' field")) } m.Status = status serialNumber, err := ReadSimpleField(ctx, "serialNumber", ReadUnsignedInt(readBuffer, uint8(32))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'serialNumber' field")) } m.SerialNumber = serialNumber productNameLength, err := ReadImplicitField[uint8](ctx, "productNameLength", ReadUnsignedByte(readBuffer, uint8(8))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'productNameLength' field")) } _ = productNameLength productName, err := ReadSimpleField(ctx, "productName", ReadString(readBuffer, uint32(int32(productNameLength)*int32(int32(8))))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'productName' field")) } m.ProductName = productName state, err := ReadSimpleField(ctx, "state", ReadUnsignedByte(readBuffer, uint8(8))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'state' field")) } m.State = state if closeErr := readBuffer.CloseContext("CipIdentity"); closeErr != nil { return nil, errors.Wrap(closeErr, "Error closing for CipIdentity") } return m, nil } func (m *_CipIdentity) Serialize() ([]byte, error) { wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background())))) if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil { return nil, err } return wb.GetBytes(), nil } func (m *_CipIdentity) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error { positionAware := writeBuffer _ = positionAware log := zerolog.Ctx(ctx) _ = log ser := func() error { if pushErr := writeBuffer.PushContext("CipIdentity"); pushErr != nil { return errors.Wrap(pushErr, "Error pushing for CipIdentity") } itemLength := uint16(uint16(uint16(34)) + uint16(uint8(len(m.GetProductName())))) if err := WriteImplicitField(ctx, "itemLength", itemLength, WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'itemLength' field") } if err := WriteSimpleField[uint16](ctx, "encapsulationProtocolVersion", m.GetEncapsulationProtocolVersion(), WriteUnsignedShort(writeBuffer, 16), codegen.WithByteOrder(binary.BigEndian)); err != nil { return errors.Wrap(err, "Error serializing 'encapsulationProtocolVersion' field") } if err := WriteSimpleField[uint16](ctx, "socketAddressFamily", m.GetSocketAddressFamily(), WriteUnsignedShort(writeBuffer, 16), codegen.WithByteOrder(binary.BigEndian)); err != nil { return errors.Wrap(err, "Error serializing 'socketAddressFamily' field") } if err := WriteSimpleField[uint16](ctx, "socketAddressPort", m.GetSocketAddressPort(), WriteUnsignedShort(writeBuffer, 16), codegen.WithByteOrder(binary.BigEndian)); err != nil { return errors.Wrap(err, "Error serializing 'socketAddressPort' field") } if err := WriteSimpleTypeArrayField(ctx, "socketAddressAddress", m.GetSocketAddressAddress(), WriteUnsignedByte(writeBuffer, 8)); err != nil { return errors.Wrap(err, "Error serializing 'socketAddressAddress' field") } if err := WriteConstField(ctx, "zeroes1", CipIdentity_ZEROES1, WriteUnsignedInt(writeBuffer, 32)); err != nil { return errors.Wrap(err, "Error serializing 'zeroes1' field") } if err := WriteConstField(ctx, "zeroes2", CipIdentity_ZEROES2, WriteUnsignedInt(writeBuffer, 32)); err != nil { return errors.Wrap(err, "Error serializing 'zeroes2' field") } if err := WriteSimpleField[uint16](ctx, "vendorId", m.GetVendorId(), WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'vendorId' field") } if err := WriteSimpleField[uint16](ctx, "deviceType", m.GetDeviceType(), WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'deviceType' field") } if err := WriteSimpleField[uint16](ctx, "productCode", m.GetProductCode(), WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'productCode' field") } if err := WriteSimpleField[uint8](ctx, "revisionMajor", m.GetRevisionMajor(), WriteUnsignedByte(writeBuffer, 8)); err != nil { return errors.Wrap(err, "Error serializing 'revisionMajor' field") } if err := WriteSimpleField[uint8](ctx, "revisionMinor", m.GetRevisionMinor(), WriteUnsignedByte(writeBuffer, 8)); err != nil { return errors.Wrap(err, "Error serializing 'revisionMinor' field") } if err := WriteSimpleField[uint16](ctx, "status", m.GetStatus(), WriteUnsignedShort(writeBuffer, 16)); err != nil { return errors.Wrap(err, "Error serializing 'status' field") } if err := WriteSimpleField[uint32](ctx, "serialNumber", m.GetSerialNumber(), WriteUnsignedInt(writeBuffer, 32)); err != nil { return errors.Wrap(err, "Error serializing 'serialNumber' field") } productNameLength := uint8(uint8(len(m.GetProductName()))) if err := WriteImplicitField(ctx, "productNameLength", productNameLength, WriteUnsignedByte(writeBuffer, 8)); err != nil { return errors.Wrap(err, "Error serializing 'productNameLength' field") } if err := WriteSimpleField[string](ctx, "productName", m.GetProductName(), WriteString(writeBuffer, int32(int32(uint8(len(m.GetProductName())))*int32(int32(8))))); err != nil { return errors.Wrap(err, "Error serializing 'productName' field") } if err := WriteSimpleField[uint8](ctx, "state", m.GetState(), WriteUnsignedByte(writeBuffer, 8)); err != nil { return errors.Wrap(err, "Error serializing 'state' field") } if popErr := writeBuffer.PopContext("CipIdentity"); popErr != nil { return errors.Wrap(popErr, "Error popping for CipIdentity") } return nil } return m.CommandSpecificDataItemContract.(*_CommandSpecificDataItem).serializeParent(ctx, writeBuffer, m, ser) } func (m *_CipIdentity) IsCipIdentity() {} func (m *_CipIdentity) DeepCopy() any { return m.deepCopy() } func (m *_CipIdentity) deepCopy() *_CipIdentity { if m == nil { return nil } _CipIdentityCopy := &_CipIdentity{ m.CommandSpecificDataItemContract.(*_CommandSpecificDataItem).deepCopy(), m.EncapsulationProtocolVersion, m.SocketAddressFamily, m.SocketAddressPort, utils.DeepCopySlice[uint8, uint8](m.SocketAddressAddress), m.VendorId, m.DeviceType, m.ProductCode, m.RevisionMajor, m.RevisionMinor, m.Status, m.SerialNumber, m.ProductName, m.State, } _CipIdentityCopy.CommandSpecificDataItemContract.(*_CommandSpecificDataItem)._SubType = m return _CipIdentityCopy } func (m *_CipIdentity) String() string { if m == nil { return "<nil>" } wb := utils.NewWriteBufferBoxBased( utils.WithWriteBufferBoxBasedMergeSingleBoxes(), utils.WithWriteBufferBoxBasedOmitEmptyBoxes(), utils.WithWriteBufferBoxBasedPrintPosLengthFooter(), ) if err := wb.WriteSerializable(context.Background(), m); err != nil { return err.Error() } return wb.GetBox().String() }