From 839386e61791f6043dd1f69ece974ba7eb2fe884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20R=C3=BChl?= Date: Tue, 24 May 2022 12:45:11 +0200 Subject: [PATCH] feat(bacnet): implemented BACnetNotificationParametersChangeOfStatusFlags --- .../model/BACnetNotificationParameters.go | 2 + ...tificationParametersChangeOfStatusFlags.go | 316 ++++++++++++++++++ .../BACnetNotificationParametersUnmapped.go | 162 --------- .../protocols/bacnetip/bacnetip.mspec | 14 +- 4 files changed, 328 insertions(+), 166 deletions(-) create mode 100644 plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go delete mode 100644 plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go index c8e7024a74a..715f0d7dd2d 100644 --- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go +++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go @@ -228,6 +228,8 @@ func BACnetNotificationParametersParse(readBuffer utils.ReadBuffer, tagNumber ui _child, typeSwitchError = BACnetNotificationParametersUnsignedOutOfRangeParse(readBuffer, tagNumber, objectType, peekedTagNumber) case peekedTagNumber == uint8(17): // BACnetNotificationParametersChangeOfCharacterString _child, typeSwitchError = BACnetNotificationParametersChangeOfCharacterStringParse(readBuffer, tagNumber, objectType, peekedTagNumber) + case peekedTagNumber == uint8(18): // BACnetNotificationParametersChangeOfStatusFlags + _child, typeSwitchError = BACnetNotificationParametersChangeOfStatusFlagsParse(readBuffer, tagNumber, objectType, peekedTagNumber) case true: // BACnetNotificationParametersUnmapped _child, typeSwitchError = BACnetNotificationParametersUnmappedParse(readBuffer, tagNumber, objectType) default: diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go new file mode 100644 index 00000000000..4a4e0e4e0e5 --- /dev/null +++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go @@ -0,0 +1,316 @@ +/* + * 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/spi/utils" + "github.com/pkg/errors" +) + +// Code generated by code-generation. DO NOT EDIT. + +// BACnetNotificationParametersChangeOfStatusFlags is the data-structure of this message +type BACnetNotificationParametersChangeOfStatusFlags struct { + *BACnetNotificationParameters + InnerOpeningTag *BACnetOpeningTag + PresentValue *BACnetConstructedData + StatusFlags *BACnetStatusFlags + InnerClosingTag *BACnetClosingTag + + // Arguments. + TagNumber uint8 + ObjectType BACnetObjectType +} + +// IBACnetNotificationParametersChangeOfStatusFlags is the corresponding interface of BACnetNotificationParametersChangeOfStatusFlags +type IBACnetNotificationParametersChangeOfStatusFlags interface { + IBACnetNotificationParameters + // GetInnerOpeningTag returns InnerOpeningTag (property field) + GetInnerOpeningTag() *BACnetOpeningTag + // GetPresentValue returns PresentValue (property field) + GetPresentValue() *BACnetConstructedData + // GetStatusFlags returns StatusFlags (property field) + GetStatusFlags() *BACnetStatusFlags + // GetInnerClosingTag returns InnerClosingTag (property field) + GetInnerClosingTag() *BACnetClosingTag + // GetLengthInBytes returns the length in bytes + GetLengthInBytes() uint16 + // GetLengthInBits returns the length in bits + GetLengthInBits() uint16 + // Serialize serializes this type + Serialize(writeBuffer utils.WriteBuffer) error +} + +/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// +/////////////////////// Accessors for discriminator values. +/////////////////////// + +/////////////////////// +/////////////////////// +/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// + +func (m *BACnetNotificationParametersChangeOfStatusFlags) InitializeParent(parent *BACnetNotificationParameters, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) { + m.BACnetNotificationParameters.OpeningTag = openingTag + m.BACnetNotificationParameters.PeekedTagHeader = peekedTagHeader + m.BACnetNotificationParameters.ClosingTag = closingTag +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetParent() *BACnetNotificationParameters { + return m.BACnetNotificationParameters +} + +/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// +/////////////////////// Accessors for property fields. +/////////////////////// + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetInnerOpeningTag() *BACnetOpeningTag { + return m.InnerOpeningTag +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetPresentValue() *BACnetConstructedData { + return m.PresentValue +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetStatusFlags() *BACnetStatusFlags { + return m.StatusFlags +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetInnerClosingTag() *BACnetClosingTag { + return m.InnerClosingTag +} + +/////////////////////// +/////////////////////// +/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// + +// NewBACnetNotificationParametersChangeOfStatusFlags factory function for BACnetNotificationParametersChangeOfStatusFlags +func NewBACnetNotificationParametersChangeOfStatusFlags(innerOpeningTag *BACnetOpeningTag, presentValue *BACnetConstructedData, statusFlags *BACnetStatusFlags, innerClosingTag *BACnetClosingTag, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8, objectType BACnetObjectType) *BACnetNotificationParametersChangeOfStatusFlags { + _result := &BACnetNotificationParametersChangeOfStatusFlags{ + InnerOpeningTag: innerOpeningTag, + PresentValue: presentValue, + StatusFlags: statusFlags, + InnerClosingTag: innerClosingTag, + BACnetNotificationParameters: NewBACnetNotificationParameters(openingTag, peekedTagHeader, closingTag, tagNumber, objectType), + } + _result.Child = _result + return _result +} + +func CastBACnetNotificationParametersChangeOfStatusFlags(structType interface{}) *BACnetNotificationParametersChangeOfStatusFlags { + if casted, ok := structType.(BACnetNotificationParametersChangeOfStatusFlags); ok { + return &casted + } + if casted, ok := structType.(*BACnetNotificationParametersChangeOfStatusFlags); ok { + return casted + } + if casted, ok := structType.(BACnetNotificationParameters); ok { + return CastBACnetNotificationParametersChangeOfStatusFlags(casted.Child) + } + if casted, ok := structType.(*BACnetNotificationParameters); ok { + return CastBACnetNotificationParametersChangeOfStatusFlags(casted.Child) + } + return nil +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetTypeName() string { + return "BACnetNotificationParametersChangeOfStatusFlags" +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBits() uint16 { + return m.GetLengthInBitsConditional(false) +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBitsConditional(lastItem bool) uint16 { + lengthInBits := uint16(m.GetParentLengthInBits()) + + // Simple field (innerOpeningTag) + lengthInBits += m.InnerOpeningTag.GetLengthInBits() + + // Simple field (presentValue) + lengthInBits += m.PresentValue.GetLengthInBits() + + // Simple field (statusFlags) + lengthInBits += m.StatusFlags.GetLengthInBits() + + // Simple field (innerClosingTag) + lengthInBits += m.InnerClosingTag.GetLengthInBits() + + return lengthInBits +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBytes() uint16 { + return m.GetLengthInBits() / 8 +} + +func BACnetNotificationParametersChangeOfStatusFlagsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, peekedTagNumber uint8) (*BACnetNotificationParametersChangeOfStatusFlags, error) { + positionAware := readBuffer + _ = positionAware + if pullErr := readBuffer.PullContext("BACnetNotificationParametersChangeOfStatusFlags"); pullErr != nil { + return nil, pullErr + } + currentPos := positionAware.GetPos() + _ = currentPos + + // Simple Field (innerOpeningTag) + if pullErr := readBuffer.PullContext("innerOpeningTag"); pullErr != nil { + return nil, pullErr + } + _innerOpeningTag, _innerOpeningTagErr := BACnetOpeningTagParse(readBuffer, uint8(peekedTagNumber)) + if _innerOpeningTagErr != nil { + return nil, errors.Wrap(_innerOpeningTagErr, "Error parsing 'innerOpeningTag' field") + } + innerOpeningTag := CastBACnetOpeningTag(_innerOpeningTag) + if closeErr := readBuffer.CloseContext("innerOpeningTag"); closeErr != nil { + return nil, closeErr + } + + // Simple Field (presentValue) + if pullErr := readBuffer.PullContext("presentValue"); pullErr != nil { + return nil, pullErr + } + _presentValue, _presentValueErr := BACnetConstructedDataParse(readBuffer, uint8(uint8(0)), BACnetObjectType(objectType), BACnetPropertyIdentifier(BACnetPropertyIdentifier_VENDOR_PROPRIETARY_VALUE)) + if _presentValueErr != nil { + return nil, errors.Wrap(_presentValueErr, "Error parsing 'presentValue' field") + } + presentValue := CastBACnetConstructedData(_presentValue) + if closeErr := readBuffer.CloseContext("presentValue"); closeErr != nil { + return nil, closeErr + } + + // Simple Field (statusFlags) + if pullErr := readBuffer.PullContext("statusFlags"); pullErr != nil { + return nil, pullErr + } + _statusFlags, _statusFlagsErr := BACnetStatusFlagsParse(readBuffer, uint8(uint8(1))) + if _statusFlagsErr != nil { + return nil, errors.Wrap(_statusFlagsErr, "Error parsing 'statusFlags' field") + } + statusFlags := CastBACnetStatusFlags(_statusFlags) + if closeErr := readBuffer.CloseContext("statusFlags"); closeErr != nil { + return nil, closeErr + } + + // Simple Field (innerClosingTag) + if pullErr := readBuffer.PullContext("innerClosingTag"); pullErr != nil { + return nil, pullErr + } + _innerClosingTag, _innerClosingTagErr := BACnetClosingTagParse(readBuffer, uint8(peekedTagNumber)) + if _innerClosingTagErr != nil { + return nil, errors.Wrap(_innerClosingTagErr, "Error parsing 'innerClosingTag' field") + } + innerClosingTag := CastBACnetClosingTag(_innerClosingTag) + if closeErr := readBuffer.CloseContext("innerClosingTag"); closeErr != nil { + return nil, closeErr + } + + if closeErr := readBuffer.CloseContext("BACnetNotificationParametersChangeOfStatusFlags"); closeErr != nil { + return nil, closeErr + } + + // Create a partially initialized instance + _child := &BACnetNotificationParametersChangeOfStatusFlags{ + InnerOpeningTag: CastBACnetOpeningTag(innerOpeningTag), + PresentValue: CastBACnetConstructedData(presentValue), + StatusFlags: CastBACnetStatusFlags(statusFlags), + InnerClosingTag: CastBACnetClosingTag(innerClosingTag), + BACnetNotificationParameters: &BACnetNotificationParameters{}, + } + _child.BACnetNotificationParameters.Child = _child + return _child, nil +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) Serialize(writeBuffer utils.WriteBuffer) error { + positionAware := writeBuffer + _ = positionAware + ser := func() error { + if pushErr := writeBuffer.PushContext("BACnetNotificationParametersChangeOfStatusFlags"); pushErr != nil { + return pushErr + } + + // Simple Field (innerOpeningTag) + if pushErr := writeBuffer.PushContext("innerOpeningTag"); pushErr != nil { + return pushErr + } + _innerOpeningTagErr := m.InnerOpeningTag.Serialize(writeBuffer) + if popErr := writeBuffer.PopContext("innerOpeningTag"); popErr != nil { + return popErr + } + if _innerOpeningTagErr != nil { + return errors.Wrap(_innerOpeningTagErr, "Error serializing 'innerOpeningTag' field") + } + + // Simple Field (presentValue) + if pushErr := writeBuffer.PushContext("presentValue"); pushErr != nil { + return pushErr + } + _presentValueErr := m.PresentValue.Serialize(writeBuffer) + if popErr := writeBuffer.PopContext("presentValue"); popErr != nil { + return popErr + } + if _presentValueErr != nil { + return errors.Wrap(_presentValueErr, "Error serializing 'presentValue' field") + } + + // Simple Field (statusFlags) + if pushErr := writeBuffer.PushContext("statusFlags"); pushErr != nil { + return pushErr + } + _statusFlagsErr := m.StatusFlags.Serialize(writeBuffer) + if popErr := writeBuffer.PopContext("statusFlags"); popErr != nil { + return popErr + } + if _statusFlagsErr != nil { + return errors.Wrap(_statusFlagsErr, "Error serializing 'statusFlags' field") + } + + // Simple Field (innerClosingTag) + if pushErr := writeBuffer.PushContext("innerClosingTag"); pushErr != nil { + return pushErr + } + _innerClosingTagErr := m.InnerClosingTag.Serialize(writeBuffer) + if popErr := writeBuffer.PopContext("innerClosingTag"); popErr != nil { + return popErr + } + if _innerClosingTagErr != nil { + return errors.Wrap(_innerClosingTagErr, "Error serializing 'innerClosingTag' field") + } + + if popErr := writeBuffer.PopContext("BACnetNotificationParametersChangeOfStatusFlags"); popErr != nil { + return popErr + } + return nil + } + return m.SerializeParent(writeBuffer, m, ser) +} + +func (m *BACnetNotificationParametersChangeOfStatusFlags) String() string { + if m == nil { + return "" + } + buffer := utils.NewBoxedWriteBufferWithOptions(true, true) + if err := m.Serialize(buffer); err != nil { + return err.Error() + } + return buffer.GetBox().String() +} diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go deleted file mode 100644 index 22893e17d7e..00000000000 --- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go +++ /dev/null @@ -1,162 +0,0 @@ -/* - * 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/spi/utils" -) - -// Code generated by code-generation. DO NOT EDIT. - -// BACnetNotificationParametersUnmapped is the data-structure of this message -type BACnetNotificationParametersUnmapped struct { - *BACnetNotificationParameters - - // Arguments. - TagNumber uint8 - ObjectType BACnetObjectType -} - -// IBACnetNotificationParametersUnmapped is the corresponding interface of BACnetNotificationParametersUnmapped -type IBACnetNotificationParametersUnmapped interface { - IBACnetNotificationParameters - // GetLengthInBytes returns the length in bytes - GetLengthInBytes() uint16 - // GetLengthInBits returns the length in bits - GetLengthInBits() uint16 - // Serialize serializes this type - Serialize(writeBuffer utils.WriteBuffer) error -} - -/////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////// -/////////////////////// Accessors for discriminator values. -/////////////////////// - -/////////////////////// -/////////////////////// -/////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////// - -func (m *BACnetNotificationParametersUnmapped) InitializeParent(parent *BACnetNotificationParameters, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) { - m.BACnetNotificationParameters.OpeningTag = openingTag - m.BACnetNotificationParameters.PeekedTagHeader = peekedTagHeader - m.BACnetNotificationParameters.ClosingTag = closingTag -} - -func (m *BACnetNotificationParametersUnmapped) GetParent() *BACnetNotificationParameters { - return m.BACnetNotificationParameters -} - -// NewBACnetNotificationParametersUnmapped factory function for BACnetNotificationParametersUnmapped -func NewBACnetNotificationParametersUnmapped(openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8, objectType BACnetObjectType) *BACnetNotificationParametersUnmapped { - _result := &BACnetNotificationParametersUnmapped{ - BACnetNotificationParameters: NewBACnetNotificationParameters(openingTag, peekedTagHeader, closingTag, tagNumber, objectType), - } - _result.Child = _result - return _result -} - -func CastBACnetNotificationParametersUnmapped(structType interface{}) *BACnetNotificationParametersUnmapped { - if casted, ok := structType.(BACnetNotificationParametersUnmapped); ok { - return &casted - } - if casted, ok := structType.(*BACnetNotificationParametersUnmapped); ok { - return casted - } - if casted, ok := structType.(BACnetNotificationParameters); ok { - return CastBACnetNotificationParametersUnmapped(casted.Child) - } - if casted, ok := structType.(*BACnetNotificationParameters); ok { - return CastBACnetNotificationParametersUnmapped(casted.Child) - } - return nil -} - -func (m *BACnetNotificationParametersUnmapped) GetTypeName() string { - return "BACnetNotificationParametersUnmapped" -} - -func (m *BACnetNotificationParametersUnmapped) GetLengthInBits() uint16 { - return m.GetLengthInBitsConditional(false) -} - -func (m *BACnetNotificationParametersUnmapped) GetLengthInBitsConditional(lastItem bool) uint16 { - lengthInBits := uint16(m.GetParentLengthInBits()) - - return lengthInBits -} - -func (m *BACnetNotificationParametersUnmapped) GetLengthInBytes() uint16 { - return m.GetLengthInBits() / 8 -} - -func BACnetNotificationParametersUnmappedParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType) (*BACnetNotificationParametersUnmapped, error) { - positionAware := readBuffer - _ = positionAware - if pullErr := readBuffer.PullContext("BACnetNotificationParametersUnmapped"); pullErr != nil { - return nil, pullErr - } - currentPos := positionAware.GetPos() - _ = currentPos - - // Validation - if !(bool((1) == (2))) { - return nil, utils.ParseValidationError{"TODO: implement me"} - } - - if closeErr := readBuffer.CloseContext("BACnetNotificationParametersUnmapped"); closeErr != nil { - return nil, closeErr - } - - // Create a partially initialized instance - _child := &BACnetNotificationParametersUnmapped{ - BACnetNotificationParameters: &BACnetNotificationParameters{}, - } - _child.BACnetNotificationParameters.Child = _child - return _child, nil -} - -func (m *BACnetNotificationParametersUnmapped) Serialize(writeBuffer utils.WriteBuffer) error { - positionAware := writeBuffer - _ = positionAware - ser := func() error { - if pushErr := writeBuffer.PushContext("BACnetNotificationParametersUnmapped"); pushErr != nil { - return pushErr - } - - if popErr := writeBuffer.PopContext("BACnetNotificationParametersUnmapped"); popErr != nil { - return popErr - } - return nil - } - return m.SerializeParent(writeBuffer, m, ser) -} - -func (m *BACnetNotificationParametersUnmapped) String() string { - if m == nil { - return "" - } - buffer := utils.NewBoxedWriteBufferWithOptions(true, true) - if err := m.Serialize(buffer); err != nil { - return err.Error() - } - return buffer.GetBox().String() -} diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec index 8f771cc66c3..ddc2a04d53e 100644 --- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec +++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec @@ -1443,11 +1443,17 @@ [simple BACnetClosingTag('peekedTagNumber') innerClosingTag ] ] - // TODO: implement other cases - [BACnetNotificationParametersUnmapped - // TODO: implement me - [validation '1 == 2' "TODO: implement me"] + ['18' BACnetNotificationParametersChangeOfStatusFlags(uint 8 peekedTagNumber) + [simple BACnetOpeningTag('peekedTagNumber') + innerOpeningTag ] + [simple BACnetConstructedData('0', 'objectType', 'BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE') + presentValue ] + [simple BACnetStatusFlags('1') + statusFlags ] + [simple BACnetClosingTag('peekedTagNumber') + innerClosingTag ] ] + // TODO: implement other cases ] [simple BACnetClosingTag('tagNumber') closingTag ]