You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/05/24 12:10:06 UTC

[plc4x] 13/14: feat(bacnet): implemented BACnetConfirmedServiceRequestLifeSafetyOperation

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 9709a9cb6f195d6d3e05af485237113774eb8777
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 13:51:52 2022 +0200

    feat(bacnet): implemented BACnetConfirmedServiceRequestLifeSafetyOperation
---
 ...etConfirmedServiceRequestLifeSafetyOperation.go | 177 ++++++++++++++++++++-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  30 ++--
 2 files changed, 189 insertions(+), 18 deletions(-)

diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
index 474a4d600a..59ca68b33c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -21,6 +21,8 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"io"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +30,10 @@ import (
 // BACnetConfirmedServiceRequestLifeSafetyOperation is the data-structure of this message
 type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
 	*BACnetConfirmedServiceRequest
+	RequestingProcessIdentifier *BACnetContextTagUnsignedInteger
+	RequestingSource            *BACnetContextTagCharacterString
+	Request                     *BACnetLifeSafetyOperationTagged
+	ObjectIdentifier            *BACnetContextTagObjectIdentifier
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +42,14 @@ type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
 // IBACnetConfirmedServiceRequestLifeSafetyOperation is the corresponding interface of BACnetConfirmedServiceRequestLifeSafetyOperation
 type IBACnetConfirmedServiceRequestLifeSafetyOperation interface {
 	IBACnetConfirmedServiceRequest
+	// GetRequestingProcessIdentifier returns RequestingProcessIdentifier (property field)
+	GetRequestingProcessIdentifier() *BACnetContextTagUnsignedInteger
+	// GetRequestingSource returns RequestingSource (property field)
+	GetRequestingSource() *BACnetContextTagCharacterString
+	// GetRequest returns Request (property field)
+	GetRequest() *BACnetLifeSafetyOperationTagged
+	// GetObjectIdentifier returns ObjectIdentifier (property field)
+	GetObjectIdentifier() *BACnetContextTagObjectIdentifier
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +79,39 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetParent() *BACnetCo
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetRequestingProcessIdentifier() *BACnetContextTagUnsignedInteger {
+	return m.RequestingProcessIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetRequestingSource() *BACnetContextTagCharacterString {
+	return m.RequestingSource
+}
+
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetRequest() *BACnetLifeSafetyOperationTagged {
+	return m.Request
+}
+
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetObjectIdentifier() *BACnetContextTagObjectIdentifier {
+	return m.ObjectIdentifier
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestLifeSafetyOperation factory function for BACnetConfirmedServiceRequestLifeSafetyOperation
-func NewBACnetConfirmedServiceRequestLifeSafetyOperation(serviceRequestLength uint16) *BACnetConfirmedServiceRequestLifeSafetyOperation {
+func NewBACnetConfirmedServiceRequestLifeSafetyOperation(requestingProcessIdentifier *BACnetContextTagUnsignedInteger, requestingSource *BACnetContextTagCharacterString, request *BACnetLifeSafetyOperationTagged, objectIdentifier *BACnetContextTagObjectIdentifier, serviceRequestLength uint16) *BACnetConfirmedServiceRequestLifeSafetyOperation {
 	_result := &BACnetConfirmedServiceRequestLifeSafetyOperation{
+		RequestingProcessIdentifier:   requestingProcessIdentifier,
+		RequestingSource:              requestingSource,
+		Request:                       request,
+		ObjectIdentifier:              objectIdentifier,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +145,20 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetLengthInBits() uin
 func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Simple field (requestingProcessIdentifier)
+	lengthInBits += m.RequestingProcessIdentifier.GetLengthInBits()
+
+	// Simple field (requestingSource)
+	lengthInBits += m.RequestingSource.GetLengthInBits()
+
+	// Simple field (request)
+	lengthInBits += m.Request.GetLengthInBits()
+
+	// Optional Field (objectIdentifier)
+	if m.ObjectIdentifier != nil {
+		lengthInBits += (*m.ObjectIdentifier).GetLengthInBits()
+	}
+
 	return lengthInBits
 }
 
@@ -117,9 +175,64 @@ func BACnetConfirmedServiceRequestLifeSafetyOperationParse(readBuffer utils.Read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Simple Field (requestingProcessIdentifier)
+	if pullErr := readBuffer.PullContext("requestingProcessIdentifier"); pullErr != nil {
+		return nil, pullErr
+	}
+	_requestingProcessIdentifier, _requestingProcessIdentifierErr := BACnetContextTagParse(readBuffer, uint8(uint8(0)), BACnetDataType(BACnetDataType_UNSIGNED_INTEGER))
+	if _requestingProcessIdentifierErr != nil {
+		return nil, errors.Wrap(_requestingProcessIdentifierErr, "Error parsing 'requestingProcessIdentifier' field")
+	}
+	requestingProcessIdentifier := CastBACnetContextTagUnsignedInteger(_requestingProcessIdentifier)
+	if closeErr := readBuffer.CloseContext("requestingProcessIdentifier"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (requestingSource)
+	if pullErr := readBuffer.PullContext("requestingSource"); pullErr != nil {
+		return nil, pullErr
+	}
+	_requestingSource, _requestingSourceErr := BACnetContextTagParse(readBuffer, uint8(uint8(1)), BACnetDataType(BACnetDataType_CHARACTER_STRING))
+	if _requestingSourceErr != nil {
+		return nil, errors.Wrap(_requestingSourceErr, "Error parsing 'requestingSource' field")
+	}
+	requestingSource := CastBACnetContextTagCharacterString(_requestingSource)
+	if closeErr := readBuffer.CloseContext("requestingSource"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (request)
+	if pullErr := readBuffer.PullContext("request"); pullErr != nil {
+		return nil, pullErr
+	}
+	_request, _requestErr := BACnetLifeSafetyOperationTaggedParse(readBuffer, uint8(uint8(2)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
+	if _requestErr != nil {
+		return nil, errors.Wrap(_requestErr, "Error parsing 'request' field")
+	}
+	request := CastBACnetLifeSafetyOperationTagged(_request)
+	if closeErr := readBuffer.CloseContext("request"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Optional Field (objectIdentifier) (Can be skipped, if a given expression evaluates to false)
+	var objectIdentifier *BACnetContextTagObjectIdentifier = nil
+	{
+		currentPos = positionAware.GetPos()
+		if pullErr := readBuffer.PullContext("objectIdentifier"); pullErr != nil {
+			return nil, pullErr
+		}
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+		switch {
+		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+			readBuffer.Reset(currentPos)
+		case _err != nil:
+			return nil, errors.Wrap(_err, "Error parsing 'objectIdentifier' field")
+		default:
+			objectIdentifier = CastBACnetContextTagObjectIdentifier(_val)
+			if closeErr := readBuffer.CloseContext("objectIdentifier"); closeErr != nil {
+				return nil, closeErr
+			}
+		}
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestLifeSafetyOperation"); closeErr != nil {
@@ -128,6 +241,10 @@ func BACnetConfirmedServiceRequestLifeSafetyOperationParse(readBuffer utils.Read
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestLifeSafetyOperation{
+		RequestingProcessIdentifier:   CastBACnetContextTagUnsignedInteger(requestingProcessIdentifier),
+		RequestingSource:              CastBACnetContextTagCharacterString(requestingSource),
+		Request:                       CastBACnetLifeSafetyOperationTagged(request),
+		ObjectIdentifier:              CastBACnetContextTagObjectIdentifier(objectIdentifier),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +259,58 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(writeBuffer
 			return pushErr
 		}
 
+		// Simple Field (requestingProcessIdentifier)
+		if pushErr := writeBuffer.PushContext("requestingProcessIdentifier"); pushErr != nil {
+			return pushErr
+		}
+		_requestingProcessIdentifierErr := m.RequestingProcessIdentifier.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("requestingProcessIdentifier"); popErr != nil {
+			return popErr
+		}
+		if _requestingProcessIdentifierErr != nil {
+			return errors.Wrap(_requestingProcessIdentifierErr, "Error serializing 'requestingProcessIdentifier' field")
+		}
+
+		// Simple Field (requestingSource)
+		if pushErr := writeBuffer.PushContext("requestingSource"); pushErr != nil {
+			return pushErr
+		}
+		_requestingSourceErr := m.RequestingSource.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("requestingSource"); popErr != nil {
+			return popErr
+		}
+		if _requestingSourceErr != nil {
+			return errors.Wrap(_requestingSourceErr, "Error serializing 'requestingSource' field")
+		}
+
+		// Simple Field (request)
+		if pushErr := writeBuffer.PushContext("request"); pushErr != nil {
+			return pushErr
+		}
+		_requestErr := m.Request.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("request"); popErr != nil {
+			return popErr
+		}
+		if _requestErr != nil {
+			return errors.Wrap(_requestErr, "Error serializing 'request' field")
+		}
+
+		// Optional Field (objectIdentifier) (Can be skipped, if the value is null)
+		var objectIdentifier *BACnetContextTagObjectIdentifier = nil
+		if m.ObjectIdentifier != nil {
+			if pushErr := writeBuffer.PushContext("objectIdentifier"); pushErr != nil {
+				return pushErr
+			}
+			objectIdentifier = m.ObjectIdentifier
+			_objectIdentifierErr := objectIdentifier.Serialize(writeBuffer)
+			if popErr := writeBuffer.PopContext("objectIdentifier"); popErr != nil {
+				return popErr
+			}
+			if _objectIdentifierErr != nil {
+				return errors.Wrap(_objectIdentifierErr, "Error serializing 'objectIdentifier' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestLifeSafetyOperation"); popErr != nil {
 			return popErr
 		}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 477975eb71..6b05bdd585 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -350,11 +350,13 @@
             [optional BACnetContextTagUnsignedInteger('5', 'BACnetDataType.UNSIGNED_INTEGER')           notificationClassFilter        ]
         ]
         ['GET_EVENT_INFORMATION' BACnetConfirmedServiceRequestGetEventInformation
-            [optional BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') lastReceivedObjectIdentifier    ]
+            [optional BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')  lastReceivedObjectIdentifier   ]
         ]
         ['LIFE_SAFETY_OPERATION' BACnetConfirmedServiceRequestLifeSafetyOperation
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')           requestingProcessIdentifier    ]
+            [simple   BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')           requestingSource               ]
+            [simple   BACnetLifeSafetyOperationTagged('2', 'TagClass.CONTEXT_SPECIFIC_TAGS')            request                        ]
+            [optional BACnetContextTagObjectIdentifier('3', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')  objectIdentifier               ]
         ]
         ['SUBSCRIBE_COV' BACnetConfirmedServiceRequestSubscribeCOV
             [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')            subscriberProcessIdentifier  ]
@@ -363,20 +365,20 @@
             [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')            lifetimeInSeconds            ]
         ]
         ['SUBSCRIBE_COV_PROPERTY' BACnetConfirmedServiceRequestSubscribeCOVProperty
-            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')          subscriberProcessIdentifier  ]
-            [simple   BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier    ]
-            [optional BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN')                           issueConfirmedNotifications  ]
-            [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')          lifetime                     ]
-            [simple   BACnetPropertyReferenceEnclosed('4')                                             monitoredPropertyIdentifier  ]
-            [optional BACnetContextTagReal('5', 'BACnetDataType.REAL')                                 covIncrement                 ]
+            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')            subscriberProcessIdentifier  ]
+            [simple   BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')   monitoredObjectIdentifier    ]
+            [optional BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN')                             issueConfirmedNotifications  ]
+            [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')            lifetime                     ]
+            [simple   BACnetPropertyReferenceEnclosed('4')                                               monitoredPropertyIdentifier  ]
+            [optional BACnetContextTagReal('5', 'BACnetDataType.REAL')                                   covIncrement                 ]
         ]
         ['SUBSCRIBE_COV_PROPERTY_MULTIPLE' BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
-            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')          subscriberProcessIdentifier  ]
-            [optional BACnetContextTagBoolean('1', 'BACnetDataType.BOOLEAN')                           issueConfirmedNotifications  ]
-            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')          lifetime                     ]
-            [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')          maxNotificationDelay         ]
+            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')            subscriberProcessIdentifier  ]
+            [optional BACnetContextTagBoolean('1', 'BACnetDataType.BOOLEAN')                             issueConfirmedNotifications  ]
+            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')            lifetime                     ]
+            [optional BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER')            maxNotificationDelay         ]
             [simple   BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList('4')
-                                                                                                       listOfCovSubscriptionSpecifications ]
+                                                                                                         listOfCovSubscriptionSpecifications ]
         ]
         //
         ////