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:27 UTC

[plc4x] 06/07: feat(bacnet): implement BACnetConfirmedServiceRequestVTData

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

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

diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
index 8a9009dbe1..299022f835 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.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,9 @@ import (
 // BACnetConfirmedServiceRequestVTData is the data-structure of this message
 type BACnetConfirmedServiceRequestVTData struct {
 	*BACnetConfirmedServiceRequest
+	VtSessionIdentifier *BACnetApplicationTagUnsignedInteger
+	VtNewData           *BACnetApplicationTagOctetString
+	VtDataFlag          *BACnetApplicationTagUnsignedInteger
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +40,12 @@ type BACnetConfirmedServiceRequestVTData struct {
 // IBACnetConfirmedServiceRequestVTData is the corresponding interface of BACnetConfirmedServiceRequestVTData
 type IBACnetConfirmedServiceRequestVTData interface {
 	IBACnetConfirmedServiceRequest
+	// GetVtSessionIdentifier returns VtSessionIdentifier (property field)
+	GetVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger
+	// GetVtNewData returns VtNewData (property field)
+	GetVtNewData() *BACnetApplicationTagOctetString
+	// GetVtDataFlag returns VtDataFlag (property field)
+	GetVtDataFlag() *BACnetApplicationTagUnsignedInteger
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +75,34 @@ func (m *BACnetConfirmedServiceRequestVTData) GetParent() *BACnetConfirmedServic
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtSessionIdentifier() *BACnetApplicationTagUnsignedInteger {
+	return m.VtSessionIdentifier
+}
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtNewData() *BACnetApplicationTagOctetString {
+	return m.VtNewData
+}
+
+func (m *BACnetConfirmedServiceRequestVTData) GetVtDataFlag() *BACnetApplicationTagUnsignedInteger {
+	return m.VtDataFlag
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestVTData factory function for BACnetConfirmedServiceRequestVTData
-func NewBACnetConfirmedServiceRequestVTData(serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTData {
+func NewBACnetConfirmedServiceRequestVTData(vtSessionIdentifier *BACnetApplicationTagUnsignedInteger, vtNewData *BACnetApplicationTagOctetString, vtDataFlag *BACnetApplicationTagUnsignedInteger, serviceRequestLength uint16) *BACnetConfirmedServiceRequestVTData {
 	_result := &BACnetConfirmedServiceRequestVTData{
+		VtSessionIdentifier:           vtSessionIdentifier,
+		VtNewData:                     vtNewData,
+		VtDataFlag:                    vtDataFlag,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +136,15 @@ func (m *BACnetConfirmedServiceRequestVTData) GetLengthInBits() uint16 {
 func (m *BACnetConfirmedServiceRequestVTData) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Simple field (vtSessionIdentifier)
+	lengthInBits += m.VtSessionIdentifier.GetLengthInBits()
+
+	// Simple field (vtNewData)
+	lengthInBits += m.VtNewData.GetLengthInBits()
+
+	// Simple field (vtDataFlag)
+	lengthInBits += m.VtDataFlag.GetLengthInBits()
+
 	return lengthInBits
 }
 
@@ -117,9 +161,43 @@ func BACnetConfirmedServiceRequestVTDataParse(readBuffer utils.ReadBuffer, servi
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Simple Field (vtSessionIdentifier)
+	if pullErr := readBuffer.PullContext("vtSessionIdentifier"); pullErr != nil {
+		return nil, pullErr
+	}
+	_vtSessionIdentifier, _vtSessionIdentifierErr := BACnetApplicationTagParse(readBuffer)
+	if _vtSessionIdentifierErr != nil {
+		return nil, errors.Wrap(_vtSessionIdentifierErr, "Error parsing 'vtSessionIdentifier' field")
+	}
+	vtSessionIdentifier := CastBACnetApplicationTagUnsignedInteger(_vtSessionIdentifier)
+	if closeErr := readBuffer.CloseContext("vtSessionIdentifier"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (vtNewData)
+	if pullErr := readBuffer.PullContext("vtNewData"); pullErr != nil {
+		return nil, pullErr
+	}
+	_vtNewData, _vtNewDataErr := BACnetApplicationTagParse(readBuffer)
+	if _vtNewDataErr != nil {
+		return nil, errors.Wrap(_vtNewDataErr, "Error parsing 'vtNewData' field")
+	}
+	vtNewData := CastBACnetApplicationTagOctetString(_vtNewData)
+	if closeErr := readBuffer.CloseContext("vtNewData"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (vtDataFlag)
+	if pullErr := readBuffer.PullContext("vtDataFlag"); pullErr != nil {
+		return nil, pullErr
+	}
+	_vtDataFlag, _vtDataFlagErr := BACnetApplicationTagParse(readBuffer)
+	if _vtDataFlagErr != nil {
+		return nil, errors.Wrap(_vtDataFlagErr, "Error parsing 'vtDataFlag' field")
+	}
+	vtDataFlag := CastBACnetApplicationTagUnsignedInteger(_vtDataFlag)
+	if closeErr := readBuffer.CloseContext("vtDataFlag"); closeErr != nil {
+		return nil, closeErr
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestVTData"); closeErr != nil {
@@ -128,6 +206,9 @@ func BACnetConfirmedServiceRequestVTDataParse(readBuffer utils.ReadBuffer, servi
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestVTData{
+		VtSessionIdentifier:           CastBACnetApplicationTagUnsignedInteger(vtSessionIdentifier),
+		VtNewData:                     CastBACnetApplicationTagOctetString(vtNewData),
+		VtDataFlag:                    CastBACnetApplicationTagUnsignedInteger(vtDataFlag),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +223,42 @@ func (m *BACnetConfirmedServiceRequestVTData) Serialize(writeBuffer utils.WriteB
 			return pushErr
 		}
 
+		// Simple Field (vtSessionIdentifier)
+		if pushErr := writeBuffer.PushContext("vtSessionIdentifier"); pushErr != nil {
+			return pushErr
+		}
+		_vtSessionIdentifierErr := m.VtSessionIdentifier.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("vtSessionIdentifier"); popErr != nil {
+			return popErr
+		}
+		if _vtSessionIdentifierErr != nil {
+			return errors.Wrap(_vtSessionIdentifierErr, "Error serializing 'vtSessionIdentifier' field")
+		}
+
+		// Simple Field (vtNewData)
+		if pushErr := writeBuffer.PushContext("vtNewData"); pushErr != nil {
+			return pushErr
+		}
+		_vtNewDataErr := m.VtNewData.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("vtNewData"); popErr != nil {
+			return popErr
+		}
+		if _vtNewDataErr != nil {
+			return errors.Wrap(_vtNewDataErr, "Error serializing 'vtNewData' field")
+		}
+
+		// Simple Field (vtDataFlag)
+		if pushErr := writeBuffer.PushContext("vtDataFlag"); pushErr != nil {
+			return pushErr
+		}
+		_vtDataFlagErr := m.VtDataFlag.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("vtDataFlag"); popErr != nil {
+			return popErr
+		}
+		if _vtDataFlagErr != nil {
+			return errors.Wrap(_vtDataFlagErr, "Error serializing 'vtDataFlag' field")
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestVTData"); 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 08565249df..6654a86daf 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -197,7 +197,6 @@
             [optional BACnetConfirmedServiceRequest('apduLength - (4 + (segmentedMessage ? 2 : 0))')
                                 serviceRequest       '!segmentedMessage' ]
             [validation '(!segmentedMessage && serviceRequest != null) || segmentedMessage' "service request should be set" ]
-            // TODO: maybe we should put this in the discriminated types below
             [optional uint 8    segmentServiceChoice
                                     'segmentedMessage && sequenceNumber != 0']
             [array    byte      segment
@@ -224,7 +223,6 @@
             [optional BACnetServiceAck('apduLength - (3 + (segmentedMessage ? 2 : 0))')
                                 serviceAck         '!segmentedMessage'  ]
             [validation '(!segmentedMessage && serviceAck != null) || segmentedMessage' "service ack should be set" ]
-            // TODO: maybe we should put this in the discriminated types below
             [optional uint 8    segmentServiceChoice 'segmentedMessage && sequenceNumber != 0']
             [array    byte      segment
                                     length
@@ -503,8 +501,9 @@
                                                                length '(serviceRequestLength>0)?(serviceRequestLength - 1):0'           ]
         ]
         ['VT_DATA' BACnetConfirmedServiceRequestVTData
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [simple   BACnetApplicationTagUnsignedInteger                                                   vtSessionIdentifier         ]
+            [simple   BACnetApplicationTagOctetString                                                       vtNewData                   ]
+            [simple   BACnetApplicationTagUnsignedInteger                                                   vtDataFlag                  ]
         ]
         //
         ////