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 14:47:25 UTC

[plc4x] 04/07: feat(bacnet): implement BACnetConfirmedServiceRequestVTOpen

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 ba8b2dde6b6a2a12100254b6d54f660d9dbe56e3
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 16:30:49 2022 +0200

    feat(bacnet): implement BACnetConfirmedServiceRequestVTOpen
---
 .../model/BACnetConfirmedServiceRequestVTOpen.go   | 88 +++++++++++++++++++++-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  8 +-
 2 files changed, 88 insertions(+), 8 deletions(-)

diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
index c527d2e4bd..fb2addaadf 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,8 @@ import (
 // BACnetConfirmedServiceRequestVTOpen is the data-structure of this message
 type BACnetConfirmedServiceRequestVTOpen struct {
 	*BACnetConfirmedServiceRequest
+	VtClass                  *BACnetVTClassTagged
+	LocatVtSessionIdentifier *BACnetApplicationTagUnsignedInteger
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +39,10 @@ type BACnetConfirmedServiceRequestVTOpen struct {
 // IBACnetConfirmedServiceRequestVTOpen is the corresponding interface of BACnetConfirmedServiceRequestVTOpen
 type IBACnetConfirmedServiceRequestVTOpen interface {
 	IBACnetConfirmedServiceRequest
+	// GetVtClass returns VtClass (property field)
+	GetVtClass() *BACnetVTClassTagged
+	// GetLocatVtSessionIdentifier returns LocatVtSessionIdentifier (property field)
+	GetLocatVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +72,29 @@ func (m *BACnetConfirmedServiceRequestVTOpen) GetParent() *BACnetConfirmedServic
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestVTOpen) GetVtClass() *BACnetVTClassTagged {
+	return m.VtClass
+}
+
+func (m *BACnetConfirmedServiceRequestVTOpen) GetLocatVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger {
+	return m.LocatVtSessionIdentifier
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestVTOpen factory function for BACnetConfirmedServiceRequestVTOpen
-func NewBACnetConfirmedServiceRequestVTOpen(serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTOpen {
+func NewBACnetConfirmedServiceRequestVTOpen(vtClass *BACnetVTClassTagged, locatVtSessionIdentifier *BACnetApplicationTagUnsignedInteger, serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTOpen {
 	_result := &BACnetConfirmedServiceRequestVTOpen{
+		VtClass:                       vtClass,
+		LocatVtSessionIdentifier:      locatVtSessionIdentifier,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +128,12 @@ func (m *BACnetConfirmedServiceRequestVTOpen) GetLengthInBits() uint16 {
 func (m *BACnetConfirmedServiceRequestVTOpen) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Simple field (vtClass)
+	lengthInBits += m.VtClass.GetLengthInBits()
+
+	// Simple field (locatVtSessionIdentifier)
+	lengthInBits += m.LocatVtSessionIdentifier.GetLengthInBits()
+
 	return lengthInBits
 }
 
@@ -117,9 +150,30 @@ func BACnetConfirmedServiceRequestVTOpenParse(readBuffer utils.ReadBuffer, servi
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Simple Field (vtClass)
+	if pullErr := readBuffer.PullContext("vtClass"); pullErr != nil {
+		return nil, pullErr
+	}
+	_vtClass, _vtClassErr := BACnetVTClassTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+	if _vtClassErr != nil {
+		return nil, errors.Wrap(_vtClassErr, "Error parsing 'vtClass' field")
+	}
+	vtClass := CastBACnetVTClassTagged(_vtClass)
+	if closeErr := readBuffer.CloseContext("vtClass"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (locatVtSessionIdentifier)
+	if pullErr := readBuffer.PullContext("locatVtSessionIdentifier"); pullErr != nil {
+		return nil, pullErr
+	}
+	_locatVtSessionIdentifier, _locatVtSessionIdentifierErr := BACnetApplicationTagParse(readBuffer)
+	if _locatVtSessionIdentifierErr != nil {
+		return nil, errors.Wrap(_locatVtSessionIdentifierErr, "Error parsing 'locatVtSessionIdentifier' field")
+	}
+	locatVtSessionIdentifier := CastBACnetApplicationTagUnsignedInteger(_locatVtSessionIdentifier)
+	if closeErr := readBuffer.CloseContext("locatVtSessionIdentifier"); closeErr != nil {
+		return nil, closeErr
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestVTOpen"); closeErr != nil {
@@ -128,6 +182,8 @@ func BACnetConfirmedServiceRequestVTOpenParse(readBuffer utils.ReadBuffer, servi
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestVTOpen{
+		VtClass:                       CastBACnetVTClassTagged(vtClass),
+		LocatVtSessionIdentifier:      CastBACnetApplicationTagUnsignedInteger(locatVtSessionIdentifier),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +198,30 @@ func (m *BACnetConfirmedServiceRequestVTOpen) Serialize(writeBuffer utils.WriteB
 			return pushErr
 		}
 
+		// Simple Field (vtClass)
+		if pushErr := writeBuffer.PushContext("vtClass"); pushErr != nil {
+			return pushErr
+		}
+		_vtClassErr := m.VtClass.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("vtClass"); popErr != nil {
+			return popErr
+		}
+		if _vtClassErr != nil {
+			return errors.Wrap(_vtClassErr, "Error serializing 'vtClass' field")
+		}
+
+		// Simple Field (locatVtSessionIdentifier)
+		if pushErr := writeBuffer.PushContext("locatVtSessionIdentifier"); pushErr != nil {
+			return pushErr
+		}
+		_locatVtSessionIdentifierErr := m.LocatVtSessionIdentifier.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("locatVtSessionIdentifier"); popErr != nil {
+			return popErr
+		}
+		if _locatVtSessionIdentifierErr != nil {
+			return errors.Wrap(_locatVtSessionIdentifierErr, "Error serializing 'locatVtSessionIdentifier' field")
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestVTOpen"); 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 170fe1c21e..ed8be7707e 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -485,9 +485,9 @@
             [simple   BACnetContextTagCharacterString('3', 'BACnetDataType.CHARACTER_STRING')               message                     ]
         ]
         ['REINITIALIZE_DEVICE' BACnetConfirmedServiceRequestReinitializeDevice
-          [simple   BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
+            [simple   BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
                                                                                                             reinitializedStateOfDevice  ]
-          [optional BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')
+            [optional BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')
                                                                                                             password                    ]
         ]
 
@@ -495,8 +495,8 @@
         //  Virtual Terminal Services
 
         ['VT_OPEN' BACnetConfirmedServiceRequestVTOpen
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [simple   BACnetVTClassTagged('0', 'TagClass.APPLICATION_TAGS')                                 vtClass                     ]
+            [simple   BACnetApplicationTagUnsignedInteger                                                   locatVtSessionIdentifier    ]
         ]
         ['VT_CLOSE' BACnetConfirmedServiceRequestVTClose
             // TODO: implement me