blob: 22bd48356c130830021889f978a043c0413aa8ec [file] [log] [blame]
//
// 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
//
// 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.
//
package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
"github.com/pkg/errors"
)
// Code generated by build-utils. DO NOT EDIT.
// The data-structure of this message
type MPropReadCon struct {
InterfaceObjectType uint16
ObjectInstance uint8
PropertyId uint8
NumberOfElements uint8
StartIndex uint16
Unknown uint16
Parent *CEMI
}
// The corresponding interface
type IMPropReadCon interface {
LengthInBytes() uint16
LengthInBits() uint16
Serialize(writeBuffer utils.WriteBuffer) error
}
///////////////////////////////////////////////////////////
// Accessors for discriminator values.
///////////////////////////////////////////////////////////
func (m *MPropReadCon) MessageCode() uint8 {
return 0xFB
}
func (m *MPropReadCon) InitializeParent(parent *CEMI) {
}
func NewMPropReadCon(interfaceObjectType uint16, objectInstance uint8, propertyId uint8, numberOfElements uint8, startIndex uint16, unknown uint16) *CEMI {
child := &MPropReadCon{
InterfaceObjectType: interfaceObjectType,
ObjectInstance: objectInstance,
PropertyId: propertyId,
NumberOfElements: numberOfElements,
StartIndex: startIndex,
Unknown: unknown,
Parent: NewCEMI(),
}
child.Parent.Child = child
return child.Parent
}
func CastMPropReadCon(structType interface{}) *MPropReadCon {
castFunc := func(typ interface{}) *MPropReadCon {
if casted, ok := typ.(MPropReadCon); ok {
return &casted
}
if casted, ok := typ.(*MPropReadCon); ok {
return casted
}
if casted, ok := typ.(CEMI); ok {
return CastMPropReadCon(casted.Child)
}
if casted, ok := typ.(*CEMI); ok {
return CastMPropReadCon(casted.Child)
}
return nil
}
return castFunc(structType)
}
func (m *MPropReadCon) GetTypeName() string {
return "MPropReadCon"
}
func (m *MPropReadCon) LengthInBits() uint16 {
return m.LengthInBitsConditional(false)
}
func (m *MPropReadCon) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.Parent.ParentLengthInBits())
// Simple field (interfaceObjectType)
lengthInBits += 16
// Simple field (objectInstance)
lengthInBits += 8
// Simple field (propertyId)
lengthInBits += 8
// Simple field (numberOfElements)
lengthInBits += 4
// Simple field (startIndex)
lengthInBits += 12
// Simple field (unknown)
lengthInBits += 16
return lengthInBits
}
func (m *MPropReadCon) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
func MPropReadConParse(readBuffer utils.ReadBuffer) (*CEMI, error) {
if pullErr := readBuffer.PullContext("MPropReadCon"); pullErr != nil {
return nil, pullErr
}
// Simple Field (interfaceObjectType)
interfaceObjectType, _interfaceObjectTypeErr := readBuffer.ReadUint16("interfaceObjectType", 16)
if _interfaceObjectTypeErr != nil {
return nil, errors.Wrap(_interfaceObjectTypeErr, "Error parsing 'interfaceObjectType' field")
}
// Simple Field (objectInstance)
objectInstance, _objectInstanceErr := readBuffer.ReadUint8("objectInstance", 8)
if _objectInstanceErr != nil {
return nil, errors.Wrap(_objectInstanceErr, "Error parsing 'objectInstance' field")
}
// Simple Field (propertyId)
propertyId, _propertyIdErr := readBuffer.ReadUint8("propertyId", 8)
if _propertyIdErr != nil {
return nil, errors.Wrap(_propertyIdErr, "Error parsing 'propertyId' field")
}
// Simple Field (numberOfElements)
numberOfElements, _numberOfElementsErr := readBuffer.ReadUint8("numberOfElements", 4)
if _numberOfElementsErr != nil {
return nil, errors.Wrap(_numberOfElementsErr, "Error parsing 'numberOfElements' field")
}
// Simple Field (startIndex)
startIndex, _startIndexErr := readBuffer.ReadUint16("startIndex", 12)
if _startIndexErr != nil {
return nil, errors.Wrap(_startIndexErr, "Error parsing 'startIndex' field")
}
// Simple Field (unknown)
unknown, _unknownErr := readBuffer.ReadUint16("unknown", 16)
if _unknownErr != nil {
return nil, errors.Wrap(_unknownErr, "Error parsing 'unknown' field")
}
if closeErr := readBuffer.CloseContext("MPropReadCon"); closeErr != nil {
return nil, closeErr
}
// Create a partially initialized instance
_child := &MPropReadCon{
InterfaceObjectType: interfaceObjectType,
ObjectInstance: objectInstance,
PropertyId: propertyId,
NumberOfElements: numberOfElements,
StartIndex: startIndex,
Unknown: unknown,
Parent: &CEMI{},
}
_child.Parent.Child = _child
return _child.Parent, nil
}
func (m *MPropReadCon) Serialize(writeBuffer utils.WriteBuffer) error {
ser := func() error {
if pushErr := writeBuffer.PushContext("MPropReadCon"); pushErr != nil {
return pushErr
}
// Simple Field (interfaceObjectType)
interfaceObjectType := uint16(m.InterfaceObjectType)
_interfaceObjectTypeErr := writeBuffer.WriteUint16("interfaceObjectType", 16, (interfaceObjectType))
if _interfaceObjectTypeErr != nil {
return errors.Wrap(_interfaceObjectTypeErr, "Error serializing 'interfaceObjectType' field")
}
// Simple Field (objectInstance)
objectInstance := uint8(m.ObjectInstance)
_objectInstanceErr := writeBuffer.WriteUint8("objectInstance", 8, (objectInstance))
if _objectInstanceErr != nil {
return errors.Wrap(_objectInstanceErr, "Error serializing 'objectInstance' field")
}
// Simple Field (propertyId)
propertyId := uint8(m.PropertyId)
_propertyIdErr := writeBuffer.WriteUint8("propertyId", 8, (propertyId))
if _propertyIdErr != nil {
return errors.Wrap(_propertyIdErr, "Error serializing 'propertyId' field")
}
// Simple Field (numberOfElements)
numberOfElements := uint8(m.NumberOfElements)
_numberOfElementsErr := writeBuffer.WriteUint8("numberOfElements", 4, (numberOfElements))
if _numberOfElementsErr != nil {
return errors.Wrap(_numberOfElementsErr, "Error serializing 'numberOfElements' field")
}
// Simple Field (startIndex)
startIndex := uint16(m.StartIndex)
_startIndexErr := writeBuffer.WriteUint16("startIndex", 12, (startIndex))
if _startIndexErr != nil {
return errors.Wrap(_startIndexErr, "Error serializing 'startIndex' field")
}
// Simple Field (unknown)
unknown := uint16(m.Unknown)
_unknownErr := writeBuffer.WriteUint16("unknown", 16, (unknown))
if _unknownErr != nil {
return errors.Wrap(_unknownErr, "Error serializing 'unknown' field")
}
if popErr := writeBuffer.PopContext("MPropReadCon"); popErr != nil {
return popErr
}
return nil
}
return m.Parent.SerializeParent(writeBuffer, m, ser)
}
func (m *MPropReadCon) String() string {
if m == nil {
return "<nil>"
}
buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
m.Serialize(buffer)
return buffer.GetBox().String()
}